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 上進行重定向,則會失敗(見上文)。

相關內容