我有 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 關聯。