Я использую VirtualBox 5.0.20. Хост-машина — MacBook с OS X 10.11.5 (El Capitan). Гостевая ОС — 64-битная Arch Linux. Когда я установил Arch из ISO, подключение к Интернету у гостя было в порядке. Однако, как только я загрузился в установленную систему, я больше не мог получить доступ к Интернету (например, пинг 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, и я могу дополнительно пинговать хосты в моей локальной сети, но я не могу пинговать ничего за пределами маршрутизатора моей локальной сети. Интернет-соединение хоста в порядке.
решение1
Ответ я получил из совета, который получил наэтот же вопрос задавали в Unix & Linux StackExchange.
В моей настройке у меня было два файла сетевых юнитов systemd: один для адаптера bridged и один для адаптера host-only. Я хотел, чтобы адаптер bridged имел динамический адрес, поскольку виртуальная машина находится на ноутбуке, который перемещается между сетями, а адаптер host-only имел статический адрес, чтобы я мог получить к нему доступ, например, по ssh, без необходимости вручную определять адрес.
Однако при создании файлов сетевых единиц я слепо скопировал то, что нашел в вики-руководстве — один раздел, описывающий, как быстро настроить динамический адрес, другой — как быстро настроить статический адрес. Очевидно, руководство предполагало, что я буду использовать одну или другую простую настройку, а не обе бок о бок, что является более сложным сценарием.
Достаточно сказать, что сетевой файл адаптера host-only имел указанную опцию Gateway, а файл адаптера bridged — нет. Таким образом, получается, что шлюз адаптера host-only стал предпочтительным маршрутом для трафика, поступающего с виртуальной машины. Удаление этой опции из сетевого файла решило проблему.
Сетевой файл адаптера только для хоста после исправления (удалена опция шлюза):
[root@arch64 ~]# cat /etc/systemd/network/host-only.network
[Match]
Name=enp0s8
[Network]
Address=192.168.56.2/24