環境如下:
作業系統:CentOS 6.4
eth0:192.168.100.1 (LAN口)
eth1:200.168.10.1 (WAN口)
一.iptables的配置
1.啟動ip_forward(IP轉發)
修改/etc/sysctl.conf
將net.ipv4.ip_forward = 1
并運行sysctl -p,使之生效
1
<code>[root@nagios~]</code><code># vim /etc/sysctl.conf</code>
2
3
4
5
6
7
8
9
10
11
<code>[root@nagios ~]</code><code># sysctl -p</code>
<code>net.ipv4.ip_forward = 1</code>
<code>net.ipv4.conf.default.rp_filter = 1</code>
<code>net.ipv4.conf.default.accept_source_route = 0</code>
<code>kernel.sysrq = 0</code>
<code>kernel.core_uses_pid = 1</code>
<code>net.ipv4.tcp_syncookies = 1</code>
<code>kernel.msgmnb = 65536</code>
<code>kernel.msgmax = 65536</code>
<code>kernel.shmmax = 68719476736</code>
<code>kernel.shmall = 4294967296</code>
2.清空iptables所有表的規則并檢視nat表
<code>[root@nagios ~]</code><code># iptables -F</code>
<code>[root@nagios ~]</code><code># iptables -t nat -F</code>
<code>[root@nagios ~]</code><code># iptables -t mangle -F</code>
<code>[root@nagios ~]</code><code># iptables -t nat -L</code>
<code>Chain PREROUTING (policy ACCEPT)</code>
<code>target prot opt </code><code>source</code> <code>destination</code>
<code>Chain POSTROUTING (policy ACCEPT)</code>
<code>Chain OUTPUT (policy ACCEPT)</code>
3.設定端口重定向
<code>[root@nagios ~]</code><code># iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3128</code>
#在NAT表的PREROUTING鏈加目標動作REDIRECT,將入站的數據包進行重定向,將80端口重定向到3128端口
4.設定iptables路由DNS資料
<code>[root@nagios~]</code><code>#iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -p udp --dport 53 -d 202.96.128.86 -j SNAT --to-source 200.168.10.1</code>
<code>[root@nagios~]</code><code>#iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -p tcp --dport 53 -d 202.96.128.86 -j SNAT --to-source 200.168.10.1</code>
說明:可以看出上面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服務
12
13
<code>[root@Nagios ~]</code><code># service iptables save</code>
<code>[root@Nagios ~]</code><code># service iptables restart</code>
<code>iptables: Saving firewall rules to </code><code>/etc/sysconfig/iptables</code><code>:[ OK ]</code>
<code>[root@Nagios ~]</code><code># iptables -t nat -L</code>
<code>REDIRECT tcp -- 192.168.10.0</code><code>/24</code> <code>anywhere tcp dpt:http redir ports 3128</code>
<code>SNAT udp -- 192.168.10.0</code><code>/24</code> <code>202.96.128.86 udp dpt:domain to:200.168.10.1</code>
<code>SNAT tcp -- 192.168.10.0</code><code>/24</code> <code>202.96.128.86 tcp dpt:domain to:200.168.10.1</code>
二.Squid的安裝與配置
我們使用yum來安裝Squid:
<code>[root@nagios ~]</code><code># yum -y install squid</code>
備份squid的配置檔案,防止因為配置錯誤
<code>[root@nagios ~]</code><code># cp /etc/squid/squid.conf /etc/squid/squid.conf_bak</code>
配置squid.conf
找到
http_port 3128修改成http_port 192.168.100.10:3128 transparent
并添加
<code>visible_hostname squid</code>
<code>acl innet src 192.168.10.0</code><code>/24</code>
<code>http_access allow innet</code>
<code>http_access deny all</code>
下面就運行squid -z進行初始化
<code>[root@nagios ~]</code><code># squid -z</code>
<code>2013</code><code>/05/29</code> <code>13:41:43| Creating Swap Directories</code>
啟動squid代理服務器
<code>[root@nagios ~]</code><code># service squid start</code>
重新啟動iptables服務
<code>[root@nagios ~]</code><code># service iptables restart</code>
并將squid及iptables設置成開機啟動
<code>[root@nagios ~]</code><code># chkconfig --level 35 squid on</code>
<code>[root@nagios ~]</code><code># chkconfig --level 35 iptables on</code>
用戶端網絡設定: DNS設定為轉發的DNS IP
<a href="http://blog.51cto.com/attachment/201307/160552441.png" target="_blank"></a>
其他設定:
隐藏錯誤頁面Squid版本
<code>httpd_suppress_version_string on</code>
不記錄通路日志
<code>cache_store_log none</code>
<code>cache_access_log </code><code>/dev/null</code>
<code>cache_log </code><code>/dev/null</code>
隐藏Header頭部資訊(3.0以後版本)
<code>request_header_access Via deny all</code>
<code>request_header_access Server deny all</code>
<code>request_header_access X-Cache deny all</code>
<code>request_header_access X-Cache-Lookup deny all</code>
如果是2.8之前的版本
<code>header_access Via deny all</code>
<code>header_access Server deny all</code>
<code>header_access X-Cache deny all</code>
<code>header_access X-Cache-Lookup deny all</code>
本文轉自 rong341233 51CTO部落格,原文連結:http://blog.51cto.com/fengwan/1253332