OpenVPN - Comprendre la table de routage + Comment acheminer uniquement le trafic vers une adresse IP spécifique via le VPN

12

Je me connecte à un service VPN en utilisant OpenVPN et tout fonctionne bien. Une fois que je me connecte, ce sont les règles qui sont automatiquement définies:

root@linux:~# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:AA:1B:01:AC:FB  
          inet addr:192.168.1.201  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:46867 errors:0 dropped:0 overruns:0 frame:0
          TX packets:29742 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:37977382 (36.2 MiB)  TX bytes:5098121 (4.8 MiB)
          Interrupt:16 

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.7.7.126  P-t-P:10.7.7.125  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:23284 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5817 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:31366374 (29.9 MiB)  TX bytes:308591 (301.3 KiB)

root@linux:~# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.7.7.125      128.0.0.0       UG    0      0        0 tun0
default         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
5.120.121.114   192.168.1.1     255.255.255.255 UGH   0      0        0 eth0
10.7.7.1        10.7.7.125      255.255.255.255 UGH   0      0        0 tun0
10.7.7.125      *               255.255.255.255 UH    0      0        0 tun0
128.0.0.0       10.7.7.125      128.0.0.0       UG    0      0        0 tun0
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0

Voici ce que je comprends:

  • mon adresse IP locale est 192.168.1.201
  • la passerelle locale est 191.168.1.1
  • 5.120.121.114 est l'IP publique VPN
  • tun0 est le tunnel VPN, ma machine a 10.7.7.126 comme adresse
  • 10.7.7.125 est l'adresse ptp que je comprends est l'autre "fin" du VPN

Concernant la table de routage, je comprends que:

  • par défaut tout le trafic est envoyé via 10.7.7.125 sur l'interface tun0 (mais pourquoi ce masque?)
  • 10.7.7.1 est accessible via tun0
  • l'ip publique de vpn est accessible via eth0

Je ne comprends pas la deuxième passerelle par défaut, c'est la valeur par défaut lorsque le vpn n'est pas actif, est-il simplement contourné?

Qu'en est-il du 10.7.7.1? on dirait que c'est la passerelle du vpn ...

Pourquoi la destination 128.0.0.0?

OpenVPN crée automatiquement toutes ces règles. Mais sur la base de quoi sont-ils créés?

Je ne peux pas contrôler le côté serveur du VPN mais uniquement la configuration du client.

Et maintenant, si je veux:

  • forcer tout le trafic à 216.58.213.174 à passer par VPN tun0 et à faire passer le reste par eth0?
  • puis-je le faire établir automatiquement lors du démarrage du VPN?

Merci de votre suggestion et de votre soutien pour comprendre cela.

KR, dk

ÉDITER:

root@linux:~# ip route list
0.0.0.0/1 via 10.7.7.125 dev tun0 
default via 192.168.1.1 dev eth0 
5.152.210.249 via 192.168.1.1 dev eth0 
10.7.7.1 via 10.7.7.125 dev tun0 
10.7.7.125 dev tun0  src 10.7.7.126 
128.0.0.0/1 via 10.7.7.125 dev tun0 
192.168.1.0/24 dev eth0  src 192.168.1.201 
d82k
la source
1
Juste mes 2 cents: utilisez ip route listpour obtenir une meilleure vue de vos itinéraires. De plus, parce que ifconfig et route sont sur la voie de la dépréciation sur LInux ...

Réponses:

15

Je ne comprends pas la deuxième passerelle par défaut, c'est la valeur par défaut lorsque le vpn n'est pas actif, est-il simplement contourné?

C'est l'un des hacks d'OpenVPN pour acheminer le trafic à travers votre tunnel tout en conservant votre passerelle par défaut. Les routes 0.0.0.0/1 et 128.0.0.0/1 ont priorité sur la route 0.0.0.0/0 car elles sont plus spécifiques tout en correspondant à toutes les adresses. Recherchez "def1" dans la documentation OpenVPN pour plus de détails

Qu'en est-il du 10.7.7.1? on dirait que c'est la passerelle du vpn ...

Probablement oui

OpenVPN crée automatiquement toutes ces règles. Mais sur la base de quoi sont-ils créés?

Ils sont probablement poussés depuis le serveur. Je peux fournir plus d'informations si vous pouvez fournir la sortie de votre client pendant qu'il démarre avec votre fichier de configuration

Je ne peux pas contrôler le côté serveur du VPN mais uniquement la configuration du client.

Oui, mais le client est hautement configurable de sorte que vous pouvez remplacer à peu près tout ce que le serveur veut que votre client fasse. Néanmoins, vous devrez répondre aux exigences de base de votre fournisseur pour vous connecter. Vous devriez également vérifier les «Conditions d'utilisation» de vos fournisseurs pour vous assurer de ne pas les énerver.

Et maintenant, si je veux:

forcer tout le trafic à 216.58.213.174 à passer par VPN tun0 et à faire passer le reste par eth0?

Oui, incluez "route 216.58.213.174 255.255.255.255 10.7.7.125" dans votre configuration. Cela devrait configurer l'itinéraire souhaité. Vous devriez pouvoir garder vos autres itinéraires en place en supprimant l'option "redirect-gateway" de votre configuration

puis-je le faire établir automatiquement lors du démarrage du VPN?

oui, voir ci-dessus

Toutes les options que j'ai décrites et plus peuvent être trouvées dans la documentation en ligne d'OpenVPN. https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage

fume2345
la source
Beaucoup, merci beaucoup !!! J'ai passé des jours à fouiller dans les détails du réseau pour essayer de comprendre le petit truc mignon avec les 0.0.0.0/1 et 128.0.0.0/1. Au final, j'ai simplement dû ajouter une route qui est complètement redondante, sauf lorsque le VPN est activé.
rlduffy