本文共 4032 字,大约阅读时间需要 13 分钟。
当客户机通过代理来请求Web页面时,指定的代理服务器会先检查自己的缓存,如果缓存中已经有客户机需要访问的页面,则直接将缓存中的页面内容反馈给客户机;如果缓存中没有客户机需要访问的页面,则由代理服务器向Internet发送访问请求,当获得返回的Web页面以后,将网页数据保存到缓存中并发送给客户机,如图所示。
根据实现的方式不同,代理服务可分为传统代理和透明代理两种常见的代理服务。
在实际应用中,传统代理多见于Internet环境,如为QQ程序使用代理可以隐藏本机真实IP地址,为下载工具使用多个代理可以规避服务器的并发连接限制。而透明代理多见于局域网环境,如在Linux网关中启用透明代理后,局域网主机无需进行额外的设置就可以享受更好的上网速度。
tar zxvf squid-3.4.6.tar.gz -C /opt/
yum install gcc gcc-c++ make -ycd /opt/squid-3.4.6./configure --prefix=/usr/local/squid \--sysconfdir=/etc \--enable-arp-acl \--enable-linux-netfilter \--enable-linux-tproxy \--enable-async-io=100 \--enable-err-language="Simplify_Chinese" \--enable-underscore \--enable-poll \--enable-gnuregexmake && make install
ln -s /usr/local/squid/sbin/* /usr/local/sbin/ //创建软连接useradd -M -s /sbin/nologin squid //创建管理用户chown -R squid.squid /usr/local/squid/var/vim /etc/squid.conf ......http_access allow allhttp_access deny all......cache_effective_user squid #添加 指定程序用户cache_effective_group squid #添加 指定账号基本组
squid -z //初始化缓存目录
cd /etc/init.d/vim squid
#!/bin/bash#chkconfig: 2345 90 25PID="/usr/local/squid/var/run/squid.pid"CONF="/etc/squid.conf"CMD="/usr/local/squid/sbin/squid"case "$1" in start) netstat -natp | grep squid &> /dev/null if [ $? -eq 0 ] then echo "squid is running" else echo "正在启动 squid..." $CMD fi ;; stop) $CMD -k kill &> /dev/null rm -rf $PID &> /dev/null ;; status) [ -f $PID ] &> /dev/null if [ $? -eq 0 ] then netstat -natp | grep squid else echo "squid is not running" fi ;; restart) $0 stop &> /dev/null echo "正在关闭 squid..." $0 start &> /dev/null echo "正在启动 squid..." ;; reload) $CMD -k reconfigure ;; check) $CMD -k parse ;; *) echo "用法:$0{start|stop|status|reload|check|restart}" ;;esac
chmod +x squid //给脚本加权限chkconfig --add squid //添加为系统服务chkconfig --level 35 squid on //开机自启动
service squid start
yum install -y httpd systemctl stop firewalld.servicesetenforce 0systemctl start httpd
vim /etc/squid.conf
......http_access allow allhttp_access deny all......http_port 3128cache_mem 64 MB //指定缓存功能所使用的内存空间大小,便于保持访问较频繁的WEB对象,容量最好为4的倍数,单位为MB,建议设为物理内存的1/4reply_body_max_size 10 MB //允许用户下载的最大文件大小,以字节为单位。默认设置0表示不进行限制maximum_object_size 4096 KB //允许保存到缓存空间的最大对象大小,以KB为单位,超过大小限制的文件将不被缓存,而是直接转发给用户
iptables -Fsetenforce 0iptables -I INPUT -p tcp --dport 3218 -j ACCEPT
service squid restart
客户端先不设置代理直接访问web服务器,查看web服务器的日志文件可知,是客户端的IP地址进行访问的
cd /etc/httpd/logs //日志存放位置vim access_log客户端设置代理浏览器中Internet选项---》连接----》局域网设置----ip:squid服务器地址 端口:3128再进行访问之后查看web服务器日志文件可知是由代理服务器访问的web服务器
echo "1" > /proc/sys/net/ipv4/ip_forward //开启路由转发iptables -Fiptables -t nat -Fsetenforce 0
vim /etc/squid.conf......http_port 192.168.100.1:3128 transparent //只在其中一个IP地址上提供服务
service squid restart
iptables -t nat -I PREROUTING -i ens33 -s 192.168.10.0/24 -p tcp --dport 80 -j REDIRECT --to 3128iptables -t nat -I PREROUTING -i ens33 -s 192.168.10.0/24 -p tcp --dport 443 -j REDIRECT --to 3128iptables -I INPUT -p tcp --dport 3218 -j ACCEPT //若做了传统代理刷完这句话,则不用再刷,若直接做的透明代理,则要刷这句话
浏览器取消之前设置的Internet选项,清理缓存,访问web服务器
查看web服务器日志,可看到是由代理服务器的外网口网关IP进行的访问转载于:https://blog.51cto.com/13641879/2149518