为什么 CentOS 上的默认 eth0 接口默认处于关闭状态?

为什么 CentOS 上的默认 eth0 接口默认处于关闭状态?

我已经有点熟悉 Debian 或 Ubuntu 等 Linux 发行版(是的,非常相似),但我想尝试基于 Red Hat 的 CentOS 6.2。我已将其安装在 VirtualBox 中的 Windows 7 主机上,并尝试使用它。

我遇到一个小问题,即:默认eth0接口默认是down的。我使用 NAT 选项(虚拟机位于主机“后面”)。即使我调出界面ifconfig eth0 up,它也不会立即工作。调出界面后我得到这个:

eth0      Link encap:Ethernet  HWaddr 08:00:27:0F:00:8A
          inet6 addr: fe80::a00:27ff:fe0f:8a/64 Scope:Link
          UP BROADCAST RUNNNING MULTICAST MTU:1500 Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carriers:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 b)  TX bytes:468 (468.0 b)
          Interrupt:19 Base address:0xd020

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

virbr0    Link encap:Ethernet  HWaddr 52:54:00:75:C2:9B
          inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
[root@centos ~]# _

在 CentOS 机器上配置网络还需要做什么?

答案1

编辑/etc/sysconfig/network-scripts/ifcfg-$IFNAME。将该ONBOOT行的值更改为yes

$IFNAMEeth0在许多 EL6 盒子上,但在使用一致的网络设备命名方案,它可能是其他东西,比如en3p1.此方案在 EL6 中是可选的,但在 EL7 及更高版本中是默认的。使用该命令ip link获取网络接口列表,包括当前关闭的网络接口。

在您以后的安装中,请多加注意。您忽略了网络配置部分中的一个选项,该选项让您告诉它在启动时启动接口。在 EL6 及更高版本中,此启动选项默认处于关闭状态,而在以前的版本中,默认情况下处于打开状态。

要使网络接口在安装时首次启动时出现,请转至网络配置屏幕中的Configure→选项卡,然后选中标有 的框。GeneralAutomatically connect to the network when available

至于为什么他们改变了这一点,我猜是出于安全原因。它让您有机会在第一次打开网络接口之前将默认设置稍微收紧一些,从而将盒子暴露给外界。

答案2

如果您的网络中没有 DHCP 服务器,则必须设置静态 IP 地址。请考虑以下示例:

vim /etc/sysconfig/network-scripts/ifcfg-eth0

BOOTPROTO=none
DEVICE=eth0
IPADDR=192.168.1.10 # your IP address
NETMASK=255.255.255.0 # your netmask
NETWORK=192.168.1.0 
ONBOOT=yes

将 GATEWAY 添加到您的/etc/sysconfig/network文件中:

NETWORKING=yes
NETWORKING_IPV6=yes
HOSTNAME=hostname.domainname
GATEWAY=192.168.1.1 # your gateway

发出以下命令以在引导时启动网络:

chkconfig network on

重新启动您的网络服务:

service network restart

查看您的网络接口

ifconfig

答案3

您没有提到您使用的 CentOS 版本。如果我没记错的话,6.x 默认使用 NetworkManager。

我很少在我的服务器上安装 X windows,所以 NetworkManager 对我来说只是一个痛苦。我禁用它并启用标准“网络”服务。

chkconfig NetworkManager 关闭
chkconfig 网络打开

服务网络管理器停止
服务网络启动

要在接口上启用 DHCP,请运行system-config-network、编辑相应的设备、保存并重新启动网络服务。或者,您可以编辑/etc/sysconfig/network-scripts/ifcfg-eth0和添加

ONBOOT=yes
BOOTPROTO=dhcp

保存更改并重新启动网络服务。

答案4

根据我从实验和阅读中收集到的信息,我同意网络管理器似乎默认加载,但网络服务不加载。

最近,当我启动一台虚拟机主机时,ifconfig 输出中没有显示 eth0,这是因为我NM_CONTROLLED=no/etc/sysconfig/network-scripts/ifcfg-eth0文件中的网络管理器正在运行,但网络未运行。

我一运行service network restart,eth0 就出现在 ifconfig 输出中。然而,重新启动后,它又消失了。

对我来说,解决方案似乎是设置NM_CONTROLLED=no/etc/sysconfig/network-scripts/ifcfg-eth0然后在启动时打开网络服务(chkconfig network on正如 uther 和 alexnorthsoul 指出的那样)。我可以(应该?)默认关闭 NetworkManager,但它现在对我有用,而且我对接触其他任何东西感到紧张。

顺便说一句,我的目标是让系统尊重我选择的静态 IP。当我让 NetworkManager 运行并设置NM_CONTROLLED=yes(或省略它)时,我在 ifconfig 中显示了 eth0,但该地址是 DHCP 地址,而不是我的静态 IP。因此,关闭 NetworkManager 可以让我免受 DHCP 的影响,而打开网络则使其加载包括静态 IP 在内的我的设置。

我不是系统管理员,而是一名开发人员,因此这些不是 CentOS 专家的话,而只是配置我所需的虚拟机的幸存者。

相关内容