VirtualBox: два мережевих інтерфейси (NAT і лише для хостів) у гості Debian на Ubuntu


48

Я створив Debian VM на VirtualBox з двома інтерфейсами: NAT один (для доступу до Інтернету) і один лише для хостів. Однак я не знаю, як змусити обидва інтерфейси працювати одночасно. Якщо я визначте тільки хост як адаптер 1, я можу отримати доступ до своєї VM від хоста, але не з Інтернету; якщо я визначу NAT один як адаптер 1, я можу отримати доступ до Інтернету, але не можу зайти до свого гостя Debian.

Отже, як я можу змусити обидва інтерфейси працювати разом?

Примітка . Я все ще намагаюся відобразити якийсь порт від мого хоста до порту SSH від мого гостя SO, тому немає потреби пропонувати мені це робити :)

EDIT : Це результат, ifconfigколи перший адаптер є лише хостом :

eth0      Link encap:Ethernet  HWaddr 08:00:27:f6:b2:45  
          inet addr:192.168.56.101  Bcast:192.168.56.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fef6:b245/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:495 errors:0 dropped:0 overruns:0 frame:0
          TX packets:206 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:48187 (47.0 KiB)  TX bytes:38222 (37.3 KiB)

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:16436  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:560 (560.0 B)  TX bytes:560 (560.0 B)

Це вихід, netstat -nrколи перший адаптер є лише хостом :

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.56.0    0.0.0.0         255.255.255.0   U         0 0          0 eth0

Це вихід, ifconfigколи перший адаптер є NAT :

eth0      Link encap:Ethernet  HWaddr 08:00:27:f6:b2:45  
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fef6:b245/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:53 errors:0 dropped:0 overruns:0 frame:0
          TX packets:59 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:6076 (5.9 KiB)  TX bytes:5526 (5.3 KiB)

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:16436  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:1664 (1.6 KiB)  TX bytes:1664 (1.6 KiB)

Це вихід, netstat -nrколи перший адаптер є NAT :

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
10.0.2.0        0.0.0.0         255.255.255.0   U         0 0          0 eth0
0.0.0.0         10.0.2.2        0.0.0.0         UG        0 0          0 eth0

Відповіді:


48

Рішення було досить просто: я просто повинен був додати наступні рядки в Debian віртуальній машині «s /etc/network/interfacesфайлу:

allow-hotplug eth1
iface eth1 inet dhcp

Другий рядок вказує інтерфейсу отримати IP через DHCP. Перший рядок завантажує інтерфейс під час завантаження.

Щоб застосувати зміни до запущеної системи, запустіть:

ifup eth1

Ім'я eth1інтерфейсу може змінюватися, використовуйте ifconfig -aдля переліку всіх доступних інтерфейсів.

EDIT : повний /etc/network/interfaces:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp

allow-hotplug eth1
iface eth1 inet dhcp

1
Я можу підтвердити. Debian не встановлює другий інтерфейс в /etc/network/interfaces. Виправлена ​​моя проблема, дякую. Для потенційної налагодження це два інтерфейси virtio, надані Virtualbox. Один - це інтерфейс NAT, який використовується для доступу до Інтернету (NAT надається індивідуально через vbox), інший - це лише мережа, що підтримує хост, з DHCP у абсолютно іншому приватному IP-класі. Тестована версія Debian 6.0.6 x64.
davolfman

Чи можете ви, будь ласка, розмістити весь / etc / network / інтерфейси, будь ласка. Боріться з цим вже 2 дні.
Іоанн Микола

@JohnNicholas зроблено. Зауважте, що ви повинні відредагувати файл гостя /etc/network/interfaces .
brandizzi

ура, моє було те саме. Моя проблема полягала в тому, що коли у мене був перший адаптер NAT у vbox, то інший (хост) адаптер спробував би використовувати dhcp-сервер на цьому адаптері, і все пішло б не так. Коли я замовив адаптери в vbox тільки в якості хоста, тоді NAT все почало працювати (незалежно від того, щоб їх замовлення в Linux було досить цікаво). Netctl не мав цієї проблеми в іншому vm.
Іоанн Микола

2
Це чудово працює, дякую! Однак зараз Ubuntu 18 використовує новий інтерфейс під назвою "netplan". Будь-яка ідея, як повторити вищезазначене в netplan?
yahermann

11

З моєю Ubuntu 14.04 VM я зіткнувся з подібною проблемою, і рішення, запропоноване @brandizzi для Debian, працювало з невеликими змінами.

EDIT: file /etc/network/interfaces:


# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet dhcp

Для UBUNTU 16.04

Виконати команду

ifconfig -a

Шукайте новий інтерфейс, як у моєму випадку це "enp0s8"

EDIT file /etc/network/interfaces:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto enp0s3
iface enp0s3 inet dhcp

auto enp0s8
iface enp0s8 inet dhcp  

3
Це також стосується Debian 9+ (установка Ubuntu 16)
Максим Лузик

3

Обидва адаптера повинні бути налаштовані в Debian

Здається, що в обох випадках у вас налаштований лише один адаптер, звідси і ваша проблема.

Створіть 2 адаптери у конфігурації VirtualBox вашого VM та запустіть його. Якщо ви бачите лише один налаштований адаптер під час використання ifconfig (єдиний eth0, також не et1), то для налаштування обох інтерфейсів у DHCP слід використовувати інструмент налаштування мережі для Debian (Менеджер мережі, ifupdown тощо). Тож у DHCP вам слід мати eth0 та eth1.


0

Переконайтеся, що ви використовуєте окремі підмережі простору приватних адрес для кожного інтерфейсу.

Так, наприклад, для інтерфейсу, який є NAT, ви можете використовувати адресу в просторі 192.168.0.0/16.

Інтерфейс, який є "лише хостом", може знаходитись у просторі 10.0.0.0/24.


Ну, вони розділені (мій простір NAT - 10.0.2.0/24, а мій NAT - 192.168.56.0/24).
brandizzi

Чи можете ви відредагувати своє запитання, щоб увімкнути висновок ifconfigі netstat -nrщоб ми могли бачити, як налаштовані інтерфейси та маршрутизація?
Джордж М

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