Як налаштувати NAT і Host-Only мережі зі статичною IP-адресою в VirtualBox


22

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

Ось процедура, яку я дотримувався дотепер:

  1. Вимкніть функцію сервера DHCP мережі, що використовується лише для господарів, яка буде використовуватися в цій настройці
  2. Змініть IP-адресу, призначену хосту, на 192.168.56.254
  3. Створіть гостьову машину з 2 мережевими інтерфейсними картами (NIC)
  4. Налаштуйте 1-й NIC для використання NAT
  5. Налаштуйте 2-й сетевий сетевий сервіс для використання лише гарячих мереж
  6. Встановіть ОС (Ubuntu Server 13.10) на кожну з них
  7. Оновіть ОС
  8. Налаштуйте мережу так, редагуючи / etc / network / interface
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. Перезавантажте

Коли гість знову завантажується, мережа, що працює лише для господарів, працює чудово. Парові машини / гість та гості / гості / машини можуть пингувати один одного, однак Інтернет не працює як apt-getпомилка.

Якщо я потім видаю service networking restartкоманду, мережа починає працювати як слід.

Що я роблю неправильно?

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

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

Я дуже вдячний за будь-яку допомогу в цьому.

Оновлення:

Я включив вихід із наступних команд нижче, щоб допомогти в діагностиці:

  • cat / etc / network / інтерфейси
  • ifconfig -a
  • маршрут -н
$ 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-пошуку та dns-nameservers з вашого конфігурації. Ваші віртуальні машини все ще зможуть спілкуватися без налаштування шлюзу, якщо вони знаходяться в одній мережі та VirtualBox налаштовано правильно.

Редагувати. Щоб переконатися, що у вас немає шлюзу на eth1 після перезавантаження, видаліть рядки з блоку eth1, щоб він виглядав так:

auto eth1
iface eth1 inet static
address 192.168.56.1
netmask 255.255.255.0

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


Я додав діагностику, як ви запропонували. Я думаю, що правильна відповідь є (b), тобто налаштування шлюзу для eth1псуються з призначеним DHCP маршрутом за замовчуванням. Чи є для цього рішення?
Umar Farooq Khawaja

1
Я відредагував свою відповідь, щоб показати, як повинен виглядати ваш блок eth1 у файлі інтерфейсів. Вам не потрібні мережеві або широкомовні лінії, і ви не повинні мати лінію шлюзу. Видаліть ці три.
jkt123

3

Я придумав це рішення, яке є тим самим, що і відповідь @ jkt123, і питання @ Умара, але коротше. Буду вдячний за відгуки про це!

У віртуальному ящику ввімкніть як NAT, так і лише хост- мережі. (BTW: Це працює на моєму хості 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

У вас є кілька шлюзів за замовчуванням, призначених різним NIC. Загалом, "За замовчуванням" означає попередньо обраний варіант. У цьому випадку, якщо визначений шлюз за замовчуванням визначений для обох NIC, це не буде попередньо обраним варіантом. Крім того, це також призведе до таких питань зв'язку, як асинхронна маршрутизація. Я не впевнений, як метрика обох інтерфейсів встановлена ​​на 0, але це може бути пов’язано з тим, що обидва NIC мають шлюзи. Опис Microsoft з цього приводу розташований тут, а функція Metric має ряд факторів, які визначають, як вона визначається для встановлення пріоритетів. (Посилання: https://support.microsoft.com/en-us/help/299540/an-explanation-of-the-automatic-metric-feature-for-ipv4-routes )

Відповідно до @ jkt123 у відповіді відповіді, має бути призначений лише 1 шлюз за замовчуванням.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.