centos7 Squid代理服务器安装配置,包含ACL配置--内网环境代理上网配置
网络环境配置:
本次安装系统为centos7,采用外网和内网双网卡,外网网卡dhcp获取ip,内网网卡为固定IP,修改配置文件/etc/sysconfig/network-scripts/ifcfg-ens224(内网网卡名)为静态ip地址,默认路由走外网网卡( 即外网网卡配置网关(DHCP获取),内网网卡不配置网关)。双网卡,需要手工配置内网网段的路由,否则内网和这台代理服务器之间网络不通。
可将增加路由的命令写到/etc/rc.local,开机自动执行。以内网网卡ens224网关为10.100.1.1为例 :
[root@localhost ~]# grep -vE "^#|^$" /etc/rc.local
touch /var/lock/subsys/local
/usr/sbin/ip route add 10.100.X.0/24 via 10.100.1.1 dev ens224
/usr/sbin/ip route add 10.100.XX.0/24 via 10.100.1.1 dev ens224
外网网卡:
[root@localhost network-scripts]# cat ifcfg-ens192
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens192
UUID=8baba929-1c40-4282-a975-cda67fe443f7
DEVICE=ens192
ONBOOT=yes
[root@localhost network-scripts]#
内网网卡
[root@localhost network-scripts]# cat ifcfg-ens224
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens224
UUID=b8b4edf8-c1a5-4ca3-b67c-1fafd97ec11a
DEVICE=ens224
ONBOOT=yes
IPADDR=10.100.1.1
NETMASK=255.255.255.0
[root@localhost network-scripts]#
以上配置内容大部分为默认配置,只需按实际情况,修改BOOTPROTO,ONBOOT(开机是否自动启动网卡) IPADDR,NETMASK。
BOOTPROTO=static
ONBOOT=yes
IPADDR=10.100.1.1
NETMASK=255.255.255.0
本文以root用户操作,如果使用的非root,请使用sudo。
1.下载squid安装包:
wget http://www.squid-cache.org/Versions/v3/3.4/squid-3.4.14.tar.gz
2.解压并编译安装squid
tar xf squid-3.4.14.tar.gz -C /usr/src/
cd /usr/src/squid-3.4.14/
./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-gnuregex
make && 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/
3.安装完成后配置squid基本配置
vim /etc/squid.conf
http_port 8088 #配置代理服务器端口号
reply_body_max_size 10 MB #限制下载文件大小
完整配置:
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl localnet src fc00::/7 # RFC 4193 local private network range
acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
acl AdminIP src "/etc/squid/acl/AdminIP.list"
acl UserIP src "/etc/squid/acl/UserIP.list"
acl UserWeb dstdomain "/etc/squid/acl/UserWeb.list"
acl BadUrl dstdomain "etc/squid/acl/BadUrl.list"
http_access allow AdminIP all
http_access deny UserIP BadUrl
http_access allow UserIP UserWeb
http_access deny !Safe_ports
http_access deny all
http_port 8088 #配置代理服务器端口号
reply_body_max_size 10 MB #限制下载文件大小
coredump_dir /var/spool/squid
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320
配置防火墙允许策略
iptables -I INPUT -p tcp --dport 8088 -j ACCEPT service iptables save
查看squid端口状态
netstat -anpt | grep squid
4.客户端连接配置
IE浏览器:工具-->Internet选项-->局域网(LAN)设置-->配置代理服务器IP和端口号 填写内网IP和端口号8088
5.Squid acl权限配置说明
权限控制:按用户IP控制可以访问的网址, 将IP列表和网址URL列表分别配置在独立的文件中,文件名随便取,方便随时修改。
用户IP分为两类,admin管理员,普通用户USER
定义IP :文件AdminIP.list
[root@localhost acl]# cat AdminIP.list
10.100.x.x/32
定义IP: 文件:UserIP.list
[root@localhost acl]# cat UserIP.list
10.100.x.0/24
10.100.x.0/24
定义允许代理的URL 文件:UserWeb.list
.google.cn 以“." 开的匹配url后缀是 google.cn的所有网站,以”."开始,而不是“*”,写成*.google.cn是错误的。
以“.(点)”开始即可,不要写“ *(星号) ”
[root@localhost acl]# cat UserWeb.list
netty.io
.codeaurora.org
source.codeaurora.org
seccdn.libravatar.org
.google.cn
.googleapis.com
.google.com.hk
.google.com
.gstatic.com
.google-analytics.com
.googleusercontent.com
.gstatic.com
.admob.com
禁止同一域名下特定前缀的URL文件
[root@localhost acl]# cat BadUrl.list
play.google.com
www.google.com.hk
www.google.com
设置IP禁止或允许访问的URL
允许指定IP访问指定URL: all表示任何网址. 注意先后顺序,匹配规则的顺序是从上往下,
deny某一域名后缀的特定URL的规则必须放在允许该域名的规则的前面.
比如禁止www.google.com ,但允许其它以google.com结尾的url
白名单机制,最后一条应该是deny all , 黑名单机制最后一条就是allow all
http_access allow AdminIP all
http_access deny UserIP BadUrl
http_access allow UserIP UserWeb
http_access deny !Safe_ports
http_access deny all
6, 需要添加允许访问规则的方法:
1.新增或编辑IP文件,URL文件,通过以下配置指定IP允许访问的URL.
在squid.conf适当的位置(考虑规则先后顺序)增加条目,关联IP与URL
http_access allow IP [或acl文件名] URL [或URLG文件名]
2.重启squid服务
service squid restart
或
systemctl restart squid