VirtualBox: два сетевых интерфейса (NAT и только для хоста) в гостевой системе Debian в Ubuntu

48

Я создал виртуальную машину Debian на VirtualBox с двумя интерфейсами: NAT (для доступа в Интернет) и только для хоста. Однако я не знаю, как заставить оба интерфейса работать одновременно. Если я определяю только хост как адаптер 1, я могу получить доступ к своей виртуальной машине с хоста, но не из Интернета; если я определяю NAT как адаптер 1, я могу получить доступ к Интернету, но не могу связаться с моим гостевым Debian.

Итак, как я могу заставить оба интерфейса работать вместе?

Примечание : я все еще пытаюсь сопоставить какой-либо порт с моего хоста на порт SSH от моего гостевого SO, поэтому нет необходимости предлагать мне это сделать :)

РЕДАКТИРОВАТЬ : Это вывод, 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
brandizzi
источник

Ответы:

48

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

allow-hotplug eth1
iface eth1 inet dhcp

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

Чтобы применить изменения к работающей системе, вызовите:

ifup eth1

Имя eth1интерфейса может отличаться, используйте ifconfig -aдля перечисления всех доступных интерфейсов.

РЕДАКТИРОВАТЬ : полный /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
brandizzi
источник
1
Я могу подтвердить. Debian делает не настроен второй интерфейс в /etc/network/interfaces. Исправил мою проблему, спасибо. Для возможной отладки это два виртуальных интерфейса, предоставляемых Virtualbox. Одним из них является интерфейс NAT, используемый для доступа в Интернет (NAT предоставляются индивидуально через vbox), а другой - сеть только с хостом, в которой DHCP находится в совершенно другом частном IP-классе. Версия Debian протестирована 6.0.6 x64.
Давольфман
Можете ли вы опубликовать все ваши / etc / network / interfaces, пожалуйста. Бороться с этим уже 2 дня.
Джон Николас
@JohnNicholas готово. Обратите внимание, что вы должны отредактировать гостевой /etc/network/interfaces файл.
brandizzi
ура, мой был такой же. Моя проблема заключалась в том, что, когда у меня сначала был адаптер NAT в vbox, другой (хост) адаптер попытался бы использовать сервер dhcp на этом адаптере, и все пошло не так. Когда я заказал адаптеры в vbox только в качестве хоста, тогда все NAT заработало (независимо от того, как они упорядочены в Linux). Netctl не было этой проблемы в другой виртуальной машине.
Джон Николас
2
Это прекрасно работает, спасибо! Однако в Ubuntu 18 теперь используется новый интерфейс под названием «netplan». Любая идея, как повторить вышеизложенное в netplan?
Яхерманн
11

Я столкнулся с подобной проблемой с моей виртуальной машиной Ubuntu 14.04, и решение, предложенное @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

Команда Run

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 вашей виртуальной машины и затем запустите ее. Если вы видите только один настроенный адаптер при использовании ifconfig (один eth0, тоже нет eth1), вам следует использовать инструмент настройки сети для Debian (Network Manager, ifupdown и т. Д.), Чтобы настроить оба интерфейса в DHCP. Таким образом, вы должны иметь eth0 и eth1 в DHCP.

Гюйгенс
источник
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