我有 dhcpd 与多个子网一起运行。我有重复的 MAC 地址,但位于不同的子网中,并且配置为不同的 VLAN。这个MAC会给DHCP带来一些问题吗?
DHCP 如何知道租约请求来自不同的 VLAN?它会正确给出地址吗?
答案1
你的问题的答案是肯定的,这非常有效。
在启动期间,isc dhcpd 服务器将首先读取其配置文件中的子网块。此后,守护程序根据匹配的子网确定要使用哪些接口。服务器一启动,客户端 DHCP 请求就会得到应答。这些是根据请求所针对的接口进行处理的。在此过程中,服务器接口的 MAC 地址无关紧要。
假设您有两个可用的 VLAN。 VLAN 通常从其父接口派生 MAC 地址,因此很可能有重复的 MAC 地址:
[test@testrouter ~]$ ip addr show enp3s0.2
2: enp3s0.2@enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 02:00:00:00:00:20 brd ff:ff:ff:ff:ff:ff
inet 192.168.2.1/24 brd 192.168.2.255 scope global enp3s0.20 valid_lft forever preferred_lft forever
[test@testrouter ~]$ ip addr show enp3s0.3
3: enp3s0.3@enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 02:00:00:00:00:20 brd ff:ff:ff:ff:ff:ff
inet 192.168.3.1/24 brd 192.168.3.255 scope global enp3s0.20 valid_lft forever preferred_lft forever
现在,我们在 dhcpd.conf 文件中创建两个子网,如下所示:
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.101 192.168.2.151;
option subnet-mask 255.255.255.0;
option routers 192.168.2.1;
}
subnet 192.168.3.0 netmask 255.255.255.0 {
range 192.168.3.101 192.168.3.151;
option subnet-mask 255.255.255.0;
option routers 192.168.3.1;
}
在 dhcpd 服务器启动期间,日志文件中会出现以下消息:
[test@testrouter ~]$ journalctl -u dhcpd | grep LPF
dhcpd[1263]: Listening on LPF/enp3s0.2/02:00:00:00:00:20/192.168.2.0/24
dhcpd[1263]: Sending on LPF/enp3s0.2/02:00:00:00:00:20/192.168.2.0/24
dhcpd[1263]: Listening on LPF/enp3s0.3/02:00:00:00:00:20/192.168.3.0/24
dhcpd[1263]: Sending on LPF/enp3s0.3/02:00:00:00:00:20/192.168.3.0/24
正如您所看到的,正确的接口已匹配。 192.168.3.0/24 子网通过该接口提供服务enp3s0.3
,尽管两个接口的 MAC 地址相同。
最后但并非最不重要的一点是:可以更改 VLAN 接口的 MAC 地址。请使用ip
这样的命令:
ip link set dev enp3s0.3 address 02:00:00:00:00:20
答案2
在正确的 VLAN 实施中,每个 VLAN 都有一个唯一的子网。
正如您所说,您的 DHCP 服务器知道 MAC 地址与不同的子网关联。从这个意义上说,DHCP 间接知道它们与不同的 VLAN 关联。