web-dev-qa-db-fra.com

Routage de tout le trafic sur VPN sous Ubuntu Linux

Après avoir passé des heures à dépanner, rechercher des solutions potentielles sur ce site et sur d’autres, je me suis résigné à demander l’avis de mes parieurs. Je travaille pour acheminer tout le trafic réseau sur une instance d'Ubuntu via un VPN Cisco dans une université. En utilisant le gestionnaire de réseau intégré ou vpnc, je peux établir avec succès une connexion au VPN et acheminer avec succès le trafic vers l’adresse IP d’une université via le VPN. Cependant, en dehors de ces plages IP spécifiques, je ne peux pas sembler évoquer une route qui mappera avec succès tout le trafic réseau sur le VPN.

Jusqu'à présent, j'ai tenté:

 route ajouter -net 0.0.0.0 gw homeportal dev tun0 
 route ajouter -net 0.0.0.0 tun0 
 route ajouter -net 0.0.0.0 gw 128.122.252.77 dev tun0 
 route ajouter -net 0.0.0.0 gw 128.122.252.77 dev eth0 
 iptables -A FORWARD -o tun0 -j ACCEPTER 
 iptables -A FORWARD -i tun0 -j ACCEPTER 
 iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE. ____.]

Et bien d’autres choses stupides, inefficaces, que je ne me rappelle pas assez bien pour transcrire avec précision.

En outre, j'ai essayé de router des plages d'adresses IP plus petites et des adresses IP spécifiques, chacune en vain. Je ne suis pas vraiment sûr de ce qui ne va pas, car l'ampleur des effets que j'ai pu observer est un échec de la résolution de nom et un échec de l'acheminement du trafic sur le VPN. Qu'est-ce que je fais mal ici?

Modifier-

Voici la sortie de ip route show après le démarrage de la connexion VPN avec VPNC:

 défaut via 192.168.1.254 dev eth0 proto static 
 10.0.0.0/8 lien de portée dev tun0 
 91.230.41.0/24 lien de portée dev tun0 
 128.122.0.0/16 dev tun0 lien de portée 
 128.122.252.68 via 192.168.1.254 dev eth0 src 192.168.1.32 
 128.122.253.46 dev tun0 lien de portée 
 128.122.253.79 dev tun0 lien de portée 
 ____.] 172.16.0.0/12 dev tun0 lien de portée 
 192.168.0.0/16 dev tun0 lien de portée 
 192.168.1.0/24 dev eth0 proto noyau lien de noyau src 192.168.1.32 métrique 1 
 193.175.54.0/24 lien de portée dev tun0 
 193.205.158.0/25 lien de portée dev tun0 
 193.206.104.0/24 lien de portée dev tun0 
 195.113.94.0/24 dev tun0 lien de portée 
 203.126.200.0/24 dev tun0 lien de portée 
 203.174.165.128/25 dev tun0 lien de portée 
 212.219.93.0/24 dev tun0 lien de portée 
 216.165.0.0/17 dev tun0 lien de portée 

Plus d'information-

J'ai acheminé avec succès du trafic arbitraire sur ce VPN sous MS Windows via le client Cisco AnyConnect avec une configuration par défaut. Voici à quoi ressemble la table de routage lorsque le client AnyConnect fonctionne (il s'agit d'un ordinateur différent derrière le même routeur à l'adresse 192.168.1.254).

 Tableau de routage IPv4 
 ===================================== ==================================== 
 Routes actives: 
 Métrique d’interface de passerelle de masque de réseau de destination réseau 
 0.0.0.0 0.0.0.0 192.168.1.254 192.168.1.13 30 
 10.0.0.0 255.0.0.0 192.168.128.1 192.168.128.197 2 
 91.230. 41.0 255.255.255.0 192.168.128.1 192.168.128.197 2 
 127.0.0.0 255.0.0.0 En liaison 127.0.0.1 306 
 127.0.0.1 255.255.255.255 En liaison 127.0.0.1 306 
 127.255.255.255 255.255.255.255 En liaison 127.0.0.1 306 
 128.122.0.0 255.255.0.0 192.168.128.1 192.168.128.197 2 
 128.122.252.68 255.255.255.255 192.168.1.254 192.168.1.13. 31 
 172.16.0.0 255.240.0.0 192.168.128.1 192.168.128.197 2 
 192.168.0.0 255.255.0. 0 192.168.128.1 192.168.128.197 2 
 192.168.1.0 255.255.255.0 En liaison 192.168.1.13 286 
 192.168.1.13 255.255.255.255 En liaison 192.168.1.13 286 
 192.168 .1.254 255.255.255.255 Sur la liaison 192.168.1.13 31 
 192.168.1.255 255.255.255.255 Sur la liaison 192.168.1.13 286 
 192.168.31.0 255.255.255.0 sur la liaison 192.168.31.1 276 
 192.168.31.1 255.255.255.255 sur liaison 192.168.31.1 276 
 192.168.31.255 255.255.255.255 sur liaison 192.168.31.1 276 
 192.168.128.0 255.255.255.255 sur liaison 192.168. 128.197 257 
 192.168.128.197 255.255.255.255 Sur liaison 192.168.128.197 257 
 192.168.128.255 255.255.255.255 Sur liaison 192.168.128.197 257 
 192.168.128.255 255.255.255.255 Sur liaison 192.168.128.197 257 [.____. 192.168.203.0 255.255.255.0 On -link 192.168.203.1 276 
 192.168.203.1 255.255.255.255 Sur liaison 192.168.203.1 276 
 192.168.203.255 255.255.255.255 Sur liaison 192.168.203.1 276 
 193.175.54.0 255.255.255.0 192.168.128.1 192.168.128.197 2 
 193.205. 158.0 255.255.255.128 192.168.128.1 192.168.128.197 2 
 193.206.104.0 255.255.255.0 192.168.128.197 2 
 195.113.94.0 255.255.255.0 192.168.128.197 2 
 203.126.200.0 255.255.255.0 192.168.128.1 192.168.128.197 2 
 203.174.165.128 255.255.255.128 192.168.128.1 192.168.128.197 2 
 203.174.165.128 255.255.255.128 192.168.128.1 192.168.128.197 2 
 212.219.93.0 255.255.255.1 192.168.128.197 2 
 216.165.0.0 255.255.128.0 192.168.128.1 192.168.128.197 2 
 224.0.0.0 240.0.0.0 On-link 127.0.0.1 306 
 224.0.0.0 240.0.0.0 On- lien 192.168.1.13 286 
 224.0.0.0 240.0.0.0 Sur liaison 192.168.203.1 276 
 224.0.0.0 240.0.0.0 Sur liaison 192.168.31.1 276 
 224.0.0.0 240.0.0.0 Sur liaison 192.168.128.197 10000 
 255.255. 255.255 255.255.255.255 Sur liaison 127.0.0.1 306 
 255.255.255.255 255.255.255.255 Sur liaison 192.168.1.13 286 
 255.255.255.255 255.255.255.255 Sur liaison 192.168.203.1 276 
 255.255.255.255 255.255.255.255 Sur liaison 192.168.31.1 276 
 255.255.255.255 255.255.255.255 Sur liaison 192.168.128.197 10000 
 =============== =============================================== ============= 
10
deftfyodor

Votre réseau local est 192.168.1.0/24, comme indiqué par cette ligne dans votre table de routage:

 192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.32  metric 1

Votre réseau VPN est 10.0.0.0/8, comme indiqué par cette ligne:

 10.0.0.0/8 dev tun0  scope link 

Actuellement, votre routeur par défaut est:

 default via 192.168.1.254 dev eth0  proto static 

ce qui est bien sûr ce que vous ne voulez pas , car il appartient à votre réseau local: ainsi tout votre contenu est acheminé via votre passerelle locale, comme si le VPN n'existait pas.

 You do have however, the all-important statement

 128.122.252.68 via 192.168.1.254 dev eth0  src 192.168.1.32  

qui est la route à votre fournisseur de VPN.

MODIFIER:

Je n'avais pas réalisé que la table de routage est simplement celle obtenue de votre VPN, sans votre intervention. Cela peut indiquer (indirectement) que votre fournisseur de service est disposé à transférer uniquement le trafic explicitement autorisé dans votre table par le biais de l'interface tun0 et qu'il a peut-être pris des mesures supplémentaires pour bloquer tout autre trafic. Dans ce cas, vos efforts seront vains.

Toutefois, en supposant que votre fournisseur accepte de transférer tout votre trafic, vous devez procéder comme suit.

Tout d’abord, vous devez savoir s’il existe une passerelle disposée à accepter votre connexion de l’autre côté, car nous avons besoin de son adresse IP. Je vais vous donner quatre méthodes pour le faire.

1) Une fois le PC connecté au VPN, essayez la commande suivante:

   Sudo dhclient -v tun0

Si tout se passe bien, vous devriez voir une réponse contenant cette ligne:

 DHCPOFFER of a.b.c.d from x.y.w.z

x.y.w.z est l'adresse IP de la passerelle locale. Vous devrez peut-être éteindre votre VPN après ce test et peut-être même redémarrer votre ordinateur, car nous aurons bien foiré la table de routage.

2) Sinon, vous pouvez essayer de naviguer sur l’un des sites autorisés (ceux qui apparaissent dans votre table de routage comme passant par l’interface tun0 ), puis en émettant la commande suivante:

  ip neigh show

Vous devriez obtenir une liste des ordinateurs contactés via le protocole ARP, avec les adresses MAC et IP; très probablement, vous recevrez zéro ou une réponse. Si vous obtenez une seule réponse, alors c'est votre routeur.

3) Si vous n'obtenez pas une telle réponse, alors vous pouvez essayer avec

  Sudo nmap -sn 10.0.0.0/8

(ce qui va être très lent). Votre passerelle sera un des ordinateurs énumérés, probablement l'adresse dont l'adresse se termine par .1 ou par .254, le cas échéant.

4) Utilisez la commande tcpdump:

  Sudo tcpdump -n -i tun0

et voir les adresses IP spewed par la commande.

Si vous n'obtenez pas de réponse satisfaisante à ce test, cela signifie que quelqu'un a vraiment serré les vis dans son réseau.

Mais soyons optimistes et supposons que vous ayez maintenant une adresse IP candidate x.w.y.z pour le routeur distant. Vous devrez supprimer la passerelle par défaut (en tant que Sudo!):

  ip route del default via 192.168.1.254

un ajouter le nouveau:

  ip route add default via x.w.y.z 

et essayez de naviguer.

Permettez-moi de répéter: puisque votre fournisseur n'a autorisé le trafic que sur quelques adresses IP sélectionnées via son VPN, il est possible qu'il ait pris des mesures supplémentaires (= pare-feu) pour empêcher un utilisateur intelligent de forcer son trafic générique via son VPN. Dans ce cas, vous ne pouvez rien faire. Mais s'il ne le faisait pas, les étapes ci-dessus devraient vous aider à trouver une solution.

1
MariusMatutiae

Il ne manque pas de masques de réseau dans vos commandes route. Elles ne correspondent donc qu'à l'adresse 0.0.0.0 et non à Internet. Donc remplacez 0.0.0.0 par 0.0.0.0/0 dans la première commande que vous avez essayée:

ip route add -net 0.0.0.0/0 gw homeportal dev tun0

Il y a peut-être un inconvénient que je ne sais pas si votre client VPN résoudra tout seul: le point de terminaison du tunnel doit être exclu du routage via le VPN, il doit être routé via votre interface eth0. Donc, si l'ajout de cette route par défaut casse votre VPN, ajoutez une route spécifique pour votre point de terminaison VPN:

ip route add <ENDPOINT>/32 dev eth0

2
Teun Vink