無法從 VirtualBox 來賓 (Arch Linux) 上網

無法從 VirtualBox 來賓 (Arch Linux) 上網

我使用的是 VirtualBox 5.0.20。主機是運行 OS X 10.11.5 (El Capitan) 的 MacBook。來賓作業系統是 64 位元 Arch Linux。當我從 ISO 安裝 Arch 時,訪客的網路連線狀況良好。然而,一旦我啟動到已安裝的系統,我就無法再存取網路(例如,ping 8.8.8.8 只是無限期地掛起)。

虛擬機器有兩個網路介面卡:一個橋接網路適配器和一個僅主機網路適配器。我嘗試將橋接器更改為 NAT 適配器,並一次將橋接器連接到主機的無線接口,另一時間連接到主機的有線接口。在任何這些設定下,訪客都無法上網。

來賓作業系統已啟用 systemd-networkd.service 和 systemd-resolved.service。據我所知,它沒有啟用任何其他網路服務。如果可能的話,我想堅持使用這些服務,而不是切換到其他服務,但如果這些服務存在一些固有的缺陷,這是我的問題的根源,我會切換。

在來賓作業系統中,橋接適配器的網路檔案的內容:

[root@arch64 ~]# cat /etc/systemd/network/bridged.network 
[Match]
Name=enp0s3

[Network]
DHCP=ipv4

以及僅主機適配器的網路檔案的內容:

[root@arch64 ~]# cat /etc/systemd/network/host-only.network 
[Match]
Name=enp0s8

[Network]
Address=192.168.56.2/24
Gateway=192.168.56.1

橋接適配器成功取得 DHCP 租約,而且我還可以 ping 區域網路上的主機,但無法 ping 通 LAN 路由器以外的任何裝置。房東的網路連線良好。

答案1

答案來自我收到的一條提示在 Unix & Linux StackExchange 中也提出了同樣的問題

根據我的設置,我有兩個 systemd 網路單元檔案:一個用於橋接適配器,一個用於僅主機適配器。我希望橋接適配器具有動態位址,因為虛擬機位於在網路之間移動的筆記型電腦上,並且我希望僅主機適配器具有靜態位址,以便我可以存取它,例如通過 ssh,而無需手動確定位址。

然而,在創建網頁單元檔案時,我盲目地複製了在wiki教程中找到的內容——其中一部分描述如何快速設定動態位址,另一部分描述如何快速設定靜態位址。顯然,本教程假設我將使用一種或另一種簡單的設置,而不是同時使用兩種設置,這是一個更複雜的場景。

可以說,僅主機適配器的網路檔案指定了網關選項,而橋接適配器的檔案則沒有指定。因此,僅主機適配器的網關似乎成為來自虛擬機器的流量的首選路由。從網路檔案中刪除此選項解決了該問題。

修復後的僅主機適配器網路檔案(刪除了網關選項):

[root@arch64 ~]# cat /etc/systemd/network/host-only.network 
[Match]
Name=enp0s8

[Network]
Address=192.168.56.2/24

相關內容