![使用路由器上的 iptables 将 HTTP 流量从 LAN 盒重定向到外部代理](https://linux22.com/image/1543431/%E4%BD%BF%E7%94%A8%E8%B7%AF%E7%94%B1%E5%99%A8%E4%B8%8A%E7%9A%84%20iptables%20%E5%B0%86%20HTTP%20%E6%B5%81%E9%87%8F%E4%BB%8E%20LAN%20%E7%9B%92%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%E5%A4%96%E9%83%A8%E4%BB%A3%E7%90%86.png)
我的目标是将所有 HTTP 请求从我 LAN 上的单个 IP(我的笔记本电脑)透明地代理到运行代理服务器(特别是以透明模式运行)192.168.1.134
的外部 IP(假设是互联网 VPS ),监听端口 80。X.X.X.X
mitmproxy
我的家庭局域网由运行 Asuswrt-Merlin 固件的 ASUS RT-N66U 路由器供电。路由器有 IP 192.168.1.1
,是我网络上每个设备的默认网关。为了转发流量,我通过 ssh 连接到我的路由器并运行以下iptables
命令:
iptables -t nat -A PREROUTING -s 192.168.1.134 -p tcp --dport 80 -j DNAT --to X.X.X.X:80
iptables -t nat -A POSTROUTING -j MASQUERADE
此外,我的路由器上启用了 IP 转发:
admin@RT-N66U:/tmp/home/root# cat /proc/sys/net/ipv4/ip_forward
1
这导致某物,但这不是我所期望的。从192.168.1.134
(我的笔记本电脑)发出一个简单的 http 请求(例如curl http://example.com
),我可以在代理的事件日志中看到mitmproxy
报告客户端已连接(使用我的路由器的 NAT 公共 IP,由我的 ISP 发出),但是这几乎是它所能达到的极限。它再也不会走得更远了,我的 curl 命令只是等待。最终,我在代理的日志中看到“对等方重置连接”,并且连接已关闭。
任何帮助都值得建议。我必须承认,我不太精通iptables
。