default via $routeur dev eth0
“default” = 0.0.0.0/0, soit n’importe quelle adresse, tout l’espace d’adressage. Il s’agit de la route par défaut qui détermine le routage des destinations qui ne sont pas prises en compte par une route plus précise. Ici, les paquets sont envoyés par l’interface eth0 au routeur dont l’adresse est $routeur. Cette route peut être créée par l’option “gateway” du fichier /etc/network/interfaces. Il ne doit y en avoir qu’une seule pour tout le système, quel que soit le nombre d’interfaces présentes et de réseaux connectés.
$routeur dev eth0 scope link
Cette route, si tu l’as transcrite correctement, indique que les paquets destinés à l’adresse $routeur sont émis directement sur l’interface eth0. Habituellement la table de routage contient plutôt une route pour tout le bloc d’adresses du sous-réseau local (noté avec un /N ou N est la taille du préfixe CIDR, par exemple /24 pour un masque 255.255.255.0). Mais si la machine n’a pas de voisins dans le sous-réseau ou n’a pas besoin de communiquer directement avec eux, une route pour le routeur suffit.
$client via $routeur dev eth0
Il s’agit de la route créée par la commande ip route add
. Pour le moment elle est redondante avec la route par défaut, mais lorsque le VPN remplace la route par défaut ou ajoute des routes qui ayant priorité sur la route par défaut (voir plus bas), cette route maintiendra le routage de l’adresse $client via le routeur $routeur et non via le VPN.
0.0.0.0/1 via 10.200.143.1 dev tun0
128.0.0.0/1 via 10.200.143.1 dev tun0
Ces deux routes créées par le VPN vont ensemble. A elles deux, elles couvrent tout l’espace d’adressage (0.0.0.0/1 = 0.0.0.0 à 127.255.255.255 et 128.0.0.0/1 = 128.0.0.0 à 255.255.255.255) et sont donc équivalentes à une route par défaut, à une nuance près : comme elles ont individuellement une plage de destination plus petite qu’une vraie route par défaut, elles ont priorité sur celle-ci. C’est une astuce pour ne pas modifier la route par défaut existante tout en la rendant inactive lorsque le VPN est actif, puisqu’il ne doit pas y avoir plusieurs routes par défaut (car on ne peut pas déterminer avec fiabilité laquelle sera prise en compte).
Avec ces deux routes les paquets non couverts par une route plus précise sont envoyés par l’interface du VPN tun0. Une adresse de routeur correspondant à l’adresse du serveur VPN à l’intérieur du VPN est mentionnée mais elle n’est pas utilisée car une interface “tun” est de type point-à-point.
10.200.143.0/24 dev tun0 proto kernel scope link src 10.200.143.137
Cette route indique que les paquets destinés au sous-réseau du VPN ( 10.200.143.0/24 = 10.200.143.0 à 10.200.143.255) sont émis par l’interface tun0 avec l’adresse source par défaut 10.200.143.137, qui doit être l’adresse configurée sur l’interface tun0. Comme c’est une adresse privée, on peut en déduire que l’opérateur du VPN fait du NAT en sortie vers internet (cf. mon premier message).
Concernant la vérification de l’adresse du script, elle est effectuée via des requêtes HTTP vers trois sites différents qui n’ont rien à voir avec l’adresse de ta connexion utilisée pour SSH. Je ne vois donc pas en quoi la route ajoutée peut interférer.
As-tu essayé d’exécuter les commandes curl
manuellement sans la redirection de la sortie d’erreur2>/dev/null
avec et sans VPN pour voir le résultat et le message d’erreur ?