一、基本配置
Squid代理服务器配置两个网卡
WAN:eth0:10.10.10.200 需要配置网关、DNS,允许上网
LAN:eth1:172.168.1.254 不用配置网关、DNS
Clinet:172.16.1.2/24 需要配置网关、DNS
squid(代理) 端口:3128
系 统 |
主机名 |
服务器IP |
客户端IP |
RedHat 5.4 |
proxy |
Eth0:10.10.10.200 |
172.16.1.0 |
Eth1:172.16.1.254 |
需求:
1. 禁止单IP上网
2. 禁止网段10-50上网
3. 禁止所有网段访问IP:172.16.1.200(MySQL)
4. 禁止访问:www.youku.com网站
5. 禁止访问包含关键字163网址
6. 禁止下载*.mp3$ *.exe$ *.zip$ *.rar$ 类型的文件
7. 禁止网段10-50客户端在周一到周五的09:00-18:00上班时间上网
8. 禁止端口号上网
9. 限制用户并发连接数为:5
1、配置IP
WAN配置:
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="static"
IPADDR=10.10.10.200
NETWASK=255.255.255.0
GATEWAY=10.10.10.1
:wq 保存
LAN配置:
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE="eth1"
BOOTPROTO="static"
IPADDR=172.16.1.254
NETWASK=255.255.255.0
:wq 保存
[root@localhost ~]# service network restart
2、配置DNS文件
[root@localhost ~]# vim /etc/resolv.conf
nameserver 202.96.134.133
nameserver 202.96.128.166
:wq 保存
3、配置主机名:proxy
[root@localhost ~]# vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=proxy
:wq 保存
[root@localhost ~]# hostname proxy
断开终端,再次连接,这样就需要重新启动系统:ctrl+d
[root@proxy ~]# hostname
proxy
4、SELinux关闭
SELinux关闭
永久方法 – 需要重启服务器
修改/etc/selinux/config文件中设置SELINUX=disabled ,然后重启服务器。
临时方法 – 设置系统参数
使用命令setenforce 0
5、查看路由表、测试是否能上网
[root@proxy ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
172.16.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
10.10.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1
0.0.0.0 10.10.10.1 0.0.0.0 UG 0 0 0 eth0
[root@proxy ~]# ping www.baidu.com
PING www.a.shifen.com (220.181.111.148) 56(84) bytes of data.
64 bytes from 220.181.111.148: icmp_seq=1 ttl=53 time=42.0 ms
64 bytes from 220.181.111.148: icmp_seq=2 ttl=53 time=39.6 ms
二、安装squid
[root@proxy ~]# yum install squid -y
[root@proxy ~]# rpm -ql squid |less #查看安装路径
/etc/rc.d/init.d/squid
[root@proxy ~]# grep -v "^#" /etc/squid/squid.conf |grep -v "^$" #查看squid配置文件需要修改重要部分
[root@proxy ~]# ll /var/spool/squid/
total 0
[root@proxy ~]# cp /etc/squid/squid.conf /etc/squid/squid.confbak #备份
1、编辑squid配置文件
[root@proxy ~]# vim /etc/squid/squid.conf
在http_access deny all上面一行插入http_access allow all
637 http_access allow all #设置允许所有客户端访问
638 http_access deny all
2995 # TAG: visible_hostname
修改为
2995 visible_hostname 172.16.1.254 #设置squid可见主机名
:wq
[root@proxy ~]# service squid start #启动
init_cache_dir /var/spool/squid... Starting squid: . [ OK ]
[root@proxy ~]# chkconfig squid on #设置开机启动
[root@proxy ~]# ll /var/spool/squid/
[root@proxy ~]# netstat -anp |grep :3128 #查看squid端口号
tcp 0 0 0.0.0.0:3128 0.0.0.0:* LISTEN 5967/(squid)
2、客户端配置网关和DNS
3、开启路由转发功能
[root@proxy ~]# vim /etc/sysctl.conf
7 net.ipv4.ip_forward = 0 #0为关闭
修改为
7 net.ipv4.ip_forward = 1 #1为开启路由
:wq 保存
[root@localhost ~]# sysctl -p #命令查看
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 4294967295
kernel.shmall = 268435456
4、配置Iptables防火墙
[root@proxy ~]# setup #进入图形界面,打开防火墙为:Enabled
[root@proxy ~]# service iptables start #开启
[root@proxy ~]# chkconfig iptables on #开机启动
[root@proxy ~]# iptables -L #列出规则
[root@proxy ~]# iptables -F #清空规则
[root@proxy ~]# iptables -t nat -L #用详细方式列出 nat 表所有链的所有规则
[root@proxy ~]# iptables -t filter -L #用详细方式列出 filter 表所有链的所有规则
编辑iptables配置文件,开启防火墙3128端口(后面配置squid的端口号3128)
[root@proxy ~]# vim /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3128 -j ACCEPT
[root@proxy ~]# service iptables restart #重启
开启外网eth0,DNS的NAT网络地址转换功能
[root@proxy ~]# iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -p udp --dport 53 -o eth0 -j MASQUERADE
[root@proxy ~]# iptables -t nat –Lvn #用详细方式列出 nat 表所有链的所有规则,只显示IP地址和端口号
设置端口转发功能,把内网eth1的80端口转发到外网eth0的3128端口
[root@proxy ~]# iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-ports 3128
[root@proxy ~]# iptables -t nat -Lvn
Chain PREROUTING (policy ACCEPT 104 packets, 12110 bytes)
pkts bytes target prot opt in out source destination
2 96 REDIRECT tcp -- eth1 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 redir ports 3128
Chain POSTROUTING (policy ACCEPT 10 packets, 752 bytes)
pkts bytes target prot opt in out source destination
5 307 MASQUERADE udp -- * eth0 172.16.1.0/24 0.0.0.0/0 udp dpt:53
Chain OUTPUT (policy ACCEPT 1 packets, 284 bytes)
pkts bytes target prot opt in out source destination
[root@proxy ~]# service iptables save #保存规则
Saving firewall rules to /etc/sysconfig/iptables: [ OK ]
5、客户端IE浏览访问:http://www.baidu.com
6、编辑squid配置文件
[root@proxy ~]# vim /etc/squid/squid.conf
924 http_port 3128
修改为
924 http_port 3128 transparent #监听3128端口接收到的http请求
1576 # cache_mem 8 MB
修改为
1576 cache_mem 256 MB #高速缓存
1783 # cache_dir ufs /var/spool/squid 100 16 256
修改为
1783 cache_dir ufs /var/spool/squid 10240 16 256 #设置硬盘缓存大小为10G,目录为/var/spool/squid,一级子目录16个,二级子目录256个
1945 access_log /var/log/squid/access.log squid #设置访问日志
1961 cache_log /var/log/squid/cache.log #设置缓存日志
1971 cache_store_log /var/log/squid/store.log #设置网页缓存日志
2941 # cache_mgr root
修改为
2941 cache_mgr [email protected] #设置管理员邮箱地址
:wq 保存
[root@proxy ~]# service squid restart
Stopping squid: [ OK ]
Starting squid: . [ OK ]
7、测试正常上网:
8、查看日志:
[root@proxy ~]# tail -f /var/log/squid/access.log
9、手动添加访问控制策略(注意:策略要合理的配置应用,避免冲突)
[root@proxy ~]# vim /etc/squid/squid.conf
配置策略在590行开始
在下面添加以下策略内容:
#####################禁止单IP上网###############################
acl badip src 172.16.1.2/32
http_access deny badip
#####################禁止网段10-50上网##########################
acl badip src 172.16.1.10-172.16.1.50/32
http_access deny badip
#####################禁止所有网段访问IP:172.16.1.200(MySQL)#######
acl MySQL dst 172.16.2.100
http_access deny MySQL
#####################禁止访问:www.youku.com网站################
acl web dstdomain -i www.baidu.com
http_access deny web
#####################禁止访问包含关键字163网址##################
acl web163 url_regex -i 163
http_access deny web163
###########禁止下载*.mp3$ *.exe$ *.zip$ *.rar$ *.doc$类型的文件########
acl webxiazai urlpath_regex -i \.mp3$ \.exe$ \.zip$ \.rar$ \.doc$
http_access deny webxiazai
#####禁止网段10-50客户端在周一到周五的09:00-18:00上班时间上网######
acl badip src 172.16.1.10-172.16.1.50/32
acl worktime time MTWHF 09:00-18:00
http_access deny badip worktime
########################限制443端口上网 ############################
acl http port 443
http_access deny http
########################限制用户并发连接数为:5 ######################
acl client15 src 172.16.1.15
acl conn5 maxconn 5
http_access deny client15 conn5
:wq
[root@proxy ~]# service squid restart #重启
Stopping squid: [ OK ]
Starting squid: . [ OK ]
配置完成!现在内部网段172.16.1.0/24内客户机可以通过代理服务器172.16.1.254访问外网。