3

Я использую 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 ответ1

1

Ответ приходит из подсказки, которую я получил по этому же вопросу, заданному в Unix & Linux StackExchange.

В соответствии с моей настройкой у меня было два файла системного сетевого модуля: один для моста с адаптером и один для адаптера только для хоста. Я хотел, чтобы мостовой адаптер имел динамический адрес, потому что виртуальная машина находится на ноутбуке, который перемещается между сетями, и я хотел, чтобы адаптер только для хоста имел статический адрес, чтобы я мог получить к нему доступ, например, по ssh, не имея вручную определить адрес.

Однако, создавая файлы сетевых модулей, я слепо скопировал то, что нашел в вики-учебнике - один раздел, описывающий, как быстро настроить динамический адрес, а другой, как быстро настроить статический адрес. Очевидно, что в этом руководстве предполагалось, что я буду использовать одну или другую простую установку, а не обе вместе, что является более сложным сценарием.

Достаточно сказать, что в сетевом файле адаптера только для хоста была указана опция Gateway, а в файле адаптера моста - нет. Похоже, что шлюз адаптера только для хоста стал предпочтительным маршрутом для трафика, поступающего с виртуальной машины. Удаление этой опции из сетевого файла решило проблему.

Сетевой файл адаптера только для хоста после исправления (удалена опция Gateway):

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

[Network]
Address=192.168.56.2/24

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .