Fit*_*Roy 4 router nat ip loopback
如果两台机器位于同一个 LAN(一台 PC 和一台 Web 服务器)上,为什么需要在路由器上启用“NAT 环回”,以便 PC 使用路由器公共 IP(哪个端口转发)访问 Web 服务器上托管的网站?在端口 80 到网络服务器)?这篇关于动态 DNS 的文章完美地说明了设置http://www.dyndns.com/support/kb/loopback_connections.html
(在示例中,他们试图使用 URL www.example.com 访问网络服务器,出于与我无关的问题的目的,我只是对通过公共 IP 访问网络服务器感兴趣,不涉及 URL)
上面文章的最后一句话是:“如果他们尝试通过主机名 www.example.com 访问计算机,NAT 路由器将尝试将其路由出其 WAN 接口,然后再返回。在大多数情况下,这要么失败或者返回路由器本身的 Web 界面,因为路由器不了解用户正在尝试做什么。”
任何人都可以提供有关为什么路由器会感到困惑的技术解释吗?在这种情况下,一旦数据包到达路由器以混淆它,数据包实际上会发生什么?
第二个问题,如果路由器支持“NAT Loopback”,这个功能在路由中改变以允许您使用公共IP是什么?
这是一个例子。一些路由器,如 Neufbox4(由法国 ISP 提供的路由器)正在运行 Linux。在这些路由器上,程序“iptables”用于配置 NAT 行为(iptables 是某种用于 Linux 网络的瑞士军刀)。
假设您的路由器后面有一个 Web 服务器(端口 TCP 80),侦听 LAN 地址 192.168.0.2,并为其添加端口映射(重定向)。这在 iptables 的术语中转化为类似的东西:
iptables -t nat -A PREROUTING -i wan -p tcp --dport 80 -j DNAT --to-destination 192.168.0.2
Run Code Online (Sandbox Code Playgroud)
这意味着“对于通过指向 TCP 端口 80 的 WAN 接口传入的每个数据包,将其发送到 192.168.0.2”。这正是您想要的。一切都很好……暂时。
您必须了解与路由器的 WAN 接口关联的 IP 地址是您的公共 Internet 地址。例如,如果您的 Internet IP 为 1.2.3.4,则路由器上的“wan”接口的 IP 地址为 1.2.3.4。
现在假设您正尝试从 LAN 访问您的网络服务器,例如从地址为 192.168.0.3 的个人计算机,使用您自己的 Internet 地址。例如,您在浏览器中输入“ http://1.2.3.4/ ”。
发生的情况是您的计算机将发送一个数据包定向到 LAN 上的 1.2.3.4、TCP 端口 80。路由器将接收此数据包。但它不会将其重定向到 192.168.0.2。为什么?因为上面的 iptables 规则只处理来自 WAN 接口的数据包,而不是来自 LAN 的数据包!
那么接下来会发生什么呢?嗯,这取决于路由器上的其他网络规则。一般来说,会发生以下两种情况之一:
要么路由器会看到一个指向自己的数据包(记住,1.2.3.4 是路由器的 IP 地址之一,所以这是完全正常的)。在大多数路由器上,有一个 Web 服务器在端口 80 上侦听管理界面。因此,该网络服务器将处理数据包,而不是您 LAN 上的网络服务器,您将获得管理界面而不是您的网站。
或者路由器会出于某种原因丢弃数据包,仅仅是因为它不知道如何处理指向其 LAN 端口上的 WAN 地址的数据包。
从技术上讲,解决方案非常简单,它包含以下形式的 iptables 规则:
iptables -t nat -A PREROUTING -i lan -d 1.2.3.4 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.2
Run Code Online (Sandbox Code Playgroud)
这意味着“对于通过指向 TCP 端口 80 且目标地址为 1.2.3.4 的 LAN 接口传入的每个数据包,将其发送到 192.168.0.2”。这就是您所说的“NAT 环回”。
然而,大多数路由器制造商显然没有意识到这个问题,也没有把这个规则(或路由器专有系统中的等效规则)放入他们的产品中......
| 归档时间: |
|
| 查看次数: |
8904 次 |
| 最近记录: |