如何在 CentOS 7 上添加新的網路設備?
我的 VPS 分配了兩個 IP,但“ip a”僅顯示一個真實網路介面 eth0 和一個環回介面 lo。我複制
/etc/sysconfig/network-scripts/ifcfg-eth0
並/etc/sysconfig/network-scripts/ifcfg-eth1
編輯它以反映新的IP。但因systemctl restart network
錯誤而失敗:Bringing up interface eth1: Error: Connection activation failed: No suitable device found for this connection.
那麼如何添加新設備來設置 eth1?或者,我不能在不添加另一個真實網路適配器的情況下添加新設備?那麼,我可以將這兩個 IP 分配給同一個介面 eth0 嗎?如何?
更新:
我遵循@AB 的方法,但仍然無法使其工作:
TYPE=Ethernet BOOTPROTO0=none NAME0=eth0 DEVICE0=eth0 ONBOOT0=yes PREFIX0=24 IPADDR0=x.x.x.x NETMASK0=255.255.255.0 GATEWAY0=x.x.x.1 TYPE=Ethernet BOOTPROTO1=none NAME1=eth1 DEVICE1=eth1 ONBOOT1=yes PREFIX1=24 IPADDR1=y.y.y.y NETMASK1=255.255.255.0 GATEWAY1=y.y.y.1
以下配置也無法正常工作:
TYPE=Ethernet BOOTPROTO0=none NAME0=eth0 DEVICE0=eth0 ONBOOT0=yes PREFIX0=24 IPADDR0=x.x.x.x NETMASK0=255.255.255.0 GATEWAY0=x.x.x.1 TYPE=Ethernet BOOTPROTO1=none NAME1=eth0:1 DEVICE1=eth0 ONBOOT1=yes PREFIX1=24 IPADDR1=y.y.y.y NETMASK1=255.255.255.0 GATEWAY1=y.y.y.1
systemctl restart network
命令成功,但只ifconfig
顯示一個介面 eth0 和一個 lo 介面。更新:
在@AB 的答案中使用正確的配置並使用
ip a
,它可以工作!這兩個 ip 顯示在介面 eth0 下。
您可以在同一個介面上配置兩個 IP 地址。
這已記錄在RHEL 6中,但不再出現在 RHEL 7 的文件中。據推測,此配置正在逐步淘汰(例如:使用 NetworkManager 和
nmtui
),因此不再正式記錄這種不太頻繁的設置。與往常一樣,它與 CentOS 6/CentOS 7 完全相同。IPADDRn=地址
其中 address 是 IPv4 地址,n 應該是從 0 開始的連續正整數(例如,IPADDR0)。它用於在一個介面上具有****多個 IP 地址的配置。如果只配置一個地址,則可以省略。
腳本的內容
/etc/sysconfig/network-scripts/network-functions
顯示它仍然是有效的語法:expand_config () { local i=0 val for idx in '' {0..255} ; do ipaddr[$i]=$(eval echo '$'IPADDR$idx) if [ -z "${ipaddr[$i]}" ]; then [ "$idx" ] && [ $idx -ge 2 ] && break continue fi prefix[$i]=$(eval echo '$'PREFIX$idx) netmask[$i]=$(eval echo '$'NETMASK$idx) broadcast[$i]=$(eval echo '$'BROADCAST$idx) arpcheck[$i]=$(eval echo '$'ARPCHECK$idx) arpupdate[$i]=$(eval echo '$'ARPUPDATE$idx)
因此,
/etc/sysconfig/network-scripts/ifcfg-eth0
只需更改IPADDR=
為IPADDR0=
plusIPADDR1=
並對上面列表中的其他類似設置執行相同操作(例如:如果您使用的是NETMASK=
,請將其更改為NETMASK0=
plusNETMASK1=
等)。更新(在 OP 使配置內容可用之後):上面列表中唯一涉及的條目是這些(僅在最初使用時):
PREFIX NETMASK BROADCAST ARPCHECK ARPUPDATE
不是任何其他的,特別是不是:
NAME
只有一個介面。此外,
eth0:1
絕對應避免使用別名地址作為介面(例如:),這是一個過時的概念,在配置其他設置時已變得無用且容易出錯。這個答案中從未有人建議過。
GATEWAY
只有一個預設路由(即使實際上有多個介面,這裡不是這種情況)。可能有兩條不同的獨立網際網路路由的多宿主是不同的野獸,無法在這裡的同一個問題中回答。
然後最後
ifconfig
永遠不要使用該命令(它是過時 API 的一部分,無法正確顯示多個沒有兼容性標籤的 IPv4 地址(在單個介面上))。而是使用:ip address
或
ip -br address
在主機介面上顯示配置的地址。同樣,在 Linux 上顯示路由的命令最好是:ip route
而不是
route
.最後,配置
ifcfg-eth0
應該(僅)是:TYPE=Ethernet BOOTPROTO=none NAME=eth0 DEVICE=eth0 ONBOOT=yes PREFIX0=24 IPADDR0=x.x.x.x NETMASK0=255.255.255.0 PREFIX1=24 IPADDR1=y.y.y.y NETMASK1=255.255.255.0 GATEWAY=x.x.x.1
相同的網關 xxx1 最終將用於路由 yyyy 地址,除非主機提供商提供了詳細的路由文件另有說明(在這種情況下,無論如何這將需要一個單獨的問題,因為配置不再只是
ifcfg-eth0
關於並且很難掌握)。甚至有可能第二個地址的前綴/網路遮罩 PREFIX1 應該是 32 而不是 24(冗餘的 NETMASK1 然後是 255.255.255.255),但是如果沒有主機提供商的文件就無法知道這點,並且可能無關緊要。