我想重定向環回網路介面上的連接埠 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 上進行重定向,則會失敗(見上文)。