CentOS7 中 Squid 透明代理和正向代理的配置
主要目的是实现在局域网环境中通过设置网关(Squid)之后,就可以正常访问网络。
CentOS7 配置两张网卡,IP 分别为:
eno16777984: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.100.131 netmask 255.255.255.0 broadcast 192.168.100.255 eno33557248: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.200.1 netmask 255.255.255.0 broadcast 192.168.200.255 inet6 fe80::20c:29ff:feab:e118 prefixlen 64 scopeid 0x20<link>
局域网中的客户端 IP 配置是:
IP: 192.168.200.100
网关: 192.168.200.1
首先在 CentOS 中安装 Squid 。
yum install squid
然后修改 squid 的配置文件,主要修改的内容如下:
acl localnet src 192.168.200.0/24 http_access allow localnet # 启用透明代理 http_port 192.168.200.1:3128 transparent # 经测试,使用 intercept 也可以,如: #http_port 192.168.200.1:3128 intercept # 启用正向代理 http_port 192.168.200.1:3129
然后再检查配置文件和初始化:
squid -k parse squid -zX
将 squid 加入到启动项中:
chkconfig squid on
再启动它:
service squid start
切记,修改了 squid 的配置之后,最好是 reload 一下。
service squid reload
特地验证了一下,开启路由转发这步好象不用也可以。
然后再启用系统内置路由转发。在这里需要注意,如果是 CentOS6 ,可以直接在 /etc/sysctl.conf 中添加:
net.ipv4.ip_forward = 1
然后再
reboot
或
sysctl -p
就可以了。
但在 CentOS7 中,则需要在 /usr/lib/sysctl.d/50-default.conf 中添加这一行:
net.ipv4.ip_forward = 1
然后使之生效就可以了。
最后是防火墙的配置。CentOS7 使用的是 firewall-cmd 做防火墙,跟之前的有些不同,如下:
# 定义两个区域,内部区域和外部区域 firewall-cmd --zone=internal --add-interface=eno33557248 --permanent firewall-cmd --zone=external --add-interface=eno16777984 --permanent firewall-cmd --zone=internal --add-forward-port=port=80:proto=tcp:toport=3128:toaddr=192.168.200.1 --permanent firewall-cmd --zone=internal --add-forward-port=port=80:proto=tcp:toport=3129:toaddr=192.168.200.1 --permanent firewall-cmd --zone=internal --add-port=3128/tcp --permanent firewall-cmd --zone=internal --add-port=3129/tcp --permanent firewall-cmd --reload firewall-cmd --zone=internal --list-all
OK,再去到局域网中的机器中进行测试,将机器的网关设置为 192.168.200.1 ,然后再测试,可以正常打开网站。然后在 ie 中设置代理为 192.168.200.1:3129 ,也正常。
好了,到此为止。