我在 Linux 网关 (ubuntu server 12.04) 中设置了一些 iptables 规则,一切运行正常。我配置了一个透明的 squid 代理,它也能正常工作。我正在使用这个规则。
$IPT -t nat -A PREROUTING -p tcp --destination-port 80 \
-j REDIRECT --to-ports 3128
但我必须使用该服务器进行 Web 开发测试和演示,并且拒绝来自互联网 (eht0) 的所有 http 请求。我可以从本地网络 (eth1) 毫无问题地访问。
当我注释掉上面的规则时,一切又恢复正常了。为什么这条规则会阻止来自 wan 网络的 http 请求?
答案1
实际上,此规则并不是阻止来自 Wan 的 http 流量,而是将该流量重定向到您的代理。
换句话说,您的实际规则将传入和传出的 http 流量重定向到端口 3128 上的网关。
我建议指定源/目标接口:
# Traffic from LAN to Internet is redirected to your Proxy
$IPT -t nat -A PREROUTING -p tcp -i eth1 -o eth0 --destination-port 80 -j REDIRECT --to-ports 3128
# Traffic from Internet is redirected to your gateway on port 80
$IPT -t nat -A PREROUTING -p tcp -i eth0 --destination-port 80 -j REDIRECT --to-ports 80