我有一台 CentOS 7 机器,有 2 个 NIC,eth0 和 eth1。我通过编辑其配置和设置禁用了 eth0(因为我的设置不需要它):
ONBOOT="no"
在我按如下方式配置 eth1(我的 LAN 接口)后,它仍然不会请求 DHCP:
DEVICE="eth1"
ONBOOT="yes"
NM_CONTROLLED="no"
BOOTPROTO="dhcp"
IPADDR="10.0.0.5" # This is the IP assigned to this machine on the private network.
NETMASK="255.255.0.0"
IPV6INIT="no"
MTU="1450"
现在每次我重新启动系统时,我都必须手动使用该命令dhclient eth1
来获取 DHCP 地址。我还能做什么来解决这个问题?我认为设置 BOOTPROTO 是关键!
答案1
如果您已经设置了“ BOOTPROTO=dhcp
”,则无需提供 IPADDR、NETMASK 和 GATEWAY,因为它会绕过它们。对于 dhcp,使用方式如下:
vi /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
NAME=eth1
UUID=ACCORDING_TO_YOURS
DEVICE=eth1
ONBOOT=yes
保存文件后,只需重新启动服务即可进行交叉检查。
# systemctl restart network
注意:首先,检查您的网络是静态的还是 dhcp。
答案2
您应该为第二个 NIC 创建 2 个虚拟接口:eth1
一个用于 DHCP,另一个eth1:1
用于您的专用网络。
eth1
在(文件)的配置中/etc/sysconfig/network-scripts/ifcfg-eth1
,您应该使用DEVICE="eth1"
,BOOTPROTO="dhcp"
和不 IPADDR
和NETMASK
。
eth1:1
在(文件)的配置中/etc/sysconfig/network-scripts/ifcfg-eth1:1
,您应该为本地专用网络配置静态参数,例如IPADDR
、、NETMASK
和GATEWAY
(这很重要!)DEVICE="eth1:1"
和BOOTPROTO="static"
。
因此,你的配置文件看起来应该像这样:
在 /etc/sysconfig/network-scripts/ifcfg-eth1 中:
DEVICE="eth1"
ONBOOT="yes"
NM_CONTROLLED="no"
BOOTPROTO="dhcp"
IPV6INIT="no"
MTU="1450"
/etc/sysconfig/network-scripts/ifcfg-eth1:1:
DEVICE="eth1:1"
ONBOOT="yes"
NM_CONTROLLED="no"
BOOTPROTO="static"
IPADDR="10.0.0.5" # This is the IP assigned to this machine on the private network.
NETMASK="255.255.0.0"
IPV6INIT="no"
MTU="1450"
在这种情况下,您的系统将以正确的网络配置启动。
PS:如果您不再需要直接访问您的私人网络10.0.X.X
,您可以只使用第一个配置文件/etc/sysconfig/network-scripts/ifcfg-eth1
。