VirtualBox: deux interfaces réseau (NAT et hôte uniquement) dans un invité Debian sur Ubuntu

48

J'ai créé une machine virtuelle Debian sur VirtualBox avec deux interfaces: une interface NAT (pour accéder à Internet) et une interface hôte uniquement. Cependant, je ne sais pas comment faire fonctionner les deux interfaces en même temps. Si je définis l'hôte uniquement comme l'adaptateur 1, je peux accéder à ma machine virtuelle à partir de l'hôte mais pas d'Internet; Si je définis le NAT comme adaptateur 1, je peux accéder à Internet mais je ne peux pas atteindre mon invité Debian.

Alors, comment pourrais-je faire en sorte que les deux interfaces fonctionnent ensemble?

Note : J'essaie toujours de mapper un port de mon hôte sur le port SSH de mon invité invité, il n'y a donc pas besoin de me suggérer de le faire :)

EDIT : Ceci est la sortie de ifconfiglorsque le premier adaptateur est l' hôte uniquement :

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)

Voici la sortie de netstat -nrlorsque le premier adaptateur est l' hôte uniquement :

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

C'est la sortie de ifconfigquand le premier adaptateur est celui de 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)

C'est la sortie de netstat -nrquand le premier adaptateur est celui de 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
la source

Réponses:

48

La solution était assez simple: il me suffisait d’ajouter les lignes suivantes dans le fichier de la machine virtuelle Debian/etc/network/interfaces :

allow-hotplug eth1
iface eth1 inet dhcp

La deuxième ligne indique à l'interface d'obtenir un IP via DHCP. La première ligne charge l'interface au démarrage.

Pour appliquer les modifications à un système en cours d'exécution, appelez:

ifup eth1

Le nom de l' eth1interface peut varier. Utilisez cette option ifconfig -apour répertorier toutes les interfaces disponibles.

EDIT : complet /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
la source
1
Je peux confirmer. Debian ne configure pas la deuxième interface dans /etc/network/interfaces. Correction de mon problème, merci. Pour le débogage potentiel, il s'agit de deux interfaces virtio fournies par Virtualbox. L'un est l'interface NAT utilisée pour l'accès à Internet (les NAT sont fournis individuellement par vbox), l'autre est un réseau uniquement hôte avec DHCP dans une classe IP privée complètement différente. La version de Debian testée 6.0.6 x64.
davolfman
pouvez-vous s'il vous plaît poster votre entier / etc / network / interfaces s'il vous plaît. Cela fait deux jours que je lutte avec cela.
John Nicholas
@JohnNicholas fait. Notez que vous devez éditer le fichier invité /etc/network/interfaces .
brandizzi
Bravo, le mien était le même. Mon problème était que quand j'avais l'adaptateur NAT d'abord dans vbox, l'autre adaptateur (hôte) essayait d'utiliser le serveur DHCP sur cet adaptateur et tout irait mal. Lorsque j'ai commandé les adaptateurs dans vbox en tant qu'hôte uniquement, NAT a alors tous commencé à fonctionner (quel que soit leur ordre sous Linux, il est intéressant de noter). Netctl n'a pas eu ce problème dans une autre machine virtuelle.
John Nicholas
2
Cela fonctionne très bien, merci! Cependant, Ubuntu 18 utilise maintenant une nouvelle interface appelée "netplan". Une idée de comment reproduire ce qui précède dans netplan?
Yahermann
11

Je rencontrais un problème similaire avec ma machine virtuelle Ubuntu 14.04 et la solution suggérée par @brandizzi pour Debian fonctionnait avec peu de changement.

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

Pour UBUNTU 16.04

Exécuter la commande

ifconfig -a

Cherchez une nouvelle interface comme dans mon cas, elle est '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  
Pandurang Patil
la source
3
Ceci s'applique également maintenant à Debian 9+ (configuration Ubuntu 16)
Maksim Luzik le
3

Les deux adaptateurs doivent être configurés dans Debian

Il semble que dans les deux cas, vous n'avez qu'un seul adaptateur configuré, d'où votre problème.

Créez 2 adaptateurs dans la configuration VirtualBox de votre machine virtuelle, puis démarrez-le. Si vous ne voyez qu'un seul adaptateur configuré lors de l'utilisation d'ifconfig (un seul eth0, pas un eth1 également), vous devez utiliser l'outil de configuration réseau de Debian (Network Manager, Network Manager, etc.) pour configurer les deux interfaces en DHCP. Donc, vous devriez avoir eth0 et eth1 dans DHCP.

Huygens
la source
0

Assurez-vous que vous utilisez des sous-réseaux d'espace d'adressage privé distincts pour chaque interface.

Ainsi, par exemple, pour l'interface qui est NAT, vous pouvez utiliser une adresse dans l'espace 192.168.0.0/16.

L'interface 'hôte uniquement' pourrait se trouver dans l'espace 10.0.0.0/24.

George M
la source
Eh bien, ils sont séparés (mon espace NAT est 10.0.2.0/24 et mon NAT est 192.168.56.0/24).
brandizzi
Pouvez-vous modifier votre question pour inclure la sortie de ifconfiget netstat -nrafin que nous puissions voir comment les interfaces et le routage sont configurés?
George M
Ok, j'ai ajouté le résultat des commandes à la question.
brandizzi