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
三、配置透明代理
- 修改服务端口,将服务器开在192.168.0.1:8118上,修改/etc/privoxy/config文件
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 是谁了。