我正在尝试为家庭网络上的个人计算机设置 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(您应该设置)将使本地连接运行得更快。这可能是大多数企业网络所缺少的最大功能之一。