天天看點

Squid透明代理安裝與設定

環境如下:

作業系統: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

繼續閱讀