Networking

如何在 CentOS 中正確設置 2 個網路介面(在 VirtualBox 中執行)?

  • April 17, 2019

我有一台執行 CentOS 6.5 的 VirtualBox 機器。我在 VirtualBox 的機器網路設置中為它創建了 2 個網路適配器。第一個是 NAT,我希望訪客使用它來連接到 Internet,第二個我設置為 Host-only,我將使用它來 SSH 並從主機訪問 Web 伺服器。VirtualBox 論壇上的本教程是我想要實現的目標,但我似乎無法/etc/network/interfaces在 CentOS 6.5 上找到該文件,因此我認為配置方式有所不同。

設置了 NAT 和 Host-only 適配器後,我啟動了 VM 並做了一個ip addr show,我有 2 個介面,eth0並且eth2(我不知道為什麼eth1會以某種方式跳過)。所以我在 中配置這兩個ifcfg-ethX文件/etc/sysconfig/network-scripts,設置eth0為 DHCP(用於 NAT)和eth2靜態 IP(僅用於主機)。對於eth0,ONBOOT=yes而對於eth2, ONBOOT=no. 有了這個設置,我可以ping上網ping -c 3 www.google.com,即它會得到響應,所以我知道我可以連接到網際網路(當eth2它關閉時)。

接下來,我ifup eth2。在主機上,我使用我設置的靜態 IP 進行 SSH,我可以毫無問題地連接。但是當我ping -c www.google.com這一次這樣做時,它失敗了,我知道我已經失去了與 Internet 的連接,即使eth0它仍然線上。執行 aroute -n向我顯示了一個表格輸出,eth2其中包含第一行和最後一行,而eth0介於兩者之間(抱歉,我無法發布實際輸出,因為我出於沮喪刪除了 VM……)。

我創建了一個新的 CentOS 虛擬機,並希望繼續進行相同的設置。我的network-fu幾乎不存在,所以我很擅長。我想要一些有關如何正確執行此操作的提示(即如何設置 NAT 適配器以使用eth0和設置僅主機適配器以使用eth1和不使用,即使/已啟動並執行eth2,如何使其仍然可用)。eth0``eth1``eth2

更新

所以我已經啟動並執行了新的虛擬機,如果我將第一個適配器設置為僅主機並將第二個適配器設置為 NAT,它現在似乎可以工作了。它是這樣設置的:

VirtualBox 網路設置

  • 網路適配器 1:僅主機(vboxnet0IP 地址設置為10.3.0.1,網路遮罩255.255.255.0和 DHCP 已關閉)
  • 網路適配器 2:NAT (DHCP)

CentOS 虛擬機/etc/sysconfig/network-scripts/ifcfg-ethX設置

# ifcfg-eth0
DEVICE=eth0
HWADDR=08:00:27:EC:6C:B9
TYPE=Ethernet
UUID=1339bc30-...
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
DHCPCLASS=
IPADDR=10.3.0.100
NETMASK=255.255.255.0
GATEWAY=10.3.0.1

# ifcfg-eth2
DEVICE=eth2
HWADDR=08:00:27:EB:73:BA
TYPE=Ethernet
UUID=1339bc30-...
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=dhcp

的結果ip route

10.0.3.0/24  dev  eth2  proto  kernel  scope  link  src  10.0.3.15
10.3.0.0/24  dev  eth0  proto  kernel  scope  link  src  10.3.0.100
169.254.0.0/16  dev  eth0  scope  link  metric  1002
169.254.0.0/16  dev  eth2  scope  link  metric  1003
default via 10.0.3.2 dev eth2

的結果ip addr

1:  lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2:  eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:ec:6c:b9 brd ff:ff:ff:ff:ff:ff
    inet 10.3.0.100/24 brd 10.3.0.255 scope global eth0
    inet6 fe80::a00:27ff:feec:6cb9/64 scope link
       valid_lft forever preferred_lft forever
3:  eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:eb:73:ba brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.15/24 brd 10.0.3.255 scope global eth2
    inet6 fe80::a00:27ff:feeb:73ba/64 scope link
       valid_lft forever preferred_lft forever

我猜問題是(或:曾經)網關定義與 DHCP 衝突。不知何故,界面順序似乎影響了這一點。

基本問題是:兩個網卡應該怎麼做路由?據我了解,主機專用卡僅用於連接主機。因此,您根本不應該為此介面定義任何網關。但也許這只有在第一個介面使用 DHCP 時才有效。

此外,您可以考慮完全避免使用 DHCP。NAT 介面也適用於靜態配置。

引用自:https://unix.stackexchange.com/questions/115464