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

sle*_*nad 20 dhcp openwrt

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

对于我的备份,我需要从服务器连接回便携式设备,并且我希望无线和有线接口都具有相同的 IP。

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

5 月 23 日补充说明

我应该明确指出,在任何给定时间只有一个便携式网络接口连接到网络(因此开关不应该被混淆)。最初,我为接口分配了 2 个不同的 IP 地址,具有相同的 DNS 名称,但这并没有很好地工作(当我得到错误的 IP 时超时)。但我想对两者使用相同的名称,因为它在我的备份脚本中是硬编码的。

对困惑感到抱歉。

lkr*_*aav 35

(随机的半自以为是的评论:很少看到对问题的大量非建设性和简单不准确的答案和评论)

与这里的其他人相比,我声称您的请求实际上是非常初级的,并且自 dnsmasq 版本 2.46,IIRC以来就得到了支持。这是我从 dd-wrt ​​切换的唯一原因。运行 OpenWRT 大约一年后,我现在知道实际上有更多的理由要切换,但这不是重点。

我正在运行逆火 10.04-rc4

May 23 17:45:16 gateway dnsmasq[1925]: started, version 2.55 cachesize 150
Run Code Online (Sandbox Code Playgroud)

我的配置:

$ 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'
Run Code Online (Sandbox Code Playgroud)

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

  • 会赞成这个答案,因为它以非常详细的方式回答了我的问题,但还没有业力。 (5认同)
  • 为了提炼我认为的重要部分,您可以在单个条目中包含多个 MAC 地址(在此文件或 luci 界面中)。因此,不要用 `ab:cd:ef:01:02:03` 写一行,再用 `04:05:06:07:08:09` 写一行,只需用一个空格分隔两个条目,例如`ab:cd:ef:01:02:03 04:05:06:07:08:09`。 (3认同)

sle*_*nad 6

我做了一些研究。

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

从 dhcp常见问题解答

什么是客户 ID?

就 DHCP 协议而言,所谓的客户端 ID 是协议用于识别客户端计算机的任何内容。默认情况下,DHCP 实现通常为此目的使用客户端的 MAC 地址,但 DHCP 协议允许其他选项。一些 DHCP 实现有一个设置选项来指定您想要的客户端 ID。MAC 地址的一种替代方法是您选择的字符串。在任何情况下,为了使 DHCP 起作用,您必须确定没有其他客户端正在使用您选择的客户端 ID,并且必须确保 DHCP 服务器会接受它。

然后,尽管 openWRT 上的 luci Web 界面显然不支持它,但 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 总是为机器分配 IP 地址 192.168.0.199。

(……)

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

(……)

作为一种特殊情况,可以包含多个硬件地址。eg: --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-hostsfile=/etc/dnsmasq-dhcphosts.conf

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

mac1,mac2,ip

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

工作正常。