dnsmasq:将 2 个 MAC 地址映射到同一个 IP 地址

dnsmasq:将 2 个 MAC 地址映射到同一个 IP 地址

可以将 2 个不同的 MAC 地址映射到同一个 IP 地址吗?

为了备份,我需要从服务器重新连接到便携式设备,并且我希望无线和有线接口具有相同的 IP。

openwrt 网络界面不接受具有相同 IP 地址的多个 dhcp 条目,但也许有解决方法?

5 月 23 日补充澄清

我应该说清楚任何时候,便携式设备都只有一个网络接口连接到网络(因此交换机不会混淆)。最初,我为接口分配了 2 个不同的 IP 地址,具有相同的 DNS 名称,但效果不佳(当我获得错误的 IP 时会超时)。但我想对两者使用相同的名称,因为它在我的备份脚本中是硬编码的。

对困惑感到抱歉。

答案1

(随机半主观评论:很少看到对一个问题有如此多不具建设性且明显不准确的答案和评论)

与这里的其他人不同,我认为你的请求实际上非常简单,而且已经自 2.46 版起在 dnsmasq 中受支持这是我唯一的原因从 dd-wrt ​​切换过来。运行 OpenWRT 大约一年后,我现在知道实际上还有更多理由可以切换,但这不是重点。

我在跑Backfire 10.04-rc4

May 23 17:45:16 gateway dnsmasq[1925]: started, version 2.55 cachesize 150

我的配置:

$ cat /etc/config/dhcp

config 'dnsmasq'
    option 'domainneeded' '1'
    option 'boguspriv' '1'
    option 'localise_queries' '1'
    option 'rebind_protection' '1'
    option 'rebind_localhost' '1'
    option 'expandhosts' '1'
    option 'authoritative' '1'
    option 'readethers' '1'
    option 'leasefile' '/tmp/dhcp.leases'
    option 'resolvfile' '/tmp/resolv.conf.auto'
    option 'enable_tftp' '1'
    option 'domain' 'domain.net'
    option 'local' '/domain.net/'

config 'dhcp' 'lan'
    option 'interface' 'lan'
    option 'start' '100'
    option 'limit' '150'
    option 'leasetime' 'infinite'

config 'dhcp' 'wan'
    option 'interface' 'wan'
    option 'ignore' '1'
    option 'dynamicdhcp' '0'

config 'dhcp'
    option 'interface' 'dmz'
    option 'start' '100'
    option 'limit' '150'
    option 'leasetime' '12h'

config 'host'
    option 'name' 'travelmate'
    option 'mac' '00:11:22:33:44:55 aa:bb:cc:dd:ee:ff'
    option 'ip' '192.168.1.111'

config 'host'
    option 'name' 'mobilitymac'
    option 'mac' '99:88:77:66:55:44 ff:ee:dd:cc:bb:aa'
    option 'ip' '192.168.1.104'

享受此设置提供的无缝过渡,只要您切换的时间不长,所有现有会话都将保持活动状态。

答案2

我做了一些研究。

我了解到的第一件事是,可以根据 MA​​C 地址以外的标准分配 DHCP 租约。

从 dhcp常问问题

什么是客户端 ID?

DHCP 协议中所谓的客户端 ID 是指协议用来识别客户端计算机的 ID。默认情况下,DHCP 实现通常使用客户端的 MAC 地址来实现此目的,但 DHCP 协议允许其他选项。某些 DHCP 实现具有设置选项来指定所需的客户端 ID。MAC 地址的一种替代方法是您选择的字符串。无论如何,为了使 DHCP 正常运行,您必须确保没有其他客户端正在使用您选择的客户端 ID,并且您必须确保 DHCP 服务器会接受它。

然后,虽然 openWRT 上的 luci 网络界面显然不支持它,但 dnsmasq 本身支持 client_id 和多个 MAC 地址(有一些警告)。

来自 dnsmasq手册页

-G,--dhcp-host=[hwaddr][,id:client_id|*][,set:tag][,ipaddr][,hostname][,lease_time][,ignore] 为 DHCP 服务器指定每个主机的参数。这样,​​具有特定硬件地址的机器始终分配相同的主机名、IP 地址和租约时间。这样指定的主机名将覆盖机器上 DHCP 客户端提供的任何主机名。还可以省略硬件地址并包含主机名,在这种情况下,IP 地址和租约时间将适用于任何声明该名称的机器。例如,--dhcp-host=00:20:e0:3b:13:af,wap,infinite 告诉 dnsmasq 为硬件地址为 00:20:e0:3b:13:af 的机器指定名称 wap,并提供无限的 DHCP 租约。 --dhcp-host=lap,192.168.0.199 告诉 dnsmasq 始终为机器 lap 分配 IP 地址 192.168.0.199。

(...)

允许使用客户端标识符而不是硬件地址来识别主机,方法是在主机前加上“id:”。因此:--dhcp-host=id:01:02:03:04,..... 指的是客户端标识符为 01:02:03:04 的主机。还允许将客户端 ID 指定为文本,如下所示:--dhcp-host=id:clientidastext,.....

(...)

特殊情况下,可以包含多个硬件地址。例如:--dhcp-host=11:22:33:44:55:66,12:34:56:78:90:12,192.168.0.2 这允许将 IP 地址与多个硬件地址关联,并允许 dnsmasq 在另一个硬件地址请求租约时放弃对其中一个硬件地址的 DHCP 租约。请注意,这样做很危险,只有在任何时候只有一个硬件地址处于活动状态时,它才会可靠地工作,并且 dnsmasq 无法强制执行这一点。例如,为具有有线和无线接口的笔记本电脑分配稳定的 IP 地址很有用。

我选择了多 mac 解决方案(因为我没有尝试找出如何在客户端指定客户端 ID,这必须为每个单独的客户端执行,而多 mac 替代方案是适用于家中所有便携式设备的一种解决方案。)

我绕过了 luci 接口,直接在 /etc/dnsmasq.conf 中添加了以下行:

dhcp-hosts文件=/etc/dnsmasq-dhcphosts.conf

并且 /etc/dnsmasq-dhcphosts.conf 包含以下格式的行:

mac1,mac2,ip

(我将此配置保存在单独的文件中,以防止下次更新时被覆盖。)

工作正常。

答案3

您的目标:让笔记本电脑的恒定主机名始终指向笔记本电脑(的活动 IP 地址/接口)?我原本以为 dnsmasq 的组合 DNS 和 DHCP 服务可以做到这一点,即当客户端执行 DHCPDISCOVER/DHCPREQUEST 时,它会报告其主机名,然后 dnsmasq 将主机名与分配的 IP 地址相关联。这是我的经验,但我必须承认,我还没有尝试过连接到一个网络 i/f,然后断开连接(没有进行明确释放)并再次连接到另一个网络 i/f。

假设主机名为“laptop”,当您从一个接口切换到另一个接口后,向 OpenWRT 设备查询“laptop”时会发生什么?

答案4

如果您的交换机支持此功能,我会感到非常惊讶。您可能更幸运,因为两个网络接口的 MAC 地址相同。

话虽如此,我绝对同意 Holocryptic 的观点,这里有龙。

相关内容