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


17

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

对于备份,我需要从服务器重新连接到便携式计算机,并且我想为无线和有线接口使用相同的IP。

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

23月5日添加的说明

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

对困惑感到抱歉。


我敢肯定,如果您尝试这样做,将会出现恶作剧。
Holocryptic

客户端(可能还有服务器)上的操作系统在这里也可能是广
受欢迎的-Norky,

Answers:


29

(随机半意见:很少看到如此大量的非建设性和简单的不正确答案和对问题的评论)

与这里的其他人形成对比,我声称您的请求实际上非常基本,并且自从 IIRC 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'

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


4
会赞成这个答案,因为它以非常详细的方式回答了我的问题,但还没有因果报应。
sleepyMonad 2011年

还有额外的布朗尼点,因为luci(网络界面)似乎实际上支持这种格式。
sleepyMonad 2011年

1
昨晚,我碰巧遇到一种情况,当连接eth0时,我仍然不知道wlan0是否仍连接(暂存brcm80211可能有点不足)。dnsmasq对此没有特别的问题,它只是为eth0分配了一个新IP。不好的是,然后您必须进入路由器,停止dnsmasq并编辑/杀死/tmp/dhcp.leases,重新启动dnsmasq才能返回所需的操作模式。
lkraav

2
为了提炼出我认为最重要的部分,您可以在一个条目中(在此文件中或在luci界面中)包含多个MAC地址。因此,与其用一条线ab:cd:ef:01:02:03和另一条线04:05:06:07:08:09隔开,不如简单地用一个空格将两者分开,例如使一个条目ab:cd:ef:01:02:03 04:05:06:07:08:09
teeks99

6

我做了一些研究。

我了解到的第一件事是可以根据除MAC地址以外的条件分配DHCP租约。

从dhcp 常见问题解答

什么是客户编号?

在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始终将计算机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地址分配给同时具有有线和无线接口的便携式计算机很有用。

我选择了multi-mac解决方案(因为我没有尝试找出如何在客户端上指定客户端ID,这是每个单独的客户端都必须完成的工作,而multi-mac替代方案是适用于房屋中所有便携式设备的一种解决方案。)

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

dhcp-hostsfile = / etc / dnsmasq-dhcphosts.conf

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

mac1,mac2,ip

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

工作良好。


1

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

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


1

为什么要使用DHCP?

您可以在两个接口上手动配置一个静态IP地址,然后使用您喜欢的一个IP地址(当然,让另一个断开连接)。


好吧,因为这是最简单的方法,所以该配置适合我连接到的所有网络(至少我希望如此)。
sleepyMonad 2011年

0

如果您的交换机能够支持这一点,我将感到非常惊讶。为两个网络接口提供相同的MAC地址可能会更好。

话虽如此,我绝对同意Holocryptic,这是龙。


感谢您建议使用相同的MAC;尽管我不确定该怎么做。也许这是我可以从BIOS中配置的内容...
sleepyMonad 2011年

通常,最简单的方法是在OS中进行设置,而在Windows上则位于网络接口的属性下(手动设置MAC地址)。
happyhairydude

0

不,不可能。但是大多数NIC允许您通过管理方式设置MAC,也可以将两个NIC都设置为相同的MAC。

在大多数* nix boxen上,您通常可以执行此操作,然后为这两者设置故障转移LAGG接口(优先选择有线),以允许您在不断开TCP会话的情况下热插拔有线连接。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.