这个问题困扰了我很长一段时间,我觉得这可能是可能的,但是鉴于我对网络的了解,我似乎无法弄清楚如何解决。
举个例子很容易理解:如果我运行 2 个名为 serverA 和 serverB 的服务器,并且我希望能够通过 ssh 进入每个服务器,我可以执行 ssh serverA.home.example.com 或 serverB.home.example.com,并让我的内部 DNS 解析这些请求,既可以从 LAN 内部(已经这样做了)也可以通过 WAN 进行解析。
意识到这是一个例子,我知道这可以通过端口转发和更改每个端口上的 ssh 端口来实现 - 我只是对更好地学习和理解 DNS 感兴趣。
我的想法是,如果 DNS 请求进入端口 53,我的 DNS 服务器将使用我的公共 IP 地址进行响应(假设主机在其表中)。我无法理解的是,当请求发送到我的公共地址时,NAT 不知道该请求是发往哪个主机的。
答案1
DNS 将域名解析为 IP。由于您希望从外部访问,因此您需要公共 IP。一旦域名解析,SSH 将连接到 IP。如果您不指定端口,它将连接到默认端口 (22)。如果您有一个公共 IP,NAT 就无法知道您要连接到哪个主机,A 还是 B - 正如您所说。
解决方法:
- 已部署 IPv6。
- 有2个公网IP。
- 不同的端口和端口转发。(- 正如你所说的)
- 不同的端口和端口转发,为服务器A和服务器B添加 SRV 记录并使用SSH 包装器支持 SRV 记录
答案2
您需要有 2 个 DNS 服务器,一个用于 LAN,用于回答 example.com 并返回私有 IP,另一个用于 Internet 上的 DNS 服务器,用于回答同一个域但返回公共 IP。