[ OpenVPN et routes ] Réseau Privé Virtuel injoignable ?

Applications, problèmes de configuration réseau
Latoof
newbie
Messages : 8
Inscription : ven. 28 janv. 2011, 22:46

[ OpenVPN et routes ] Réseau Privé Virtuel injoignable ?

Message par Latoof »

( Problème similaire : http://forums.archlinux.fr/topic9800.ht ... 0RTNETLINK )

Bonsoir !

Après plusieurs essais (étalés sur plusieurs mois) et autant d'abandons, je vais finalement vous appeler à l'aide pour un problème dont je n'arrive pas à comprendre la source.

Symptômes :
J'obtiens le message : "RTNETLINK answers: File exists" après l'établissement des routes suites à un push du serveur de VPN.
--> La route n'existe pourtant pas avant le lancement d'OpenVPN.

Je n'arrive pas à pinger 10.8.0.1 (unreachable) alors que ce devrait être la machine "peerée" la première sur le VPN.


Spécificités : J'utilise un serveur de rebond (redirections de ports) en plus d'une passerelle.
Pour schématiser grossièrement : [MaMachine] <--> [Passerelle chez mwa] <--> [Serveur de rebond (RENATER vers Internet)] <--> [Mon serveur]

[+] A noter que le fichier de config que j'ai quoté plus bas fonctionne sur des systèmes non-unixiens (pour ne pas le citer)


Bon, j'envoie le pâté, concernant ma configuration (mais je pense que de toutes manières, c'est le minimum pour un diagnostique)


SORTIE d'OpenVPN sous Arch :
Tue Sep 4 00:44:01 2012 OpenVPN 2.2.2 i686-pc-linux-gnu [SSL] [LZO2] [EPOLL] [eurephia] built on Aug 18 2012
[...]
Tue Sep 4 00:44:02 2012 [server] Peer Connection Initiated with 127.0.0.1:2223
Tue Sep 4 00:44:05 2012 SENT CONTROL [server]: 'PUSH_REQUEST' (status=1)
Tue Sep 4 00:44:05 2012 PUSH: Received control message: 'PUSH_REPLY,route 10.8.0.0 255.255.255.0,redirect-gateway def1 bypass-dhcp,dhcp-option DNS 208.67.222.222,route-gateway 10.8.0.1,ping 10,ping-restart 240,ifconfig 10.8.0.2 255.255.255.0'
Tue Sep 4 00:44:05 2012 OPTIONS IMPORT: timers and/or timeouts modified
Tue Sep 4 00:44:05 2012 OPTIONS IMPORT: --ifconfig/up options modified
Tue Sep 4 00:44:05 2012 OPTIONS IMPORT: route options modified
Tue Sep 4 00:44:05 2012 OPTIONS IMPORT: route-related options modified
Tue Sep 4 00:44:05 2012 OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modified
Tue Sep 4 00:44:05 2012 ROUTE default_gateway=192.168.1.1
Tue Sep 4 00:44:05 2012 TUN/TAP device tap0 opened
Tue Sep 4 00:44:05 2012 TUN/TAP TX queue length set to 100
Tue Sep 4 00:44:05 2012 /usr/sbin/ip link set dev tap0 up mtu 1500
Tue Sep 4 00:44:05 2012 /usr/sbin/ip addr add dev tap0 10.8.0.2/24 broadcast 10.8.0.255
Tue Sep 4 00:44:05 2012 /usr/sbin/ip route add 127.0.0.1/32 via 192.168.1.1
Tue Sep 4 00:44:05 2012 /usr/sbin/ip route add 0.0.0.0/1 via 10.8.0.1
Tue Sep 4 00:44:05 2012 /usr/sbin/ip route add 128.0.0.0/1 via 10.8.0.1
Tue Sep 4 00:44:05 2012 /usr/sbin/ip route add 10.8.0.0/24 via 10.8.0.1
RTNETLINK answers: File exists --> Peut-être qu'il essaye de faire une deuxième route vers 10.8.0.0/24 ?
Tue Sep 4 00:44:05 2012 ERROR: Linux route add command failed: external program exited with error status: 2
Tue Sep 4 00:44:05 2012 Initialization Sequence Completed --> Ou pas.
CONFIG Côté serveur :

Code : Tout sélectionner

mode server
proto tcp-server
port 9418
# routage IP
dev tap
[...] (clés)
server 10.8.0.0 255.255.255.0
push "route 10.8.0.0 255.255.255.0"
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
duplicate-cn

CONFIG Côté Client(s) :

Code : Tout sélectionner

# ADRESSE IP DU SERVEUR 
remote localhost --> Le réseau local rebondit vers l'adresse réelle (serveur de rebond)
proto tcp-client
port 2223 --> Le port local rebondit vers le port réel (serveur de rebond)
dev tap0
tls-client
[...] (clés)
pull
verb 3


Route unique AVANT le premier (et les autres) lancement(s) d'OpenVPN :
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.5 metric 202

Routes établies lorsque OpenVPN est lancé :
0.0.0.0/1 via 10.8.0.1 dev tap0
default via 192.168.1.1 dev eth0 metric 202
10.8.0.0/24 dev tap0 proto kernel scope link src 10.8.0.2
127.0.0.1 via 192.168.1.1 dev eth0
128.0.0.0/1 via 10.8.0.1 dev tap0
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.5 metric 202
(aucun réseau pingable hormis localhost et mon réseau physiquement local)


Petite aide : 192.168.1.0/24 --> Mon réseau physiquement local
10.8.0.0/24 --> Mon réseau privé distant (celui que ze veux le rejoindre)


Voilà pour mon soucis. J'ai fait moultes recherches, et comme j'aime pas abandonner, ça me bouffe un temps fou.
Dans l'espoir que mon problème est spécifique et que la solution est en fait toute simple, je remercie d'avance ceux qui accepteront de s'arracher les cheveux à ma place :]
Dernière modification par Latoof le mer. 05 sept. 2012, 19:40, modifié 2 fois.
Avatar de l’utilisateur
cdemoulins
Chu Ko Nu
Messages : 310
Inscription : mar. 11 mars 2008, 04:15
Localisation : Paris

Re: [ OpenVPN && ip route ] "RTNETLINK answers: File exists"

Message par cdemoulins »

Salut,
Je ne suis pas un expert mais voilà quelques pistes.

Je pense que si tu enlève juste la ligne :

Code : Tout sélectionner

push "route 10.8.0.0 255.255.255.0"
De la conf de ton serveur, cela éliminera le message d'erreur.
Cette ligne fait tout le boulot.

Code : Tout sélectionner

push "redirect-gateway def1 bypass-dhcp"
Pour la conf suivante :

Code : Tout sélectionner

proto tcp-server

Code : Tout sélectionner

proto tcp-client
Normalement c'est :

Code : Tout sélectionner

proto tcp

Code : Tout sélectionner

client
proto tcp
Et sinon, il y a une raison pour que tu utilise tap au lieu de tun ? Vu que tun est plus simple à mettre en place et plus rapide.
Latoof
newbie
Messages : 8
Inscription : ven. 28 janv. 2011, 22:46

Re: [ OpenVPN && ip route ] "RTNETLINK answers: File exists"

Message par Latoof »

Bonsoir.

Effectivement, j'avais oublié de commenter une ligne dans mon fichier de configuration. Et c'est visiblement cette ligne qui causait l'erreur "File exists". Merci à toi.

Cependant, l'état des routes reste le même après correction, et je ne comprends toujours pas pourquoi la connexion ne passe pas.
Quand je regarde la logique des routes :
- "default via 192.168.1.1 dev eth0" --> Passer par cette passerelle par défaut.
- "10.8.0.0/24 dev tap0" --> Passer par l'interface virtuelle crée pour accéder au réseau 10.8.0.0/24.
- "0.0.0.0/1 via 10.8.0.1 dev tap0" --> Passer par le réseau 10.8.0.0/24 et sa passerelle 10.8.0.1 pour tout autre accès.


Je vais essayer de voir ce qui change avec tun0, mais en principe, j'aurais aimé connecter mes machines en même temps au même VPN.


EDIT :
- "128.0.0.0/1 via 10.8.0.1 dev tap0" --> Cette route me paraissait bizarre. En la supprimant, j'arrive à pinger 10.8.0.1, donc je contacte bien mon VPN, et j'arrive à accéder aux fichiers/sites/ressources stockées dessus via mes applications.
En revanche, le traffic n'est pas/plus redirigé vers le reste du monde. A priori, le trafic "général" est acheminé par ma passerelle "physique", et pas le VPN.


Si je delete puis re-add la route "default via 192.168.1.1 dev eth0", j'accède avec succès à Google et d'autres site dont le nom de domaine n'avait pas encore été résolu (ce qui exclut un problème DNS), mais aucun site dont l'IP se situe dans les "170.***", ce qui répond peut être à ma question concernant la route "128.0.0.0" que je trouvais bizarre (et que j'ai supprimé).

Je vais redémarrer tout ça, car avec tous ces bidouillages, je vais faire foirer mes futurs diagnostiques


EDIT2 :
Bon, à priori, les routes "0.0.0.0/1" et "128.0.0.0/1" se complètent pour former une "route par défaut secondaire" (afin que la passerelle reste joignable). Il n'empêche que je n'accède à la plage "0.0.0.0/1" que si je supprime "128.0.0.0/1" :/
Répondre