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

三、配置透明代理

  1. 修改服务端口,将服务器开在192.168.0.1:8118上,修改/etc/privoxy/config文件

wKioL1Xr28qTzYe4AAIEslDI7Ck487.jpg

2. 修改accept-intercepted-request 为1

wKioL1Xr3LKTd-hwAACDzyW82Qc073.jpg

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

wKiom1Xr3tzzDhOBAAE2U3FOeRk482.jpg

浏览器的代理没有任何设置,我们打开网页http://10.2.1.33,

wKiom1Xr3z7xMwe8AANrnqppho8681.jpg

并在10.2.1.33端用wireshark抓包。如图所示:

wKioL1Xr4naheBu0AAbkiNau3c8008.jpg

六、关于透明代理后无法打开http://p.p 网页的说明

   我们知道,使用privoxy做浏览器代理,输入http://p.p 能跳到privoxy的管理网页,也是验证代理是否做成功的手段,但是做完透明代理该网页将无法打开,原因是浏览器代理的DNS使用的是代理服务器192.168.0.1的DNS,透明代理使用的是本地DNS,本地DNS当然不知道http://p.p 是谁了。