NAT 环回和 DynDNS

NAT 环回和 DynDNS

我已经在路由器上成功配置了 DynDNS,现在我可以使用自定义域从本地网络外部访问我的家庭服务器。

使用同一个域,尽管有一个外部 IP,我还是能够从本地网络内部访问我的家庭服务器,因此我假设我的路由器允许该域的 NAT 环回。

我认为这足以确保对我的家庭服务器的请求的网络流量保持在本地网络内。

但我做了一个简单的测试,似乎可以证明这一点。

我更改了笔记本电脑(连接到本地网络)的 /etc/hosts 文件,以将我的 DynDNS 域解析为服务器的本地 IP(例如 192.168.1.2)

使用本地 IP 进行每个请求时,网络速度会快得多。我猜是因为请求不会超出本地网络。

我的笔记本电脑不是唯一使用服务器的设备。此外,在我的网络内部/外部来回更改主机文件不是一个可行的选择。我真正不明白的是为什么路由器不够“智能”来重新路由请求

我是否遗漏了什么?

解决这个问题的唯一方法是在我的本地网络中部署 DNS 服务器?

答案1

不,您的路由器没有执行“NAT 环回”。

有两种情况。您可以通过查看路由器的外部网络接口的 IP(可能与您的公共 IP 不同,见下文)来判断哪种情况适用。

1) 您的 ISP 正在进行运营商级 NAT(非常有可能,在德国几乎是肯定的)。

您的公共 IP 将位于您的 ISP 网络中。您的路由器还将拥有一个位于您的 ISP 网络中的私有 IP(这不同于您家庭网络中的私有 IP)。当您将数据包发送到您的公共 IP 时,它将转到路由器,然后转到您的 ISP 网络,然后返回到您的路由器,然后转到您的服务器。您可能会或可能不会看到(部分)此信息traceroute

因此它会离开您的家庭网络,但不会离开您的 ISP 的网络。

有一个 ICMP REDIRECT 机制可以使下次速度更快,但您的 ISP 可能会或可能不会使用它,并且 Fritzbox 可能会或可能不会遵守它。

另一方面,当您直接使用服务器的地址时,它就会去那里。

2) 您的 ISP 没有执行运营商级 NAT。发往您的公共 IP 的数据包将转到您的路由器,路由器将检测到它是本地 IP,但仍将应用端口转发规则,并将其发送回您的服务器。

这仍然比直接发送到服务器慢,但没有情况 (1) 那么慢。

3) 您的 Fritzbox 完全能够管理静态 IP。并且它已经运行 DNS 服务器。您可以在 GUI 中编辑设备的名称,您可以勾选“始终使用相同的 IP”框,这样服务器将始终xyz.fritz.box使用相同的 IP 访问。

它不会做的是覆盖其域外的名称解析(至少我认为它不能,实际上可能值得一试)。

所以是的,如果您希望 DDNS 域名根据您是在家庭网络中还是在外部解析为不同的 IP,则必须部署第二个 DNS 服务器。或者编写脚本/etc/hosts以根据连接到的 SSID 自动更改,等等。

相关内容