Question
Lorsque je démarre mon VPN sur mon ordinateur de bureau Ubuntu qui fait office de routeur, le sous-réseau connecté perd la connexion à Internet, mais reste accessible (LAN). Idéalement, j'aimerais savoir comment permettre au sous-réseau connecté de reprendre l'accès à Internet en acheminant via le tunnel VPN lorsque le VPN est actif.
Le contexte
J'ai la disposition du réseau suivante:
sous-réseau 172.16.0.0/20 sur eth0 pour mes machines virtuelles VirtualBox.
sous-réseau 192.168.0.0/24 sur eth0: 0 qui se connecte à la passerelle 192.168.0.1 qui dispose d’un accès Internet.
Ceci est indiqué dans le fichier / etc / network / interfaces:
auto lo
iface lo inet loopback
# This is the subnet dedicated to VB
auto eth0
iface eth0 inet static
address 172.16.0.1
netmask 255.255.0.0
gateway 192.168.0.164
dns-nameservers 8.8.8.8
# normal DHCP internet
auto eth0:0
iface eth0:0 inet static
address 192.168.0.164
netmask 255.255.255.0
dns-nameservers 8.8.8.8
gateway 192.168.0.1
Les paquets sur l'eth0 sont transférés via eth0: 0 avec masquerading et la connectivité Internet normale convient. Toutefois, lorsque je démarre mon tunnel VPN sur ce routeur, la connectivité Internet est perdue pour les ordinateurs virtuels du sous-réseau eth0 (mais il en reste pour le routeur).
Vous trouverez ci-dessous la sortie de ifconfig lorsque le tunnel est actif:
eth0 Link encap:Ethernet HWaddr 00:1f:bc:01:c3:ab
inet addr:172.16.0.1 Bcast:172.16.255.255 Mask:255.255.0.0
inet6 addr: fe80::21f:bcff:fe01:c3ab/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:165426 errors:0 dropped:0 overruns:0 frame:0
TX packets:182601 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:208264321 (208.2 MB) TX bytes:16660945 (16.6 MB)
Interrupt:16
eth0:0 Link encap:Ethernet HWaddr 00:1f:bc:01:c3:ab
inet addr:192.168.0.164 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:16
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:381963 errors:0 dropped:0 overruns:0 frame:0
TX packets:381963 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:22755054 (22.7 MB) TX bytes:22755054 (22.7 MB)
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.8.0.10 P-t-P:10.8.0.9 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Je soupçonne que la solution aura quelque chose à voir avec la table de routage . Il montre ce qui suit lorsque le tunnel est actif :
Destination Gateway Genmask Flags Metric Ref Use Iface
default 10.8.0.9 128.0.0.0 UG 0 0 0 tun0
default 192.168.0.1 0.0.0.0 UG 100 0 0 eth0
10.8.0.0 10.8.0.9 255.255.255.0 UG 0 0 0 tun0
10.8.0.9 * 255.255.255.255 UH 0 0 0 tun0
37.139.23.49 192.168.0.1 255.255.255.255 UGH 0 0 0 eth0
128.0.0.0 10.8.0.9 128.0.0.0 UG 0 0 0 tun0
link-local * 255.255.0.0 U 1000 0 0 eth0
172.16.0.0 * 255.255.0.0 U 0 0 0 eth0
192.168.0.0 * 255.255.255.0 U 0 0 0 eth0
et les suivants lorsque le tunnel est inactif :
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.0.1 0.0.0.0 UG 100 0 0 eth0
link-local * 255.255.0.0 U 1000 0 0 eth0
172.16.0.0 * 255.255.0.0 U 0 0 0 eth0
192.168.0.0 * 255.255.255.0 U 0 0 0 eth0
Configuration de Virtualbox pour Vms:
Un des /etc/network/interfaces
fichiers VMs :
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 172.16.0.3
netmask 255.255.0.0
network 172.16.0.0
broadcast 172.16.255.255
gateway 172.16.0.1
dns-nameservers 8.8.8.8
Réponses:
Cela ne fonctionnera pas dans une configuration de réseau ponté . À partir de la documentation VirtualBox :
Étant donné que vos machines virtuelles utilisent
eth0
directement, elles ne sont pas conscientes de l'tun0
interface du tunnel qui les traverse. Vous devrez utiliser une autre configuration de réseau virtuel.Vous avez (entre autres) ces options:
La traduction d'adresses réseau (NAT) est de loin la solution la plus simple. VirtualBox mettra les machines virtuelles en réseau, quelle que soit la connexion Internet disponible pour l'hôte. Ceci est totalement transparent pour les VM. Toutefois, cela empêche les connexions de l'hôte aux machines virtuelles ou les connexions entre les machines virtuelles.
Utilisez la mise en réseau hôte uniquement pour créer un sous-réseau approprié contenant les ordinateurs virtuels et l'hôte. Cela ne nécessitera aucun changement dans la configuration d'interface que vous avez maintenant dans les ordinateurs virtuels, mais vous devrez configurer l'hôte pour qu'il soit la passerelle et le routeur, et lui faire passer les ordinateurs virtuels en NAT à l'extérieur (que ce soit par son
eth0
ou outun0
).Combinez ce qui précède: attribuez à chaque machine virtuelle deux interfaces, l’une faisant la passerelle vers le monde extérieur (via le NAT de VirtualBox ) et l’autre connectée au réseau local hôte uniquement .
Essayez la configuration réseau expérimentale de VirtualBox . Mise à jour 2019: cette fonctionnalité a depuis évolué: attachez-vous au NAT de l'hôte et choisissez le type d'adaptateur de réseau paravirtualisé (virtio-net) .
la source
Pour VirtualBox avec un hôte Windows et un invité linux (mint), accédez à l'onglet Interface utilisateur réseau et définissez-le sur "Adaptateur" => "Attaché à: NAT" et "Type d'adaptateur: réseau paravirtualisé". Après cela, démarrez votre machine virtuelle et vous devriez pouvoir utiliser le réseau VPN.
la source
Après avoir recherché cette solution partout, j’ai finalement trouvé une solution efficace, qui n’exige pas beaucoup de modifications de la configuration et qui est très simple. Utilisez le réseau NAT par défaut et tapez ceci dans le terminal:
source: https://www.virtualbox.org/ticket/13993
la source
Avait le même problème. Voici comment je l'ai résolu:
ifconfig vboxnet0
pour la trouver.La dernière étape consiste à router les paquets provenant de vboxnet0 dans votre VPN.
Si vous acheminez tout le trafic via VPN:
Où se
10.8.0.5
trouve votre passerelle tun0 et192.168.5.0/24
votre plage réseau vboxnet0.Si vous n'acheminez que certains trafics via VPN:
Où se
10.8.0.5
trouve votre passerelle tun0,192.168.43.95
votrewlan0
passerelle et192.168.5.0/24
votre plage réseau vboxnet0.Remarque: Cette solution permet de traiter l'OS invité de la même manière que l'OS hôte. Seules les adresses IP configurées pour passer par un réseau privé virtuel dans le système d'exploitation hôte le traversent en tant qu'invité.
la source
Voici quelques informations utiles pour les boîtes vagabondes utilisant l'hôte VPN. En gros, vous devez définir l'option natdnshostresolver1. Notez que cela NE fonctionnera PAS si vous utilisez le paramètre public_network de Vagrant.
http://renier.morales-rodriguez.net/post/90674523562/sharing-host-vpn-with-virtualbox-guest http://blog.geekslikeshinythings.com/2016/05/sharing-host-vpn-with-vagrant -rob-allen.html
la source