我想设置 NAT,使用我的 Technicolor TG 582 路由器在互联网上提供服务。我提到具体的路由器型号只是为了参考,但问题是一般性的,因为我可能需要将此编程用于不同的路由器。
我希望 DHCP 服务器为服务分配地址,但同时使用 NAT 指向服务。
同事告诉我,如果让 DHCP 将 IP 分配给设备,则特定的 NAT 规则最终将失败,因为路由器上的 DHCP 服务器将随着时间的推移更改分配的本地 IP,从而使 NAT 端口链接无效 - 该链接指向本地 IP,而不是设备的 MAC(物理)地址。
根据这些信息,我的做法是使用静态 IP 来处理路由器后面任何需要从外部访问的服务。但是显然路由器有时会通过 MAC 来“识别”设备,有时则通过本地 IP 来识别。我自己的逻辑告诉我,路由器应该将特定端口请求从外部“路由”或 NAT 到我提供服务的 MAC 地址,而不是 IP。
那么到底是哪一个呢?问题的第二部分是,如果 DHCP 服务器重新启动,或者客户端设备离线,然后重新开启,DHCP 服务器是否会尝试维护之前分配给设备的本地 IP,还是直接选择下一个可用的 IP?
答案1
回答提出的问题:
NAT 是第 3 层网络效果 - 它在数据包路由时发生,而 MAC 地址是第 2 层网络方面 - 它们仅在本地网络上有意义。因此,回答您的问题,您不能将 NAT 转换为 MAC 地址 - NAT 的概念不能跨层工作。
回答实际问题(如何使用 DHCP 并确保 NAT 仍然有效):
您只需要在 DHCP 中保留您的 IP 地址,这样它就不会随时间而改变。这与您机器的 MAC 地址绑定。因此,并告诉 DHCP 服务器,如果 IP 地址请求来自特定 MAC 地址,则应为其分配特定的 IP 地址。
答案2
路由器上的 DHCP 服务器将随着时间的推移改变分配的本地 IP。
不,这只是默认行为。您可以为具有 MAC 预留的计算机分配特定 IP。
具体操作方法因 DHCP 服务器而异:
许多 SoHo 设备都具有 Web 界面来执行此操作。此界面各不相同。
在 Windows 上,您可以打开 DHCP 服务器管理控制台并设置保留。
在 Linux 安装中,这取决于所使用的软件,但大多数时候您可以编辑/etc/dhcpd.conf
和添加如下内容:
host name_of_your_PC
{
hardware ethernet 00:11:22:33:44:55;
fixed-address 1.2.3.4;
}
根据这些信息,我的做法是对路由器后面任何需要从外部访问的服务使用静态 IP。
服务器的静态 IP 地址是件好事。
(网络打印机、扫描仪和类似设备的静态 IP 地址也是如此)。
但是,您可以通过两种方式进行设置:
1. 硬性设置。在设备上配置静态 IP。2. 使用 DHCP 并设置保留。
最后一种更简洁,因为您只有一个地方来管理配置。唯一的缺点是您的 DHCP 服务器一旦出现故障。不过这两种都是有效的选择。
然而显然路由器有时通过其 MAC“识别”设备,有时通过其本地 IP。
如果您有 DHCP 背景,这将很有帮助。简而言之,它的工作原理如下:
- 新设备启动其 NIC 并广播“您好,我是 AA:BB:CC:DD:EE:FF。我想获取在此网络上工作所需的信息”。(DHCP 请求)
- DHCP 服务器注意到该广播并回复:
“AA:BB:CC:DD:EE:FF,你可以此 IP. 有效在此期间“。它还可能提供 DNS、默认网关和主机名的设置。最后一个是可选的。(DHCP 确认)
服务器也可以拒绝 DHCP 请求。
假设新设备获得了 IP 1.2.3.4,并被告知可以使用该 IP 4 小时。经过一半时间(2 小时)后,它将要求续订。“您好,DHCP 服务器。我已经从您那里获得了这个 IP。我想继续使用一段时间。再使用 4 小时可以吗?”。
(想象一下在图书馆租一本书然后打电话去续租)。
通常这种情况会一直持续下去,设备将永远使用相同的 IP。您的 NAT 将一直指向正确的位置,一切都会正常。
现在,如果你关闭电脑一天,它就不能再续订了。它将不得不申请一个全新的租约。让我们来画个草图:
PC1 gets IP 1.2.3.4 for 4 hours.
PC1 gets power off for the weekend.
PC2 get boots and gets a IP 1.2.3.4
PC1 boots and asks for an IP.
It will get an IP, but not the same one as before.
这是按设计运行的。(否则旧设备会慢慢填满已用 IP 表。)
我自己的逻辑告诉我,路由器应该将特定端口请求从外部“路由”或 NAT 到我有服务的 MAC 地址,而不是 IP。
不。NAT 工作在 IP 层。NAT 无法识别 MAC 地址。
如果 DHCP 服务器重新启动,或者客户端设备离线然后重新打开,DHCP 服务器是否会尝试维护先前分配给该设备的本地 IP,还是仅选择下一个可用的 IP?
这取决于 DHCP 服务器。有些服务器只会分发列表中的第一个空闲 IP。有些服务器会记住之前使用过的 IP,如果该 IP 仍然空闲,则会将相同的 IP 分配给相同的设备。这里没有通用的统一答案。
答案3
NAT 是一种 TCP/IP(OSI 传输)层现象,因此 MAC 不足以满足其目的。请记住,TCP/IP 运行在以太网以外的网络,这些网络可能根本不使用 MAC 地址。由于它是在互联网络层之上实现的,因此您需要考虑将 NAT 转发的流量路由到与 NAT 网关不在同一 LAN 上的系统的能力(例如,您使用 VLANS 并有一个路由器在它们之间路由,或多个子网)。您需要一个 IP 地址才能在网络之间路由。
您的同事是正确的,传统的准则是服务器应该静态分配而工作站应该动态分配。这样,如果您的服务器出现故障,您可以将该地址分配给备份服务器,它将立即开始处理请求。
DHCP 服务器通常会将相同的 IP 地址分配给相同的 MAC,但这种情况偶尔会出现问题。几周前,我的一个盒子无缘无故地开始使用新地址。DHCP 服务器确实存储了 IP 到 MAC 的映射,因此重新启动后它仍会存在。请注意,如果客户端已经有 IP,并且 DHCP 服务器重新启动,客户端甚至不会注意到,除非它也重新启动并再次请求地址。