Нет доступа к Интернету на виртуальных машинах в сети 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), чтобы они могли обращаться друг к другу.