我已禁用网络管理器,因为我想以“旧学校”的方式设置我的网络.
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 defualt 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:
“更新了dhclient-script以创建默认的主机路由
网关,如果提供的IPv4地址的子网掩码是/ 32.这个
允许客户端在“专属”网络环境中工作
操作符不希望客户直接串扰.“
所以这应该是很久以前的工作了.也许CentOS 7已经从“dhclient-script”中删除了它?
更新2:
我将文件“/ sbin / dhclient-script”从CentOS 6安装复制到CentOS 7服务器.现在一切正常.我将调查他们所做的更改,但似乎他们在CentOS 7中引入了一个错误.
更新3:
我想出了这个问题.他们在新版本的/ sbin / dhclient-script中添加了(愚蠢的)ping检查,尝试在添加网关之前ping网关.当我在DHCP服务器上阻止防火墙中的ping时,它没有回答,因此dhclient-script没有添加任何默认路由.