Как настроить NAT и сеть только для хоста со статическим IP-адресом в VirtualBox

22

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

Вот процедура, которой я следовал до сих пор:

  1. Отключите функцию DHCP-сервера в сети Host-Only, которая будет использоваться в этой настройке
  2. Измените IP-адрес, назначенный хосту, на 192.168.56.254.
  3. Создайте гостевую машину с 2 сетевыми интерфейсными картами (NIC)
  4. Настройте 1-й сетевой адаптер для использования NAT
  5. Сконфигурируйте 2-ой сетевой адаптер для использования сети в горячем режиме
  6. Установите ОС (Ubuntu Server 13.10) на каждую из них.
  7. Обновите ОС
  8. Сконфигурируйте сеть следующим образом, отредактировав / etc / network / interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
address 192.168.56.1
netmask 255.255.255.0
network 192.168.56.0
broadcast 192.168.56.255
gateway 192.168.56.254
dns-search cloudspace.local
dns-nameservers 8.8.8.8 8.8.4.4
  1. Сохранить файл
  2. перезагружать

Когда гость загружается снова, сеть Host-Only работает нормально. Пары хост / гость и гость / гость машин могут пропинговать друг друга, однако Интернет не работает так, как apt-getотказывает.

Если я затем введу service networking restartкоманду, сеть начнет работать как надо.

Что я делаю не так?

Я попытался изменить порядок отображения сетевых карт в /etc/network/interfacesфайле. Я также поменял местами сеть NAT / Host-Only между двумя сетевыми картами. Ничего не получалось.

Хост - Windows 8.1, а гость - Ubuntu Server 13.10. Я пробовал то же самое на Mac OS X с похожими результатами.

Я был бы очень признателен за любую помощь в этом.

Обновить:

Я включил вывод следующих команд, чтобы помочь в диагностике:

  • cat / etc / network / interfaces
  • ifconfig -a
  • маршрут -n
$ cat /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
address 192.168.56.1
netmask 255.255.255.0
network 192.168.56.0
broadcast 192.168.56.255
gateway 192.168.56.254

$ ifconfig -a
eth0      Link encap:Ethernet  HWaddr 08:00:27:75:47:64
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe75:4764/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1180 (1.1 KB)  TX bytes:1332 (1.3 KB)

eth1      Link encap:Ethernet  HWaddr 08:00:27:93:98:d8
          inet addr:192.168.56.1  Bcast:192.168.56.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe93:98d8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:140 errors:0 dropped:0 overruns:0 frame:0
          TX packets:225 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:14418 (14.4 KB)  TX bytes:27378 (27.3 KB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:16 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1184 (1.1 KB)  TX bytes:1184 (1.1 KB)

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.56.254  0.0.0.0         UG    0      0        0 eth1
10.0.2.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.56.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1

Обновление 2:

После того, как я выполню sudo service networking restart, вывод из route -nстановится:

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.2.2        0.0.0.0         UG    0      0        0 eth0
10.0.2.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.56.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1

Так как же обеспечить эту конфигурацию при загрузке?

Умар Фарук Хаваджа
источник

Ответы:

16

Было бы легче устранить проблему, если вы опубликовали результаты, которые вы получаете при попытке пропинговать внешний адрес (например, используемые вами DNS-серверы Google), текущие настройки сети и таблицу маршрутизации.

/sbin/ifconfig -a
/sbin/route -n

Не зная больше, это немного выстрел в темноте, но я догадываюсь, что либо а) вы не получаете адрес DHCP на eth0, либо б) ваши настройки шлюза для eth1 портятся с назначенным DHCP-маршрутом по умолчанию.

Если вы не получаете DHCP-адрес для eth0, это, вероятно, неверная конфигурация в VirtualBox (например, получение ваших адаптеров задом наперед).

В любом случае вам не нужны настройки шлюза или DNS, назначенные специально для eth1, поскольку они будут назначаться DHCP на eth0, поэтому я бы удалил строки шлюза, dns-search и dns-nameservers из вашей конфигурации. Ваши виртуальные машины по-прежнему смогут обмениваться данными без настройки шлюза, если они находятся в одной сети и VirtualBox настроен правильно.

Изменить: чтобы убедиться, что у вас нет шлюза на eth1 после перезагрузки, удалите строки из вашего блока eth1, чтобы он выглядел так:

auto eth1
iface eth1 inet static
address 192.168.56.1
netmask 255.255.255.0

Когда вы закончите, у вас не будет никаких строк шлюза в вашем файле интерфейса.

jkt123
источник
Я добавил диагностику, как вы предложили. Я думаю, что правильный ответ - (b), т. Е. Настройки шлюза eth1не соответствуют назначенному DHCP-маршруту по умолчанию. Есть ли этому решение?
Умар Фарук Хаваджа
1
Я отредактировал свой ответ, чтобы показать, как должен выглядеть ваш блок eth1 в файле интерфейсов. Вам не нужны сеть или широковещательные линии, и у вас не должно быть линии шлюза. Удалить эти три.
jkt123
3

Я придумал это решение, которое совпадает с ответом @ jkt123 и вопросом @ Умара, но короче. Буду признателен за отзыв!

В virtualbox включите как NAT, так и сети только для хоста . (Кстати: он работает на моем хосте win7. Я не знаю, как это сделать на хосте Linux).

На хосте - найти ip интерфейса "только для хоста"

ipconfig /all     # for windows host
ifconfig -a       # for linux host

В гостевой, отредактируйте / etc / network / interfaces . Хитрость была в том, чтобы изменить порядок eth1 (только для хоста) до ДО eth0 (internet / dhcp). Я не знаю почему.

auto lo                        # keep the original loopback settings
iface lo ...                   # yeah, i don't remember, just keep it.

# ----> Ok, this is my addition <-----
auto eth1                      
allow-hotplug eth1             # i think hotplug it helps. not sure.
iface eth1 inet static
address 192.168.56.100         # arbitrary IP address between 2 and 254

auto eth0                      # This is the original content
iface eth0 inet dhcp           #  of this file, now at the end.

перезагружать.

Ягода Цакала
источник
0

Прежде всего, я включил в обеих сетях NAT с DHCP и только сеть с хостом static ip add 192.168.40.41.

Затем я последовал с этой командой:

nano cat /etc/network/interfaces

Я получил этот результат:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
address 192.168.41.4
netmask 255.255.255.0

И перед перезагрузкой я набрал следующую команду:

sudo service networking restart

Потом перезагрузился.

После того, как я загрузил в VM VirtualBox, обе сети работают. Я могу подключиться к Интернету и подключиться 192.168.40.41через веб-браузер.

Я надеюсь, что это будет полезно, чтобы получить nanoредактор:

sudo apt-get update
sudo apt-get install nano

Затем просто введите nanoв терминале, чтобы запустить его.

Мирза Мухаммед Бэйг
источник
0

У вас есть несколько шлюзов по умолчанию, назначенных различным сетевым картам. В общем, «По умолчанию» означает предварительно выбранный параметр. В этом случае, если указанный шлюз по умолчанию определен для обоих сетевых адаптеров, это не будет предварительно выбранный параметр. Кроме того, это также может привести к проблемам со связью, таким как асинхронная маршрутизация. Я не уверен, как Метрика обоих интерфейсов установлена ​​в 0, но это может быть из-за наличия обоих сетевых адаптеров со шлюзами. Документ Microsoft по этому вопросу находится здесь, и функция Metric имеет ряд факторов, которые определяют способ ее определения для определения приоритетов. (Ссылка: https://support.microsoft.com/en-us/help/299540/an-explanation-of-the-automatic-metric-feature-for-ipv4-routes )

В соответствии с @ jkt123 в ответе, существует только 1 шлюз по умолчанию, который должен быть назначен.

Balldigy
источник