
這是我的情況:
同一路由器下的兩台電腦,192.168.1.101和192.168.1.102
這就是我喜歡做的事情:在 192.168.1.101 上,當使用 localhost 存取連接埠 22 時,它將流量定向到 192.168.1.102 連接埠 22。
換句話說,我想將任何流量從本地主機轉送到另一個本地IP。
有什麼解決方案可以滿足我的需求嗎?
答案1
如果您使用的是 Windows,則可以使用下列命令:
netsh interface portproxy add v4tov4 listenaddress=192.168.1.101 listenport=21 connectaddress=192.168.1.102 connectport=21
代替:
21
與您要轉送的端口,192.168.1.101
與你的IP,192.168.1.102
與目標ip。
答案2
不要重新定義 localhost 的意思。你會以令人驚訝的方式破壞事物。
相反,請查看中的-L
和選項。它們可以輕鬆地將本機電腦上的連接埠重新導向到遠端電腦的 IP 位址和連接埠。另外,隧道由 SSH 保護。-R
ssh(1)
請注意,這些隧道不一定特定於 ssh/shell 流量。它可以用於任意流量。
答案3
不確定這是否是明智之舉。許多打算在本機電腦上執行的服務使用127.0.0.1
(這對您的變更來說沒有問題)或localhost
(在這種情況下您的變更會弄亂事情)連接到同一台電腦上的其他服務。許多其他軟體包都是以這種方式配置的。
如果目的是使用相同的名稱進行橫向連接,無論您在哪台機器上,我寧願建議為此使用不同的名稱。例如,您可以使用“crosshost”來代替“localhost”,然後按照 Indrek 給出的提示進行操作:檢查您的hosts
文件(在 Linux/Unix 上,也可能是 Mac 上/etc/hosts
,在 Windows 上是C:\Windows\System32\drivers\etc\hosts
(沒有擴展名-所以採取請注意,Windows 通常在該目錄中已經有一些其他hosts.*
檔案)。不是註解掉該127.0.0.1 localhost
行,也不修改它-保持原樣。只需添加一行
192.168.1.101 crosshost
在 192.168.1.102 機器上,與另一台機器上的其他位址類似。現在,您可以ssh crosshost
從另一台計算機連接到另一台計算機,或使用 複製文件scp filename.ext crosshost:/path/to/put
,或您想要的任何內容。