这是我的情况:
同一路由器下的两台计算机,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
,或者任何您想要的操作。