Linux下目前使用最多的HTTP代理當屬Squid了,這邊有個需要修改http-header的需要,前提是要做http的透明代理,squid實現透明代理很容易,但修改http-header沒找到方法。
Privoxy在修改http-header方面很善長,但透明代理如何實現網上好像還沒有成熟的方法。比起修改http-header,透明代理應該實現起來更簡單一些,於是研究了一下,下面詳細說一說。
一、環境說明:
1.系統:
CentOS 6.5 32位(64位在裝privoxy的時候經常報錯,直接換成32位)
2.網絡:
雙網卡
eth0: 10.3.2.30/24 (公網) eth1:192.168.0.1/24(私網地址,內網網關設這個)
網關10.3.2.254
3.yum install privoxy 直接安裝privoxy 默認端口8118
二、配置NAT
sysctl 中設置 net.ipv4.ip_forward = 1
iptalbes 中設置NAT
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE -o eth0
三、配置透明代理
2. 修改accept-intercepted-request 爲1
3.Iptables 配置,將所有來自私網80端口的數據包重定向到192.168.0.1的8118端口,這是透明代理的關鍵
iptables -t nat -A PREROUTING -s 192.168.0.0/24 -p tcp --dport 80 -j REDIRECT -to-port 8118
四、更改http-header
更改/etc/privoxy/user.action(這個文件不會隨版本更新而改變)
在文件頭部(任意位置)增加:
+add-heaer {name:liqunsheng}
/
注意最後的“/”不要丟掉。
五、測試
這樣配置就完成了,我們來測試一下
將客戶機的IP設置爲192.168.0.0/24的地址,網關設爲192.168.0.1
瀏覽器的代理沒有任何設置,我們打開網頁http://10.2.1.33,
並在10.2.1.33端用wireshark抓包。如圖所示:
六、關於透明代理後無法打開http://p.p 網頁的說明
我們知道,使用privoxy做瀏覽器代理,輸入http://p.p 能跳到privoxy的管理網頁,也是驗證代理是否做成功的手段,但是做完透明代理該網頁將無法打開,原因是瀏覽器代理的DNS使用的是代理服務器192.168.0.1的DNS,透明代理使用的是本地DNS,本地DNS當然不知道http://p.p 是誰了。