Нет доступа к Интернету на виртуальных машинах в сети NAT в VirtualBox

Я создал сеть NAT в VirtulBox 5 в Ubuntu 14.04 LTS со следующими настройками

Название Natework: NatNetwrok1
Сетевой CIDR: 10.0.2.0/24
Поддержка DHCP: включена
Поддержка IPv6: отключена
без переадресации портов

Кроме того, у меня есть две виртуальные машины (оба клона Xubuntu), я настроил параметры сети, чтобы включить две сетевые карты на каждой виртуальной машине со следующими настройками во всех четырех адаптерах:

Прикреплено к: "Сеть NAT"
Название: "NatNetwrok1"

Когда я запускаю обе виртуальные машины, я вижу следующие настройки при запуске команды ifconfig

Результаты ifconfig на Xubuntu1

eth0      Link encap:Ethernet  HWaddr 08:00:27:00:8c:03  
          inet addr:10.0.2.9  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe00:8c03/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:43 errors:0 dropped:0 overruns:0 frame:0
          TX packets:47 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:12133 (12.1 KB)  TX bytes:8517 (8.5 KB)

eth1      Link encap:Ethernet  HWaddr 08:00:27:9e:20:e8  
          inet addr:10.0.2.8  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe9e:20e8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:43 errors:0 dropped:0 overruns:0 frame:0
          TX packets:48 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:10294 (10.2 KB)  TX bytes:8798 (8.7 KB)

Результаты ifconfig на Xubutracentu2

eth0      Link encap:Ethernet  HWaddr 08:00:27:00:8c:03  
          inet addr:10.0.2.9  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe00:8c03/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:43 errors:0 dropped:0 overruns:0 frame:0
          TX packets:47 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:12133 (12.1 KB)  TX bytes:8517 (8.5 KB)

eth1      Link encap:Ethernet  HWaddr 08:00:27:9e:20:e8  
          inet addr:10.0.2.8  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe9e:20e8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:43 errors:0 dropped:0 overruns:0 frame:0
          TX packets:48 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:10294 (10.2 KB)  TX bytes:8798 (8.7 KB)

Пинг между этими 4 IP работает нормально
Но я не могу получить доступ к Интернету ни на одной из этих виртуальных машин
Хотя, если o изменить "NAT Network" на "NAT", я могу получить доступ к сети, но, похоже, она становится частью другой виртуальной сети, и я не могу пропинговать их друг от друга
Кто-нибудь может мне помочь в выявлении и устранении проблемы

Может кто-нибудь также объяснить, в чем разница между NAT и NAT Network

4 ответа

Почему не работает?

В 16.04 (и, вероятно, в 14.04) функция сети NAT основной упакованной версии VirtualBox (5.0.36) была прослушена.

Проверь это!

Вы можете проверить это сами: если ls /usr/lib/virtualbox/VBoxNetNAT исполняемый файл присутствует, то у вас могут возникнуть другие проблемы.

Почини это!

Эта ошибка исправлена ​​в более новых версиях. Поэтому вы должны установить новую версию:

Удалить старую версию

Например, если вы установили с помощью apt Вы можете запустить:

sudo apt remove virtualbox --auto-remove

Установить новую версию

Исправление доступно для более новых версий (Ubuntu yakkety+). Для более старых версий:

  • Посетите virtualbox.org и загрузите новейшую версию вручную
  • ИЛИ ЖЕ
  • Используйте следующий скрипт:

    # add the official repository
    wget -q -O - https://www.virtualbox.org/download/oracle_vbox_2016.asc | sudo apt-key add -
    echo deb http://download.virtualbox.org/virtualbox/debian `lsb_release -cs` non-free contrib | sudo tee /etc/apt/sources.list.d/virtualbox.org.list
    # install the newer version
    sudo apt install virtualbox-5.1
    

Я столкнулся с этим, используя VirtualBox 5.0.40 из репозитория apt по умолчанию. Чтобы обойти это, я настроил каждую виртуальную машину на использование двух сетевых интерфейсов.

  • Адаптер 1: Bridge Addapter (к вашей настоящей славе)
  • Адаптер 2: сеть NAT (на ваш выбор)

Под гостями ОС (Ubuntu 16.04) вам нужно будет настроить /etc/network/interfaces для того, чтобы появился второй интерфейс. В моем случае мне нужны были виртуальные машины для использования статических IP-адресов внутри сети NAT, так что это то, что я получил.

## Bridge to Internet
auto enp0s3
iface enp0s3 inet dhcp

## NAT Network among VMs
## Static is optional
## DHCP if you don't need it
auto enp0s8
iface enp0s8 inet static
  address 10.10.11.100
  netmask 255.255.255.0

Это, конечно, предполагает, что моя сеть NAT использует подсеть 10.10.11.0/24, Адаптируйте числа к вашему сценарию или просто оставьте их в dhcp, как вы пожелаете.

ПРИМЕЧАНИЕ. Одна важная вещь, которую следует отметить в статической конфигурации, заключается в том, что для этого конкретного сценария вы НЕ МОЖЕТЕ назначить ему шлюз по умолчанию. дающий enp0s8 значение по умолчанию (например, 10.10.11.1) приведет к тому, что ОС создаст маршрут к этому шлюзу, и этот маршрут также может затруднить доступ к Интернету. Это нужно делать только в том случае, если этому конкретному интерфейсу требуются маршруты к другим сетям, кроме той, которая настроена для него.

Чтобы узнать имена интерфейсов, назначенные Ubuntu для вашей среды, вы можете dmesg | grep eth,

Согласно руководству VirtualBox, это сетевые возможности для ваших виртуальных машин:

  • NAT: внутренняя сеть между ВМ и хостом. Кроме того, вы можете получить доступ к Интернету. Две или более виртуальных машин в режиме NAT не имеют связи между ними, только с хостом и Интернетом.

  • Внутренний: все виртуальные машины с этой конфигурацией будут иметь связь между ними, но не с хостом и не с Интернетом.

  • Только хост: виртуальная сеть будет создана между хостом и всеми виртуальными машинами с этой конфигурацией, но у вас не будет доступа в Интернет.

  • Сеть NAT: вы можете подключиться ко всем виртуальным машинам в одной и той же предварительно определенной сети NAT и хосту, но не сможете подключиться к Интернету.

  • Мост: Ваша виртуальная машина будет находиться в той же сети, что и ваш хост, как если бы это был другой компьютер / сервер в этой сети, и, следовательно, она будет иметь доступ в Интернет, если ваш хост имеет.

  • Универсальный: расширенная и более специфичная конфигурация, редко используемая.

Итак, если вы хотите создать внутреннюю сеть с подключением к хосту, выберите NAT Network, но обратите внимание, что у вас не будет доступа в Интернет. NAT устанавливается только тогда, когда вы просто хотите доступ в Интернет с вашей виртуальной машины и ничего больше.

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

С другой стороны, кажется, что вы клонировали одну виртуальную машину из другой, потому что обе машины имеют одинаковый MAC-адрес (HWaddr в информации команды ifconfig), помните, что вы должны установить флажок "Повторная инициализация MAC-адреса всех сетевых карт"."когда клонирование. Два устройства с одинаковым MAC-адресом всегда создают проблемы.

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

Для получения дополнительной информации вы можете прочитать это.

Это может быть ошибка в VirtualBox. Я испытал то же самое (Ubuntu 16.04.2 LTS, VirtualBox 5.0.32_Ubuntu r112930): настроить сеть NAT, настроенную для двух виртуальных машин Ubuntu. Каждая виртуальная машина могла пинговать / SSH в другую, и через переадресацию портов я мог SSH от хоста в каждую виртуальную машину. Но нет доступа в Интернет изнутри виртуальных машин. Коллега попробовал то же самое с хостом Windows, VirtualBox (неизвестная версия) и теми же виртуальными машинами, и это сработало.

В качестве обходного пути я настроил вторую сетевую карту для каждой виртуальной машины: первая использует NAT для доступа к Интернету, вторая использует "NAT Network" для доступа к другим гостям. Мне пришлось настроить переадресацию порта SSH на первой (NAT) карте и настроить другой порт SSH на одной виртуальной машине (то есть 2222 -> 22 на VM1, 2223 -> 23 на VM2).

Согласно документации, и NAT, и NAT Network должны иметь доступ к Интернету. Разница заключается в том, что первый разделил гостевые соединения хоста и гостя, поэтому гости не могут получить доступ друг к другу, только к хосту. Последний объединяет всех гостей в одну сеть (и предоставляет такие службы, как DHCP), чтобы они могли обращаться друг к другу.

Другие вопросы по тегам