Ubuntu

Ubuntu:你如何交換 eth0 和 eth1?(VirtualBox VM 中的 Ubuntu 13.10 伺服器)

  • January 17, 2014

我在分配了一個 NAT 適配器的 VirtualBox 4.3.6 VM(Windows 主機)中安裝了 Ubuntu 13.10 伺服器(64 位)。安裝期間選擇的唯一非預設軟體是 OpenSSH。到目前為止一切順利…我可以 ping 世界,地址是 10.0.2.15,正如預期的那樣(根據 ifconfig,此時 NAT 適配器是 eth0)。

我想通過沒有任何埠映射的主機訪問虛擬機。由於橋接不是一個選項(我無法從主機外部獲得第二個直接 IP),我創建了一個僅主機適配器(啟用了 DHCP 和所有),編輯了 /etc/network/interfaces(複製 eth0 預設值eth1),關閉虛擬機,連接新的僅主機適配器(選擇半虛擬化),然後重新啟動。

此時 /etc/network/interfaces 包含以下內容:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet dhcp

確實這一切都有效……但根據 ifconfig,NAT 適配器現在是 eth1,而新添加的僅主機適配器是 eth0。我想要它反過來 - 這會導致各種問題!

首先,我嘗試將 MAC 地址添加到介面文件中,例如“hwaddress ether xx:xx:xx:xx:xx:xx”,因為我希望它適用於 eth0 和 eth1。不高興……這最終完全破壞了網路。我註釋掉了這些行並重新啟動(實際上我不得不禁用該僅主機適配器並再次重新啟動,然後我終於可以重新啟用它……這可能是一個線索。)

進一步閱讀,我看到許多關於更新 /etc/udev/rules.d/70-persistent-net.rules 以交換 MAC 地址的參考。好想法!除了*README 文件以外,/etc/udev/rules.d 是完全空的。*我嘗試了“sudo udevadm trigger”(及其一些排列)……沒有變化。

那麼問題 #1:70-persistent-net.rules 發生了什麼?是否已棄用?/etc/udev/rules.d 是空的,除了一個 README 文件。

接下來,我嘗試了以下方法:

sudo ifconfig eth0 down sudo ifconfig eth1 down sudo ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx sudo ifconfig eth1 hw ether yy:yy:yy:yy:yy:yy sudo ifconfig eth0 up sudo ifconfig eth1 up

唔。ifconfig 現在報告預期的 MAC 地址,但 IP 地址仍保持原樣。所以我重啟…

再一次,網路被破壞了(正是在這一點上,人們了解到編輯 /etc/init/failsafe.conf 以縮短網路調試過程中的網路延遲的優點)。/etc/network/interfaces 的內容與上面的樣子沒有變化。ifconfig 現在報告 eth0 和 eth1 具有相同的(NAT 適配器 MAC)地址,即使我確實交換了上面的 MAC 地址。按照相同的過程恢復 MAC 並重新啟動,我們回到了開始的地方(eth0 = 僅限主機,eth1 = NAT)。

**因此,主要問題是:如何在 Ubuntu 13.10 上正確交換 eth0 和 eth1?**在 CentOS(給定 DHCP)上,就像在 /etc/sysconfig/network-scripts/ifcfg-eth0 和 ifcfg-eth1 中交換 MAC 地址然後重新啟動一樣簡單。在 Ubuntu上,這就像拔牙……應該工作的一切都行不通,我很難過。我懷疑引擎蓋下發生了一些相對較新的事情(因此“缺少”規則文件等等),但它可能是什麼?請注意,預設情況下也沒有安裝網路管理器(而且它絕對不存在)。


**更新:**只是為了笑,我創建了另一個具有相同預設伺服器設置(包括以前的 OpenSSH)和一個網路適配器(NAT)的 VM。沒有變化 - 網路正常工作,但在 /etc/udev/rules.d 中除了一個 README 文件(我什至以 root 身份檢查……什麼都沒有)。

好吧,到目前為止,我至少有部分答案。

正如我所說,這是在虛擬機中。VM 創建格式為 08:00:27:xx:yy:zz 的特殊 MAC 地址。連同其他幾個腳本,我查看了 /lib/udev/rules.d/75-persistent-net-generator.rules 以查看問題是否存在。事實證明,這是該文件中特別提到的幾個排除地址範圍之一(它試圖忽略虛擬介面)!

因此,為了測試該理論,我註釋掉了該文件中的行,重新啟動並立即執行!/etc/udev/rules.d/70-persistent-net.rules 使用我目前擁有的介面的 MAC 生成。

接下來:測試單獨更新並重新啟動是否可以解決問題。當我得到測試時,我會更新。

**更新:**就是這樣!我刪除了測試修復程序和生成的文件,關閉,添加了第二個僅主機網路適配器並重新啟動。新適配器首先被列舉為 eth0,然後 NAT 適配器成為 eth1。我重新對生成器進行了編輯以刪除排除,重新啟動,現在我有一個持久規則文件可以使用。

在那個文件中,我只是交換了設備名稱(我將 NAME=“eth0” 更改為 “eth1”,反之亦然),保存,重新啟動並瞧 - 它工作!

現在,如果您在其他地方輸入了 MAC 地址,您也想更正這些地址,但在這種情況下,它非常簡單。

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