场景是 Ubuntu14.04 服务器中有 2 个网卡,一个是 D-Link 路由器,另一个是 ISP 的直通线路。现在我想要服务器上路由器的所有请求。路由器处于桥接模式以避免 Nat。当我在路由器连接的设备中设置代理时,我收到了所有请求,但我不想在客户端设备中设置代理,所以我设置了 Iptables 命令。但我收到了不支持的请求!那么 Iptables DNAT 中的网络连接是否存在问题?
答案1
如果你想建立一个透明代理,您需要一个支持它的代理服务器软件。这是因为“捕获”连接与浏览器通常与(常规)代理通信的方式不同。
首先,安装您的代理(在本例中为 Squid),并验证它可以作为常规代理工作。
然后,将其设置为接受捕获的连接:
http_port 3128 transparent
此后,您所需要的只是一个防火墙规则来实际捕获连接:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
如果代理位于另一台主机上,则此配置不起作用。在这种情况下,您可以使用 DNAT。
请注意,除非透明代理执行 MITM 攻击,否则它无法与 HTTPS 配合使用。否则它不知道连接应该去哪里。除非您知道自己在做什么,否则 SSL 拦截不是一个好主意。