dnsmasq,多个 VLAN 上的一个主机

dnsmasq,多个 VLAN 上的一个主机

我已dnsmasq配置在两个网络上提供静态 dhcp;一个在主接口上,另一个在连接到主接口的 vlan 上。接口配置如下所示:

3: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    inet 172.16.0.1/24 brd 172.16.0.255 scope global noprefixroute enp2s0
       valid_lft forever preferred_lft forever
13: enp2s0.200@enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    inet 172.16.1.1/24 brd 172.16.1.255 scope global noprefixroute enp2s0.200
       valid_lft forever preferred_lft forever

看起来dnsmasq.conf像:

log-dhcp
log-facility=-
dhcp-range=172.16.0.1,static
dhcp-range=172.16.1.1,static
dhcp-leasefile=/dnsmasq/leases
dhcp-hostsdir=/dnsmasq/hosts
dhcp-authoritative

我在同一个网络上还有另一台主机,它有类似的接口配置:一个接口在本机 VLAN 上,一个接口在 VLAN 200 上。我为该主机设置了一对静态地址,如下 /dnsmasq/hosts/52:54:00:e1:e6:4b所示:

52:54:00:e1:e6:4b,172.16.0.73,10m
52:54:00:e1:e6:4b,172.16.1.63,10m

当主机上的第一个接口启动时,我在 dnsmasq日志中看到:

dnsmasq-dhcp[6]: 3876724415 available DHCP subnet: 172.16.0.1/255.255.255.0
dnsmasq-dhcp[6]: 3876724415 DHCPREQUEST(enp2s0) 172.16.0.73 52:54:00:e1:e6:4b
dnsmasq-dhcp[6]: 3876724415 tags: known, enp2s0
dnsmasq-dhcp[6]: 3876724415 DHCPACK(enp2s0) 172.16.0.73 52:54:00:e1:e6:4b

这正是我所期望的。但当第二界面出现,我看到:

dnsmasq-dhcp[6]: 2375610969 available DHCP subnet: 172.16.1.1/255.255.255.0
dnsmasq-dhcp[6]: 2375610969 DHCPREQUEST(enp2s0.200) 172.16.1.63 52:54:00:e1:e6:4b
dnsmasq-dhcp[6]: 2375610969 DHCPNAK(enp2s0.200) 172.16.1.63 52:54:00:e1:e6:4b wrong address
...
dnsmasq-dhcp[6]: 367379373 available DHCP subnet: 172.16.1.1/255.255.255.0
dnsmasq-dhcp[6]: 367379373 DHCPDISCOVER(enp2s0.200) 172.16.1.63 52:54:00:e1:e6:4b
dnsmasq-dhcp[6]: 367379373 tags: known, enp2s0.200
dnsmasq-dhcp[6]: 367379373 DHCPOFFER(enp2s0.200) 172.16.1.63 52:54:00:e1:e6:4b
...
dnsmasq-dhcp[6]: 367379373 DHCPREQUEST(enp2s0.200) 172.16.1.63 52:54:00:e1:e6:4b
dnsmasq-dhcp[6]: 367379373 tags: known, enp2s0.200
dnsmasq-dhcp[6]: 367379373 DHCPACK(enp2s0.200) 172.16.1.63 52:54:00:e1:e6:4b

初始DHCPDISCOVER结果为DHCPNAK,可能是因为给定的 MAC 地址已有租约。但该租约位于不同的网络上,因此这种行为似乎是错误的。

现在,当第一个接口更新时,它将经历相同的 DISCOVER/NAK/DISCOVER/OFFER/REQUEST/ACK序列。

当同一个 MAC 地址出现在不同的网络上时,如何正确配置以便为其提供不同的租约?

相关内容