无法在 LAN 内进行 ssh,但可以从外部连接

无法在 LAN 内进行 ssh,但可以从外部连接

一个奇怪的问题:我的台式机运行 Ubuntu 10.04,位于执行 NAT 的 Netgear WNR1000 路由器后面。我希望能够从我的笔记本电脑(运行 Windows 7 和 Cygwin)通过 ssh 进入台式机。在家时,台式机和笔记本电脑都通过无线连接(台式机与路由器位于不同的房间)。sshd 似乎运行良好,因为从ssh localhost台式机运行没有问题。此外,ssh my.ip.address从我的笔记本电脑不是路由器后面的端口工作正常(我正在将路由器上的端口 22 转发到我的桌面)。但是,ssh same.ip.address之内LAN 失败并显示“连接被拒绝”。 ssh 192.168.local.ip.address失败并显示不同的消息“连接超时”。如果我先 ssh 到 LAN 外的机器,我可以连接。

到目前为止,我还没有用 Google 找到任何结果,因为对于看起来相关的搜索词,绝大多数人遇到的问题恰恰相反 - 即他们无法从 LAN 外部连接,但可以在 LAN 内部连接。我在家时可以通过远程服务器进行端口转发,但这似乎是一种完全荒谬的方式,用于连接同一家庭 LAN 上的两台计算机。我已经尝试在桌面上停止和启动 sshd。有什么想法吗?

答案1

部分原因在于您的 NAT 网关未执行 NAT 发夹技术(有时称为“NAT 反射”)。此时,NAT 网关允许私有端的客户端连接到 NAT 的公共 IP 地址,并且它足够智能,能够意识到它具有端口映射,因此将数据包转回并发送到 NAT 私有端的端口映射主机。您可以查看路由器是否有 NAT 发夹技术设置,只需将其打开即可,但很可能路由器无法做到这一点。您可以检查以确保您运行的是 Netgear 的最新固件(也许他们后来修复了它),或者您可以看看是否可以在您的 Netgear 盒子上运行售后固件发行版,例如 DD-WRT。也许 DD-WRT 或支持您的 Netgear 盒子的其他发行版具有正确的 NAT 发夹技术代码。

这个问题的另一部分是,您无法直接使用私有 IP 地址从 NAT 私有端的主机连接到 NAT 私有端的另一台主机。我能想到的唯一办法是,某些 Wi-Fi AP 有一个复选框,用于禁用 IEEE 802.11 规范中所谓的“BSS 内中继”。有时 UI 可能会将其称为“启用客户端隔离”或“禁用客户端到客户端通信”或类似的东西。

相关内容