![通过 DynDNS 主机名通过 SSH 连接到 LAN 上的计算机](https://linux22.com/image/1391571/%E9%80%9A%E8%BF%87%20DynDNS%20%E4%B8%BB%E6%9C%BA%E5%90%8D%E9%80%9A%E8%BF%87%20SSH%20%E8%BF%9E%E6%8E%A5%E5%88%B0%20LAN%20%E4%B8%8A%E7%9A%84%E8%AE%A1%E7%AE%97%E6%9C%BA.png)
我正在尝试为家庭网络上的个人计算机设置 DynDNS 以进行 SSH 访问。我已经设置了 DynDNS,并设法正确转发了路由器,以便任何尝试连接到 dyndns 主机名上的端口 22 的连接都指向相应的计算机,该计算机以 openssh 进行响应。只要连接尝试来自外部网络,一切都会正常工作。如果我尝试从连接到同一路由器的另一台计算机进行连接,它就会停止。我不知道我需要做什么才能使用 dyndns 主机名从同一网络内连接到我的 ssh 服务器。任何见解都值得赞赏。
答案1
DynDNS DNS 名称映射到公共 IP。本地网络上的 SSH 盒的 IP 是私有 IP。
您的路由器仅接受其 WAN 端口上的公共 IP 的连接。
{Internet} --- [WAN PORT {public IP} (router) {private IP} LAN PORT] --- {local network}
DNS 可能解析得很好,但路由器阻止您尝试从 LAN 端口(又名接口)连接到其公共 IP。
处理这个问题最简单的方法是在 LAN 上时只使用盒子的私有 IP。可以设置双区域 DNS,以便它在 LAN 和外部都能正确解析。但我怀疑这是否值得花时间。
一个简单的解决方法是在您想要从其进行 SSH 连接的机器上的 hosts 文件中创建一个条目。例如,创建一个特殊条目sshbox.local
,并在 LAN 上使用该 DNS 名称。
...如果您愿意的话,这里有一些如何在这种情况下设置 DNS 服务器的示例:
- 在私有网络上,基本区域配置:http://answers.oreilly.com/topic/87-how-to-run-a-private-bind-dns-server/
- 现在,处理来自私有 IP 的 DNS 查询的方式与处理来自公共 IP 的 DNS 查询的方式不同。这在 ISC BIND DNS 服务器(标准)中称为“视图”:https://serverfault.com/questions/100210/bind-split-view-dns-not-working-with-zone-transfer
几年前我使用过多视图 DNS,设置后效果很好。这样做的好处是您的反向 DNS(您应该设置)将使本地连接运行得更快。这可能是大多数企业网络所缺少的最大功能之一。