為什麼 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 專家的話,而只是配置我所需的虛擬機器的倖存者。

相關內容