Dan*_*sta 8 dhcp centos dhclient centos7
我有一个 CentOS 7 的最小安装。
我已禁用网络管理器,因为我想以“老派”方式设置我的网络。
systemctl stop NetworkManager
systemctl disable NetworkManager
chkconfig network on
service network restart
Run Code Online (Sandbox Code Playgroud)
我的网络配置 (/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"
Run Code Online (Sandbox Code Playgroud)
我的 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;
}
Run Code Online (Sandbox Code Playgroud)
现在,我的问题是来自 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
Run Code Online (Sandbox Code Playgroud)
然后一切正常:
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
Run Code Online (Sandbox Code Playgroud)
我测试过的所有其他 linux 发行版,包括 Centos 6,都可以正常工作并从 DHCP 自动设置这 2 个路由。
所以我的问题是这样的;为什么它不会在 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 中专门添加。7 之前的 CentOS 版本中不存在 ping 检查。
| 归档时间: |
|
| 查看次数: |
20297 次 |
| 最近记录: |