J'ai besoin de me connecter au VPN via FortiClient pour faire mon travail et acceder a certaines ressources en toute securite. Quand j'ai commence a travailler pour mon entreprise en mars 2021, ils m'ont donne un M1 MacBookPro. Le M1 MacBookPro est different des autres car il est equipe d'une nouvelle architecture CPU. Auparavant, Apple utilisait un CPU base sur Intel mais maintenant, ils ont decide d'executer macOS avec un CPU base sur ARM et Apple l'a appele M1 pour l'instant.

De nombreux logiciels ne sont pas compatibles avec ARM. Parfois, j'ai des problemes du type "Ce composant n'est pas compatible avec votre CPU".

Quand je me suis connecte au VPN via FortiClient v6.4.3.1325, il semble connecte mais ma vitesse Internet devient trop lente. Normalement, j'ai 100 Mo/sec de vitesse Internet. J'ai demande a mes collegues "avez-vous des problemes avec le VPN et/ou la vitesse du VPN ?" et ils ont repondu "NON !" Ils utilisent un MacBookPro un peu plus ancien que le mien avec un CPU base sur Intel et j'ai pense que c'etait une situation normale car les versions basees sur Intel sont stables.

J'ai commence a deboguer pour trouver la cause racine et j'ai verifie la table de routage avant de me connecter au VPN.

  ~ netstat -rn
Routing tables

Internet: Destination Gateway Flags Netif Expire default 192.168.31.1 UGScg en0 127 127.0.0.1 UCS lo0 …

Ma table de routage semble correcte. 192.168.31.1 est mon routeur sans fil et la route par defaut pointe vers mon routeur sans fil. C'est normal.

Apres cela, je me suis connecte au VPN via FortiClient et j'ai reverifie ma table de routage. 10.212.134.152 est mon adresse IP locale attribuee par FortiClient.

Notre service VPN n'utilise pas le split-tunneling et link#19 OU 10.212.134.152 devrait etre le prochain saut pour la route par defaut avec mon routeur sans fil en meme temps.

Je supprime ma route par defaut !

Oui, j'ai decide de manipuler ma table de routage manuellement.

  ~ sudo route delete default
Password:
delete net default

Maintenant, le prochain saut devrait etre mon adresse IP locale FortiClient. C'est 10.212.134.152 dans mon cas. Cette adresse IP locale est dynamique et change a chaque connexion car le DHCP attribue cette adresse IP.

Maintenant, a quoi ressemble ma table de routage ? La route par defaut ne devrait pas etre la...

link#19 a disparu de la route par defaut. Super ! Et maintenant, je ne peux plus acceder a Internet. Comme route par defaut, mon routeur sans fil est toujours dans la table de routage mais FortiClient l'utilise pour rester connecte au VPN. Oui, je suis toujours connecte a Internet mais je n'ai pas de prochain saut.

  ~ ping -c 4 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
ping: sendto: No route to host
...
--- 8.8.8.8 ping statistics ---
4 packets transmitted, 0 packets received, 100.0% packet loss

Ajoutons une nouvelle route par defaut...

  ~ sudo route add default 10.212.134.152
add net default: gateway 10.212.134.152

Maintenant, je peux pinger 8.8.8.8 apres avoir ajoute une nouvelle route par defaut.

  ~ ping -c 4 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: icmp_seq=0 ttl=114 time=99.007 ms
64 bytes from 8.8.8.8: icmp_seq=1 ttl=114 time=98.277 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=114 time=103.634 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=114 time=104.365 ms

— 8.8.8.8 ping statistics — 4 packets transmitted, 4 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 98.277/101.321/104.365/2.704 ms

Verification croisee

J'ai verifie la table de routage une derniere fois pour voir la difference apres avoir supprime et ajoute la route par defaut.

Maintenant, tout fonctionne parfaitement. Ma connexion VPN est stable et rapide !

Bonus

J'ai besoin de supprimer et d'ajouter une nouvelle route par defaut quand je dois me connecter au VPN et chaque jour j'ai besoin de me connecter. Je ne veux pas supprimer et ajouter une nouvelle route manuellement et j'ai ecrit un petit script bash pour cette routine.

Vous pouvez sauvegarder le script dans votre chemin /usr/local/bin/ avec sudo vim. Apres cela, n'oubliez pas d'ajouter les permissions chmod pour le script.

#!/bin/bash

FortiIP=$(netstat -rn | grep “10.212.134” | awk ‘{print $2}’)

sudo route delete default sudo route add default $FortiIP

Si vous avez lu depuis le debut, je dois dire merci ! : )