通过域名连接SSH端口22,但不是公有IP地址

我有一个Draytek路由器被configuration为端口转发SSH连接到特定的IP地址的内部服务器只。 除了无法连接到路由器的公共静态IP地址,只能连接到域名的客户端和我自己以外,可以成功连接到外部。 router.domain.com如果路由器甚至有一个域名分配给它? 不知道为什么他们只能连接到域名而不是IP – build议表示赞赏

根据问题中的有限信息,无法确定使用主机名连接的原因,但使用IP地址连接到同一台服务器不起作用。

不过我想最可能的解释是客户端是依赖于DNS64 + NAT64为了连接到服务器。 由于IPv4地址耗尽,各种CGN解决scheme的部署变得越来越普遍。 其中之一是DNS64 + NAT64,这些客户端无法通过IP地址连接到IPv4服务器。

当这样的客户端连接到一个IPv4的服务器时会发生什么:

  • 客户端发送server.example.com AAAA查询
  • DNS64服务器发送server.example.com AAAA查询
  • 权威服务器发送NOANSWER。
  • DNS64服务器发送对server.example.com的查询
  • 授权服务器响应192.0.2.1
  • DNS64将192.0.2.1转换为64:ff9b::192.0.2.1
  • 客户端连接到地址64:ff9b::192.0.2.1上的NAT64 64:ff9b::192.0.2.1
  • NAT64将64:ff9b::192.0.2.1192.0.2.1

如果客户端是OpenSSH,则可以在客户端使用ssh -v来查看连接到哪个IP地址。 如果服务器仅为IPv4,并且在给定主机名时客户端连接到IPv6地址,则您将知道客户端取决于DNS64 + NAT64。

如果由于NAT64而无法连接到IP地址,可能会采取缓解措施:

  • 在服务器上启用IPv6,并在当前Alogging旁边创buildAAAAlogging。 客户端现在可以直接连接到服务器的IPv6地址。 即使客户端继续使用主机名连接,这也是首选方法,因为它将删除对NAT64的依赖关系。
  • 保持原样。 你说使用服务器主机名连接工作。 所以DNS64 + NAT64正在按预期工作,并没有立即需要改变任何东西。 在大多数情况下,使用主机名的连接被认为比直接连接到IP地址更好,所以没有任何理由停止使用主机名。
  • 让客户端使用主机名连接一次来学习DNS64映射到的IPv6地址,然后使用此IPv6地址通过NAT64保持连接。 (作品,但似乎有点傻)
  • 让客户端使用NAT464。 这是针对客户端软件仅支持IPv4而客户端连接到仅IPv6接入networking的情况的解决scheme。 但是,如果通过主机名连接已经工作,那么你不需要NAT464,你最好使用其他解决scheme之一。