到目前为止,我一直为我的笔记本电脑配置有线和无线接口,每个接口都从 DHCP 获得不同的 IP 地址,并且每个 IP 地址解析为不同的主机名。这总是感觉很笨拙,但确实有效。
我们的系统管理员做了一个配置,但由于实际原因,这个配置不起作用,即把同一个 IP 地址链接到两个不同的 MAC。由于他们使用的工具,这个配置实际上不起作用,但谷歌搜索这个配置后,我发现它实际上是可以工作的。
我还发现一些帖子表明 Windows 不会接受两个具有相同 IP 的接口。
那么,这里的最佳做法是什么,每种方法的优缺点是什么?在我的特定情况下,我在笔记本电脑上运行 Fedora Linux。听起来对两个 NIC 使用相同的 IP 实际上是一个更好的解决方案,因为无论我如何连接,我都会拥有相同的主机名。
答案1
这并不完全清楚,但为了论证的需要,让我们从以下前提开始:您一次只使用 1 个接口,这样您就永远不会在两个不同的 mac 地址上同时分配和激活相同的 IP。这行不通(至少在传统意义上行不通)。同样,它们必须是同一个子网,显然,如果无线网络和有线网络位于不同的子网,则相同的 IP 分配无法工作。
如果有线和无线网络都导出相同的子网,那么使用相同的 IP 启动该特定接口就相对简单了,DHCP 没有限制阻止将相同的 IP 分配给两个不同的 mac 地址(尽管必须在 dhcp 配置中进行专门配置)。如果某个特定地址是为您保留的,那么也没有理由不能在每个网络的手动配置中根据需要静态地启动它。
答案2
我发现,将同一主机名解析为同一子网上的两个 IP 地址的最大问题来自管理方面。查询 DNS 或 WINS(在 MS 域上)时,名称只会解析为其中一个 IP。据我所知,它会解析为最近分发的 IP。因此,如果您的计算机更新(例如通过 DHCP)“主”连接之后的“次”连接,它可能会发生变化。
这是一个在我的网络上经常发生的真实示例。用户有一台具有有线和无线双重连接的笔记本电脑。我可以管理 PC,各种网络浏览器和发现工具可以在特定地址找到它。然后无线网卡会更新其信息。我的 PC 上的 DNS 缓存显示的地址与网络认为的地址不同,因为查询仅返回最新的名称/IP 组合。WINS 也显示它有两个名称/IP。您可能认为它仍然有效,但在远程计算机上运行某些管理任务时,我却收到超时和“未找到 RPC 服务器”的提示。
我必须在 DNS/DHCP/WINS 中做一些挖掘,找到具有相同名称的双地址,然后通过 IP 而不是名称进行连接。此外,无线连接通常有防火墙(如果运行 Windows),而有线连接则没有,根据组策略,只要计算机登录到域中(不用担心,如果不在域中,它会对其进行防火墙保护)。
当尝试从外部连接到所需的计算机时,所有这些都会导致问题。从笔记本电脑本身来看,一切似乎都正常工作。两个连接的度量标准使其使用“首选”网络连接(通常是有线连接,通常速度更快)。
问题在于尝试从外部连接/管理/发现计算机。
我的戴尔笔记本电脑有一个很好的实用程序,可以在有线连接时禁用无线,在使用电池时禁用有线连接,从而消除了这个问题。
答案3
如果您没有像 Mgotts 那样的设置(在连接有线网卡时禁用无线网卡),或者没有方便的方法(飞机开关)来手动禁用无线网卡,某些操作系统可能会拒绝接受第二个网卡上的地址,如果它们进行 ARP 检查以确保 IP 可用并自行回复(似乎在某些情况下,Windows XP 会以这种方式混淆自己)。
无线和有线网卡使用相同 IP 设置还有另一个缺点(如果您没有明确管理以便每次只有一个网卡处于活动状态)。当其他系统为 IP 执行 ARP 时,它们可以同时从无线和有线网卡获得回复。在这种情况下,它们将选择哪个 MAC 地址是一个难题(并且可能倾向于排在第二位的较慢的 MAC 地址)。因此,即使您将路由设置为优先选择较快的有线网卡(在 MacOS X 上最容易做到,但在其他系统上也有可能),其他系统的返回流量也可能会发送到您的无线网卡。如果您确实管理以便每次只有一个网卡处于活动状态,那么在切换时您可能会遇到几秒钟的“故障”,而其他系统的 ARP 表中仍有其他 MAC 地址。
(说到管理两个 NIC,以便只有一个处于活动状态 - 有一个MacOS X 提示发布使用多个版本的脚本来完全自动地完成此操作。
相同 IP 设置的最大优势之一是,即使您从一个接口切换到另一个接口,现有的 TCP 或 VPN 连接仍将继续工作。如果您只是进行网络操作,这可能并不重要,因为在不同的 IP 设置中,您的浏览器将透明地重新创建连接(并且在 Web 服务器端,如果您的防火墙将两者都 NAT 到相同的外部 IP,它甚至不会看到 IP 更改)。但如果您使用 VPN 或 SSH 连接,则不必重新建立这些连接非常方便。
配置同 IP 设置最棘手的部分可能是让 DHCP 服务器接受它;至少某些版本的DD-WRT 不允许, 和DNSmasq DHCP 服务器要求你以特定方式执行此操作- 从个人经验来看,我可以说 OpenWRT 会允许您进行设置,但 DNSmasq DNS/DHCP 服务器不会启动。相关 ServerFault 问题讨论了如何才能使它适用于 Windows 2003 DHCP 服务器。如那里所述,可能需要在两个 NIC 上强制使用相同的 MAC 地址(根据硬件和操作系统,您可能需要将无线 MAC 克隆到有线 NIC 上)。
对两个 NIC 使用相同的 MAC 地址可能还有助于缓解由于其他系统上的陈旧 ARP 表条目而导致的上述“故障”,并且即使您无法控制 DHCP 服务器(例如在您的工作场所),也可以获得相同的 IP 设置。在系统的所有 NIC 上设置相同的 MAC 有一些先例 - 旧的 DEC 系统这样做了,Sun/Solaris 系统可能仍然这样做。这样做有一些问题,这可能是大多数系统不这样做的原因。
如果您的无线 AP 或交换机已实施端口安全选项,您可能会发现 MAC 在一个 NIC 上被阻止,并且在具有多个交换机的大型桥接网络中,与远距离系统的连接“故障”可能会更严重,除非您的笔记本电脑正在通过所有中间交换机主动发送流量(广播或多播流量即可),以便它们更新其转发表,并且到共享 MAC 地址的流量转到当前活动的 NIC。
如果您使用 IPv6,则可能还需要对两个 NIC 使用相同的 MAC 地址才能获得相同的 IP 地址,IPv6 通常不使用 DHCP,而是将 MAC 地址嵌入 IPv6 地址的低 64 位(主机部分)。