IP 不是 127.0.0.1 的环回上的端口重定向

IP 不是 127.0.0.1 的环回上的端口重定向

我想重定向环回网络接口上的端口 80,以便对该端口的访问实际上转到端口 8080。

我尝试使用以下命令,但它仅在应用程序侦听 127.0.0.1:8080 时有效,但如果应用程序侦听 127.1.2.3:8080 则无效。

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

我也尝试添加,--source 127.1.2.3/32 --destination 127.1.2.3/32但仍然不起作用。

如果我打开侦听 127.0.0.1:8080 的应用程序,则重定向有效:

ssh remote -L127.0.0.1:8080:192.168.0.3:80

nc 127.0.0.1 80 # works

但如果我打开一个监听 127.1.2.3:8080 的应用程序,它就不起作用:

ssh remote -L127.1.2.3:8080:192.168.0.3:80

nc 127.1.2.3 80 # fails
nc: connect to 127.1.2.3 port 80 (tcp) failed: Connection refused

nc 127.1.2.3 8080 # works, so the application is still listening on 8080

如何将 127.xxx 上的端口 8080 重定向到同一 IP 上的端口 80?

更新:动机

我尝试使用 SSH 执行以下端口转发(127.1.2.3:80 → 192.168.0.3:80 和 127.1.2.4:80 → 192.168.0.4:80):

ssh remote -L127.1.2.3:80:192.168.0.3:80 -L127.1.2.4:80:192.168.0.4:80

由于端口 80 是“特权”端口,因此 ssh 无法在本地主机上打开它。有几种方法可以避免这种情况:

  • sudo ssh,但我不想在 root 帐户上复制我的 ssh 配置和密钥。
  • 使用功能,但软件包更新可能会破坏这一点。
  • 使用不同的端口(例如 8080),该端口可以工作,但非相对 URL 会被破坏。
  • 将特权端口重新路由到非特权端口,这就是我想要做的。它适用于 127.0.0.1 上的单个重定向,但如果我在 127.0.0.1 以外的 IP 上进行重定向,则会失败(见上文)。

相关内容