我在 Windows 11 主机上有一个 Ubuntu 20.04 VM(VirtualBox)。
网络通过 NAT 连接。
我在 VirtualBox 中进行了如下端口转发:
Name | Protocol | Host IP | Host Port | Guest IP | Guest Port
SSH | TCP | 127.0.0.1 | 2222 | 10.0.2.10 | 22
所以现在我可以通过 PuTTY 从 Windows 主机通过 SSH 连接到 VM,127.0.0.1:2222
没有任何问题。
我的 LAN 上该主机的 IP 是192.168.10.15
。因此,我尝试从另一台 Windows PC 通过 ssh 连接到该 VM,192.168.10.15:2222
但得到的是Connection timed out
。
因此我想也许 Windows 主机正在阻止入站流量,所以我打开了所有端口以防万一(用于测试) - 连接仍然超时。
因此我在路由器的 IP 上添加了端口转发规则192.168.10.15
:
Name: SSH
External Port Start: 2200
External Port End: 2200
Protocol: TCP
Internal Port Start: 2222
Internal Port End: 2222
IPv4: 192.168.10.15
然后我尝试通过 SSH 192.168.10.15:2200
,但仍然没有结果。
我甚至尝试了各种组合:
192.168.10.15:2222
,,192.168.10.15:22
但都超时了。
我甚至在尝试通过 SSH 连接到另一台 PC 的 Windows PC 上将所有端口添加到出站规则,但仍然没有结果
问题是什么?
答案1
如果您只想直接连接到主机,则路由器不需要端口转发规则。您可以直接连接到主机。“端口转发”的目的是翻译地址 – 例如,当 ssh 连接到路由器的公共 (WAN) 地址时,它会将目的地转换为您计算机的 LAN 地址。但是当您已经在同一个 LAN 中时,您可以直接说ssh 192.168.10.15
,则无需进行转换。(事实上,直接 LAN 连接甚至不会通过路由器根本无法应用端口转发。)
这里真正的问题是你的VirtualBox 的端口转发规则只告诉它监听 127.0.0.1(环回地址)。这意味着它只接受建立的连接到127.0.0.1 完全匹配 – 192.168.10.15 是同一台机器并不重要;连接的目标地址必须与监听地址完全匹配。
如果希望它监听,请将“主机 IP”更改为 0.0.0.0全部主机拥有的 IP 地址。