- 论坛徽章:
- 0
|
我用iptables+squid做透明代理
内网为172.24.0.0/19接口为eth0,限定其只能访问外网的一台web服务器202.114.16.12,公网eth1的ip202.116.52.6
squid工作在透明代理方式,监听80端口,配置没有问题
iptables配置命令如下
iptables -t nat -A PREROUTING -p tcp -i eth0 -j DNAT --to 202.114.16.12
iptables -t nat -A PREROUTING -p tcp -d 202.114.16.12 -j REDIRECT --to-port 80
iptables -t nat -A POSTROUTING -o eth1 SNAT --to 202.116.52.6
结果可以上网,但是数据没有经过squid
我怀疑是不是一个包经过PREROUTING时匹配第一条规则
iptables -t nat -A PREROUTING -p tcp -i eth0 -j DNAT --to 202.114.16.12后就直接跳出PREROURING链了,不会再去匹配第二条规则了,所以iptables -t nat -A PREROUTING -p tcp -d 202.114.16.12 -j REDIRECT --to-port 80在这里根本就没有起作用
究竟DNAT对包做完操作之后,包还会继续和其他的规则比较又或者不再继续比较当前链中的其他规则或父链中的其他规则直接跳出这条链呢? |
|