SSH 权威指南说
假设您要将连接从本地计算机转发到remote.host.net。以下两个命令都有效:
$ ssh -L2001:localhost:143 remote.host.net $ ssh -L2001:remote.host.net:143 remote.host.net
转发的连接是从远程计算机到环回地址或remote.host.net,并且在任何一种情况下,连接都保留在远程计算机上,并且不会通过网络进行。然而,这两个连接对于接收转发连接的服务器来说明显不同。这是因为连接的源套接字不同。与本地主机的连接似乎来自源地址127.0.0.1,而到remote.host.net的连接来自与该名称关联的地址。
什么是“与该名称关联的地址”?
它与“源地址127.0.0.1”有何不同?
谢谢。
答案1
我们ssh
暂时忽略,做一些更简单的事情。
如果你这样做
telnet localhost 143
localhost
然后从到建立连接localhost
相反,如果你这样做
telnet my.ip.address 143
my.ip.address
然后从到建立连接my.ip.address
在这两种情况下,我们都连接到同一台计算机上的端口 143,但源地址发生了变化。所以我们可以看到目标IP地址改变了源IP地址。
端口转发也是同样的道理ssh
。
在第一个版本中,您将连接到localhost
,因此源是localhost
.使用第二个版本,您将连接到服务器的主 IP 地址(remote.host.net 的 IP 地址),因此源来自该 IP 地址。
这不是一个ssh
具体问题;这就是 IP 路由通常的工作方式。