如何使端口重新路由在本地工作?

如何使端口重新路由在本地工作?

请看这个命令:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

我使用它来重新路由从80到 的任何传入流量8080,因为该计算机上的 Apache 2 服务器以非特权用户身份运行,并且只有 root 才能打开众所周知的端口。它保存在 中/etc/iptables/rules.v4,如果我在远程计算机上打开网站,它就可以正常工作。虚拟主机绑定到192.168.X.X:8080

但是,如果我通过 ssh 进入该服务器并打开启用了 X11Forwarding 的浏览器,在地址栏中输入 IP 不会打开该网站,而是连接会超时。只有当我添加 :8080到地址时它才会起作用。所以归根结底,在同一台计算机上打开时,端口路由不起作用。

我的问题是:我需要如何修改或添加路由指令,以便它也可以在本地工作?

答案1

之所以不起作用,是因为来自本地源的包没有经过路由阶段,因为本地包不需要路由。因此,此规则不适用。要路由来自本地源的包,需要将其直接发送到 OUTPUT:

iptables -t nat -I OUTPUT -p tcp -o lo --dport 80 -j REDIRECT --to-ports 8080

相关内容