CentOS 7 沒有從 DHCP 設置我的網關
我有一個 CentOS 7 的最小安裝。
我已禁用網路管理器,因為我想以“老派”方式設置我的網路。
systemctl stop NetworkManager systemctl disable NetworkManager chkconfig network on service network restart
我的網路配置(/etc/sysconfig/network-scripts/ifcfg-ens4)如下所示:
DEVICE="ens4" TYPE="Ethernet" NOZEROCONF="yes" PERSISTENT_DHCLIENT="1" BOOTPROTO="dhcp" DEFROUTE="yes" PEERROUTES="yes" IPV4_FAILURE_FATAL="no" NAME="ens4" ONBOOT="yes" NM_CONTROLLED="no"
我的 DHCP 租約文件如下所示:
lease { interface "ens4"; fixed-address 144.76.190.238; option subnet-mask 255.255.255.255; option routers 144.76.190.224; option dhcp-lease-time 86400; option dhcp-message-type 5; option domain-name-servers 8.8.8.8,8.8.4.4; option dhcp-server-identifier 144.76.190.224; option host-name "hello.example.com"; option domain-name "example.com"; renew 2 2014/10/21 05:44:47; rebind 2 2014/10/21 15:04:03; expire 2 2014/10/21 18:04:03; }
現在,我的問題是 DHCP 中的“路由器”欄位似乎被 CentOS 7 忽略了。IP、網路遮罩和主機名設置正確,但我的預設路由沒有設置(空白)。
如您所見,我使用的是網路遮罩 255.255.255.255,因此網關 IP 在我的網路“外部”。因此需要額外的路線。如果我手動執行這些:
route add -host 144.76.190.224 dev ens4 route add default gw 144.76.190.224
然後一切正常:
Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 144.76.190.224 0.0.0.0 UG 0 0 0 ens4 144.76.190.224 0.0.0.0 255.255.255.255 UH 0 0 0 ens4
我測試過的所有其他 linux 發行版,包括 Centos 6,都可以正常工作並從 DHCP 自動設置這兩個路由。
所以我的問題是這樣的;為什麼它沒有在 CentOS 7 中自動設置?是否發生了一些變化,我必須向 DHCP 客戶端添加一些額外的標誌才能使其工作?
似乎 CentOS 6 使用 dhclient 版本 4.1.1-P1 而 CentOS 7 使用 4.2.5。也許他們在這些版本之間改變了一些東西?
更新 1:
我查看了 dhclient 的發行說明,發現它適用於 4.0.0:
“如果為 IPv4 地址提供的子網遮罩是 /32,則更新 dhclient 腳本以創建預設網關的主機路由。這允許客戶端在運營商不想要客戶端的“俘虜”網路環境中工作直接串音。”
所以這應該從很久以前就開始工作了。也許 CentOS 7 已將其從“dhclient-script”中刪除?
更新 2:
我將文件“/sbin/dhclient-script”從 CentOS 6 安裝複製到 CentOS 7 伺服器。現在一切正常。我將調查他們做了哪些更改,但似乎他們在 CentOS 7 中引入了一個錯誤。
更新 3:
我弄清楚了這個問題。他們在新版本的 /sbin/dhclient-script 中添加了一個(愚蠢的)ping 檢查,它會在添加網關之前嘗試 ping 網關。由於我在 DHCP 伺服器上的防火牆中阻止 ping,它沒有響應,因此 dhclient-script 沒有添加任何預設路由。
確保 DHCP 伺服器響應 ping。否則,/sbin/dhclient-script 將無法正確設置預設路由。
這個額外的“檢查”似乎已被添加到更高版本的 dhclient 或特別添加在 CentOS 7 中。在 CentOS 7 之前的版本中不存在 ping-check。
也許您已經設置了預設網關
/etc/sysconfig/network/routes
?如果沒有,您至少可以配置您手動路由的內容在該文件中自動完成:
144.76.190.224 - 255.255.255.255 ens4 default 144.76.190.224 - ens4