Гость Ubuntu virtualbox не получает ipv4 в мостовом режиме

6482
wehnsdaefflae

У меня новая виртуальная коробка Ubuntu Server 16.04 32-битная гостевая установка на 64-битном хосте Linux Mint 18 Cinnamon. Я хочу, чтобы гостевая система отображалась в локальной сети как физическая машина. Поэтому мне нужен режим сетевого моста для гостя - только для хоста и / или NAT не подойдет. Хост-система подключена через кабель Ethernet, и на виртуальной машине установлены гостевые дополнения.

Странно то, что во время установки гостевая система прекрасно загружает дополнительные пакеты. Однако, войдя в систему, я не могу ни пинговать компьютеры в локальной сети, ни внешние серверы, такие как google.com.

Например google.com, для локального маршрутизатора (192.168.178.1) указано «ping: host unknown», для подключения - сеть недоступна.

При ближайшем рассмотрении я обнаружил, что виртуальная машина не получила IPv4-адрес от DHCP-сервера моего маршрутизатора. Тем не менее, мой маршрутизатор показывает, что адрес был назначен (четвертая запись).

Я попытался установить статический IPv4. Затем соответствующий адрес отображается на ipconfig. Но, тем не менее, гость не может ничего пинговать. Кроме того, на самом деле я хочу, чтобы виртуальная машина все равно получала свой IPv4-адрес от локального DHCP-сервера.

В /etc/network/interfacesэтом случае сетевой интерфейс из ipconfigинициализируется следующим образом: allow-hotplug enp0s17 iface enp0s17 inet dhcp

Вещи, которые я пытался:

  • установка гостя на статический IPv4
  • отключение IPv6
  • удаление /etc/udev/rules.d/70-persistent-net.rules
  • sudo ip link set enp0s17 up
  • dhclient enp0s17

Ничто из этого не сработало. Может ли кто-нибудь помочь мне решить эту проблему?

3

3 ответа на вопрос

2
Mike

Первый ответ на этот вопрос кажется мне слишком сложным. Следующее должно работать. Откройте гостевой компьютер и сделайте следующее:

Возможно, вы захотите отключить его прямо из загрузки. Для этого откройте:

/etc/default/grub 

с вашим любимым текстовым редактором с root-доступом:

т.е.

gksu gedit /etc/default/grub 

или если вы предпочитаете работать только с командной строкой:

sudo nano /etc/default/grub 

В этом файле найдите эту строку:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" 

и измените его на:

GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 quiet splash" 

Сохраните файл и обновите GRUB, запустив:

sudo update-grub 

Если вы попробовали метод sysctl:

См. Следующий вопрос / ответ с наибольшим количеством голосов, поскольку вы можете установить значения ip6 равными 0, и если вы не инициализируете sysctl как часть загрузки, он все равно проигнорирует его (прочитайте значение ip6 по умолчанию после того, как вы установите все в 1, чтобы отключить, если система сообщает 0, что вам нужно запустить sysctl):

Как отключить IPv6 в Ubuntu 14.04?

Мне нравится мой метод, потому что он отключает ip6 при загрузке, поэтому ничто не пытается пройти по маршруту ip6 во время загрузки (некоторые могут даже получить ошибки, если он включен при загрузке и отключен внутри самой ОС). Кроме того, это всего лишь небольшая настройка на одну строку в одном файле, что упрощает работу, и вы не обязаны жертвовать скоростью линии, как если бы вы использовали полнодуплексный режим менее 100 МГц или полнодуплексный режим 1000 МГц (если у вас Gig это последний, если маршрутизатор или коммутатор 100 мегабайт будет первым).

1
wehnsdaefflae

Проблема в другом, но решение одно и то же.

Начните с 10 Мбит / с, полудуплексного режима и работайте со скоростью до 10 Мбит / с FD, 100 Мбит / с HD, ... до тех пор, пока проблема не начнется. Затем спуститесь на одну ступеньку и оставьте ее на такой скорости.

Сначала установите ethtool (если он уже установлен, вы просто получите предупреждение о том, что последняя версия уже установлена)

sudo apt-get install ethtool

Сейчас:

  1. Введите следующую команду (и протестируйте их одну за другой)

    sudo ethtool --change eth0 speed xxx duplex yyy autoneg off

    где xxx = 10, 100или 1000и yyy = halfили full.

    Так что начните с 10 half, 10 full, 100 half, ...

  2. Сделайте, ifconfigчтобы проверить, есть ли у вас IP-адрес.

  3. Вернитесь к 1, пока он не перестанет работать, и используйте предыдущие значения, которые все еще работали для:

  4. Чтобы сделать изменение постоянным, выполните следующую команду:

    sudo nano /etc/network/interfaces

    и введите в pre-upразделе:

    pre-up /usr/sbin/ethtool --change eth0 speed xxx duplex yyy autoneg off

Обратите внимание на полную запись, опубликованную OP:

auto eth0 iface eth0 inet dhcp pre-up ifconfig $IFACE up pre-up ethtool -s $IFACE speed 100 duplex full autoneg off 
0
Andy Anderson

В настройках виртуальной машины VirtualBox перейдите в сеть, а затем в раскрывающемся меню «Дополнительные параметры» выберите «Тип адаптера». По умолчанию отображается «Intel PRO / 1000 MT Desktop (82540EM)». С этим типом адаптера у меня возникла точно такая же проблема, поэтому я попытался изменить тип адаптера на «Intel PRO / 1000 MT Server (82545EM)», а затем обновить файл / etc / network / interfaces (если вы изменили тип адаптера ранее вы устанавливаете Ubuntu Server, он должен создать файл интерфейсов с правильной информацией), и теперь он работает нормально. Версия VBox, которую я использую, - 5.1.28 r117968 (Qt5.6.2) на хосте Windows 10 с использованием мостовой сети.