环境如下:

操作系统:CentOS 6.4

eth0:192.168.100.1 (LAN口)

eth2:200.168.10.1 (WAN口)


一.iptables的配置

1.啟動ip_forward(IP轉發)

修改/etc/sysctl.conf

將net.ipv4.ip_forward = 1

并運行sysctl -p,使之生效

[root@nagios~]#vim/etc/sysctl.conf


[root@nagios~]#sysctl-pnet.ipv4.ip_forward=1net.ipv4.conf.default.rp_filter=1net.ipv4.conf.default.accept_source_route=0kernel.sysrq=0kernel.core_uses_pid=1net.ipv4.tcp_syncookies=1kernel.msgmnb=65536kernel.msgmax=65536kernel.shmmax=68719476736kernel.shmall=4294967296



2.清空iptables所有表的規則并查看nat表

[root@nagios~]#iptables-F[root@nagios~]#iptables-tnat-F[root@nagios~]#iptables-tmangle-F[root@nagios~]#iptables-tnat-LChainPREROUTING(policyACCEPT)targetprotoptsourcedestinationChainPOSTROUTING(policyACCEPT)targetprotoptsourcedestinationChainOUTPUT(policyACCEPT)targetprotoptsourcedestination



3.设置端口重定向

[root@nagios~]#iptables-tnat-APREROUTING-ptcp--dport80-jREDIRECT--to-port3128


#在NAT表的PREROUTING鏈加目標動作REDIRECT,將入站的數據包進行重定向,將80端口重定向到3128端口

4.设置iptables路由DNS数据

[root@nagios~]#iptables-tnat-APOSTROUTING-s192.168.10.0/24-pudp--dport53-d202.96.128.86-jSNAT--to-source200.168.10.1[root@nagios~]#iptables-tnat-APOSTROUTING-s192.168.10.0/24-ptcp--dport53-d202.96.128.86-jSNAT--to-source200.168.10.1


說明:可以看出上面DNS是通過服務器的NAT功能來實現,202.96.128.86是外部DNS服務器地址,而200.168.10.1是我們WAN口的IP。如果外部DNS服務器經常變更的話,可以直接將DNS忽略掉:

iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -p tcp --dport 53 -j SNAT --to-source 200.168.10.1

iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -p udp --dport 53 -j SNAT --to-source 200.168.10.1

5.保存iptables设置及重启iptables服务

[root@Nagios~]#serviceiptablessave[root@Nagios~]#serviceiptablesrestartiptables:Savingfirewallrulesto/etc/sysconfig/iptables:[OK][root@Nagios~]#iptables-tnat-LChainPREROUTING(policyACCEPT)targetprotoptsourcedestinationREDIRECTtcp--192.168.10.0/24anywheretcpdpt:httpredirports3128ChainPOSTROUTING(policyACCEPT)targetprotoptsourcedestinationSNATudp--192.168.10.0/24202.96.128.86udpdpt:domainto:200.168.10.1SNATtcp--192.168.10.0/24202.96.128.86tcpdpt:domainto:200.168.10.1ChainOUTPUT(policyACCEPT)targetprotoptsourcedestination



二.Squid的安装与配置

我們使用yum來安裝Squid:

[root@nagios~]#yum-yinstallsquid


備份squid的配置文件,防止因為配置錯誤

[root@nagios~]#cp/etc/squid/squid.conf/etc/squid/squid.conf_bak


配置squid.conf

找到

http_port 3128修改成http_port 192.168.100.10:3128 transparent

并添加

visible_hostnamesquidaclinnetsrc192.168.10.0/24http_accessallowinnethttp_accessdenyall



下面就運行squid -z進行初始化

[root@nagios~]#squid-z2013/05/2913:41:43|CreatingSwapDirectories


啟動squid代理服務器

[root@nagios~]#servicesquidstart


重新啟動iptables服務

[root@nagios~]#serviceiptablesrestart


并將squid及iptables設置成開機啟動

[root@nagios~]#chkconfig--level35squidon[root@nagios~]#chkconfig--level35iptableson




客户端网络设置: DNS设置为转发的DNS IP


其他设置:

隐藏错误页面Squid版本

httpd_suppress_version_stringon


不记录访问日志

cache_store_lognonecache_access_log/dev/nullcache_log/dev/null


隐藏Header头部信息(3.0以后版本)

request_header_accessViadenyallrequest_header_accessServerdenyallrequest_header_accessX-Cachedenyallrequest_header_accessX-Cache-Lookupdenyall


如果是2.8之前的版本

header_accessViadenyallheader_accessServerdenyallheader_accessX-Cachedenyallheader_accessX-Cache-Lookupdenyall