Il s'agit d'une Question canonique sur la résolution des conflits de sous-réseau IPv4 entre le réseau local d'un client VPN et celui sur la liaison VPN à partir de celui-ci.
Après s'être connecté à un emplacement distant via OpenVPN, les clients tentent d'accéder à un serveur sur un réseau qui existe sur un sous-réseau tel que 192.0.2.0/24. Cependant, parfois, le réseau sur le LAN du client a la même adresse de sous-réseau: 192.0.2.0/24. Les clients ne peuvent pas se connecter au serveur distant via la saisie de son adresse IP en raison de ce conflit. Ils ne peuvent même pas accéder à Internet public lorsqu'ils sont connectés au VPN.
Le problème est que ce sous-réseau 192.0.2.0/24 doit être routé par le VPN, mais il doit également être routé en tant que LAN du client.
Quelqu'un sait-il comment atténuer ce problème? J'ai accès au serveur OpenVPN.
Il est possible de résoudre ce problème en utilisant NAT; ce n'est tout simplement pas très élégant.
Donc, sous l'hypothèse que vous ne pourriez pas résoudre ce problème en ayant des réseaux internes qui ont des numéros de réseau si rares qu'ils ne sont jamais réellement en conflit, voici le principe:
Comme le sous-réseau local et distant ont des numéros de réseau identiques, le trafic de votre client ne réalisera jamais qu'il doit passer par la passerelle du tunnel pour atteindre sa destination. Et même si nous l'imaginons, la situation serait la même pour l'hôte distant car il est sur le point d'envoyer une réponse.
Alors restez avec moi et prétendez que pour l'instant, il n'y a pas de problèmes secondaires car j'écris que pour une connectivité complète, vous devrez NAT les deux extrémités à l'intérieur du tunnel afin de différencier les hôtes et permettre le routage.
Faire des filets ici:
Ainsi, à l'intérieur du tunnel VPN, les hôtes de bureau sont désormais 198.51.100.x et les hôtes de bureau distant sont 203.0.113.x. Imaginons en outre que tous les hôtes sont mappés 1: 1 dans le NAT de leurs passerelles VPN respectives. Un exemple:
Ainsi, lorsque l'hôte 192.0.2.5/24 du bureau distant souhaite se connecter à l'hôte avec la même adresse IP dans le réseau du bureau, il doit le faire en utilisant l'adresse 198.51.100.5/24 comme destination. Les événements suivants se produisent:
Ainsi, bien qu'il existe une solution, il existe un certain nombre de problèmes qui doivent être résolus pour que cela fonctionne dans la pratique:
La résolution de ce problème nécessite donc une conception soignée. Si votre bureau distant se compose vraiment de road warriors, vous ajoutez une couche de problèmes en ce que:
En fonction de votre client VPN, vous pourrez peut-être sélectionner automatiquement un VPN ou l'autre en fonction de l'adresse réseau du segment local.
Notez que toute mention de NAT dans ce contexte dénote une fonction NAT qui pour ainsi dire se déroule dans la perspective du tunnel. Processwise, la statique NAT doit être effectué avant que le paquet "n'entre" dans le tunnel, c'est-à-dire avant qu'il ne soit encapsulé dans le paquet de transport qui doit le transporter sur Internet vers l'autre passerelle VPN.
Cela signifie qu'il ne faut pas confondre les adresses IP publiques des passerelles VPN (et qui en pratique peuvent également être NAT: ed, mais alors totalement en dehors de la perspective du transport vers le site distant via VPN) avec les adresses privées uniques utilisées comme mascarades pour les adresses privées en double. Si cette abstraction est difficile à imaginer, une illustration de la façon dont NAT peut être physiquement séparée de la passerelle VPN à cet effet est faite ici:
en utilisant NAT dans les réseaux qui se chevauchent .
Condenser la même image à une séparation logique à l'intérieur d'une machine, capable d'exécuter à la fois la fonctionnalité NAT et la passerelle VPN, prend simplement le même exemple un peu plus loin, mais met davantage l'accent sur les capacités du logiciel à portée de main. Le pirater avec, par exemple, OpenVPN et iptables et publier la solution ici serait un défi de taille.
Sur le plan logiciel, il est certainement possible:
PIX/ASA 7.x et versions ultérieures: VPN IPsec LAN à LAN avec exemple de configuration de réseaux superposés
et:
Configuration d'un tunnel IPSec entre des routeurs avec des sous-réseaux LAN en double
La mise en œuvre effective dépend donc de nombreux facteurs, des systèmes d'exploitation impliqués, des logiciels associés et de ses possibilités. Mais c'est certainement faisable. Vous auriez besoin de réfléchir et d'expérimenter un peu.
J'ai appris cela de Cisco comme le montrent les liens.
Si vous avez besoin d'une solution de contournement temporaire temporaire vers un ou plusieurs serveurs IPS connus, la solution la plus simple devrait être l'option de routage côté client statique.
Dans mon cas, j'ai ajouté le serveur de destination souhaité (192.168.1.100) à ma table de routage sur mon client Linux via:
route add 192.168.1.100 dev tun0
Ensuite, supprimez cette route statique avec la commande route delete.
ouais c'est le pire. pour moi, cela arrivait tout le temps depuis les chambres d'hôtel, avant que les administrateurs VPN ne se rendent compte qu'ils devraient utiliser des plages IP plus obscures. 10.0.0.0/24 et 10.1.1.1/24 sont les pires. si vous pouvez l'aider, ne jamais ip un réseau sans fil comme ça.
donc la réponse est "corriger" le wap pour utiliser un autre réseau interne (ie 10.255.255.0/24) et ensuite vous donner un bail différent (ie ip dans une plage qui peut rediriger vers corp vpn), ou si vous n'avez pas/cant get admin on wap, go to starbucks. ou 20 minutes de wardriving :)
si ce n'est que dans un laboratoire, utilisez simplement différentes plages.
Je suis sur un Mac exécutant El Capitan. Bien que les suggestions ci-dessus n'aient pas fonctionné pour moi, elles m'ont conduit à une solution de travail:
ifconfig
démarrez le VPN, faites ifconfig
et notez quelle est la nouvelle interface. Dans mon cas, c'était ppp avec une adresse IP de 192.168.42.74
ppp0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1280
inet 192.168.42.74 --> 192.0.2.1 netmask 0xffffff00
tapez:
Sudo route add 192.168.1.79 192.168.42.74
J'ai d'abord testé avec un ping
puis j'ai prouvé que cela fonctionnait en accédant au serveur git.
Quand j'ai essayé d'utiliser dev ppp pour la fin de la commande route comme mentionné ci-dessus, il s'est plaint.
La réponse d'Aydin K. est pour Linux. Si vous voulez la même fonctionnalité pour Windows, vous pouvez taper
route ADD 192.168.1.10 <IP of tunnel adapter>
ou
route ADD 192.168.1.10 IF <interface id>
vous pouvez obtenir l'identifiant d'interface avec la commande:
route print
J'ai une solution simple que j'utilise dans un espace de co-working qui a une plage IP conflictuelle (10.x)
Je me suis connecté au réseau avec mon téléphone portable, puis j'ai partagé la connexion réseau via Bluetooth avec mon ordinateur portable. Je peux maintenant utiliser le VPN pour mon employeur distant.
Je suis sûr que cela fonctionnera de la même manière via USB si vous avez besoin d'une connexion plus rapide.
Si vous avez juste besoin de frapper quelques adresses IP, ajoutez une instruction route à votre fichier de configuration ovpn comme ceci:
ligne 192.168.1.10 255.255.255.255
ligne 192.168.1.11 255.255.255.255
Il ajoutera un itinéraire pour ces Ip uniquement lorsque vous connectez votre vpn et le supprimera lorsque le vpn sera déconnecté.
J'ai quand même travaillé pour Windows.
Pour rappel: tout ce problème est dû à des années de pénurie d'adresses IPv4 et à une utilisation intensive de plage IP privée derrière NAT pour contourner cette pénurie!
La solution idéale et définitive à ce problème est assez simple (bien que cela puisse prendre et prendra du temps pour être déployé à l'échelle mondiale): IPv6 ...
Dans un monde IPv6, il n'y a pas de pénurie IP publique (et il n'y en aura pas dans quelques décennies). Il n'y a donc aucune raison de ne pas avoir d'adresse IP publique sur chaque appareil de chaque réseau. Et si vous avez besoin d'une isolation réseau, continuez à filtrer avec un pare-feu, mais sans laid NAT ...