使用指派的 IP 位址和閘道在不同子網路上為 KVM 設定 DHCPD

使用指派的 IP 位址和閘道在不同子網路上為 KVM 設定 DHCPD

我有一個IP範圍為123.123.123.1/24的dedi,問題是網關位址:111.111.111.254,它位於完全不同的子網路上。我已經設定了橋接器和 KVM 虛擬化。

主機節點上的 /etc/dhcpd.conf。

subnet 0.0.0.0 netmask 0.0.0.0 {
authoritative;
default-lease-time 21600000;
max-lease-time 432000000;
}
 ddns-update-style ad-hoc;

host kvm111.0 {
hardware ethernet 02:00:00:ce:fd:ab;
option routers 111.111.111.254;
option subnet-mask 255.255.255.0;
fixed-address 123.123.123.2;
option domain-name-servers 8.8.8.8,8.8.4.4;
}

然後,我在該 HWID 上設定了 KVM 虛擬機器 (VM),並啟用了 Windows 作業系統和 dhcp。運作良好。 Windows VM 取得 IP 123.123.123.2,閘道位於 111.111.111.254。

但是當我將VM的作業系統更改為Debian 6時,它不起作用。我登入虛擬機器發現網關沒有分配。當我打字時路由新增預設閘道111.111.111.254答案是:

SIOADDCART: no such process

這是因為網關與指派的 IP 位址位於不同的子網路中。所以我必須在虛擬機器上執行此操作:

路由新增 111.111.111.254/32 dev eth0

路由新增預設閘道111.111.111.254

然後它就會起作用。但由於我想透過主機節點實現自動化(而不是透過虛擬機器手動執行),所以我必須透過 /etc/dhcpd.conf 來執行此操作

有人知道該怎麼做路由新增 111.111.111.254/32 dev eth0通過 /etc/dhcpd.conf ?

答案1

答案是無類別靜態路由 (RFC3442)。在 isc dhcp 伺服器中,您必須手動指定該選項。

這個網站簡潔地說明如何以適用於 Windows 和 Linux 用戶端的方式進行操作。

這是縮寫版本:

將以下內容加入頂部的 dhcpd.conf

option rfc3442-classless-static-routes code 121 = array of integer 8;
option ms-classless-static-routes code 249 = array of integer 8;

在適當的子網路區塊中新增以下兩個選項行

option rfc3442-classless-static-routes 32, 111, 111, 111, 254, 0, 0, 0, 0, 111, 111, 111, 254;
option ms-classless-static-routes 32, 111, 111, 111, 254, 0, 0, 0, 0, 111, 111, 111, 254;

這應該使用 dhcp 分配的位址為 111.111.111.254 線上連結建立靜態路由,並保留預設路由器 111.111.111.254。特殊的路由器值 0.0.0.0 表示在線。 rfc 聲明客戶端不需要實現無類靜態路由,但 Windows 透過其 ms 選項實現,Linux 的 dhclient(測試過 debian7、rhel6.4)實現,並且我所有的 IPMI 和 PXE 客戶端也實現。您應該進行測試以確保它適用於您的客戶,但我相當有信心它會起作用。可以使用退出掛鉤使 dhclient 解釋選項 121,如果它還不支援開箱即用。

最糟糕的情況是,在主機節點上,您可以新增 LAN 範圍內的 IP(在範例中為 123.123.123.254),並告訴用戶端將其用作預設閘道。

相關內容