我的目标是将所有 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
。