Ich muss mich per VPN uber FortiClient verbinden, um meine Arbeit zu erledigen und sicher auf einige Ressourcen zuzugreifen. Als ich im Marz 2021 fur mein Unternehmen zu arbeiten begann, gaben sie mir ein M1 MacBookPro. Das M1 MacBookPro unterscheidet sich von den anderen, da es mit einer neuen CPU-Architektur kommt. Fruher verwendete Apple eine Intel-basierte CPU, aber jetzt haben sie sich entschieden, macOS mit einer ARM-basierten CPU zu betreiben, und Apple nennt sie vorerst M1.

Viele Software ist nicht mit ARM kompatibel. Manchmal habe ich Probleme wie "Diese Komponente ist nicht mit deiner CPU kompatibel".

Als ich mich per VPN uber FortiClient v6.4.3.1325 verband, sah es so aus, als ware die Verbindung hergestellt, aber meine Internetgeschwindigkeit wurde viel zu langsam. Normalerweise habe ich 100MB/s Internetgeschwindigkeit. Ich fragte meine Kollegen: "Habt ihr irgendwelche Probleme mit dem VPN und/oder der VPN-Geschwindigkeit?" und sie sagten "NEIN!" Sie verwenden ein etwas alteres MacBookPro als meines mit einer Intel-basierten CPU und ich dachte, es sei eine normale Situation, weil die Intel-basierten Versionen in Ordnung und stabil sind.

Ich begann mit dem Debugging, um die Ursache zu finden, und uberprufte die Routingtabelle vor der VPN-Verbindung.

  ~ netstat -rn
Routing tables

Internet: Destination Gateway Flags Netif Expire default 192.168.31.1 UGScg en0 127 127.0.0.1 UCS lo0 127.0.0.1 127.0.0.1 UH lo0 169.254 link#14 UCS en0 ! 192.168.31 link#14 UCS en0 ! 192.168.31.1/32 link#14 UCS en0 ! 192.168.31.1 ec:41:18:ec:c6:bc UHLWIir en0 1189 192.168.31.147/32 link#14 UCS en0 ! 192.168.31.147 a0:78:17:87:b4:88 UHLWI lo0 192.168.31.171 b8:bc:5b:6:28:18 UHLWI en0 1165 192.168.31.255 ff:ff:ff:ff:ff:ff UHLWbI en0 ! 224.0.0/4 link#14 UmCS en0 ! 224.0.0.251 1:0:5e:0:0:fb UHmLWI en0 239.255.255.250 1:0:5e:7f:ff:fa UHmLWI en0 255.255.255.255/32 link#14 UCS en0 !

Meine Routingtabelle sieht okay aus. 192.168.31.1 ist mein WLAN-Router und die Standardroute fuhrt zu meinem WLAN-Router. Das ist okay.

Danach verband ich mich per VPN uber FortiClient und uberprufte erneut meine Routingtabelle. 10.212.134.152 ist meine lokale IP-Adresse, die von FortiClient zugewiesen wurde.

  ~ netstat -rn
Routing tables

Internet: Destination Gateway Flags Netif Expire default link#19 UCSg ppp0 default 192.168.31.1 UGScIg en0 …

Unser VPN-Dienst verwendet kein Split-Tunneling und link#19 ODER 10.212.134.152 sollte der nachste Hop fur die Standardroute sein, gleichzeitig mit meinem WLAN-Router.

Ich losche meine Standardroute!

Ja, ich beschloss, meine Routingtabelle manuell zu manipulieren.

  ~ sudo route delete default
Password:
delete net default

Jetzt sollte der nachste Hop meine FortiClient lokale IP-Adresse sein. In meinem Fall ist es 10.212.134.152. Diese lokale IP-Adresse ist dynamisch und andert sich bei jeder Verbindung, da DHCP diese IP-Adresse zuweist.

Jetzt, wie sieht meine Routingtabelle aus? Die Standardroute sollte nicht mehr da sein...

  ~ netstat -rn
Routing tables

Internet: Destination Gateway Flags Netif Expire default 192.168.31.1 UGScIg en0 …

link#19 ist aus der Standardroute verschwunden. Schon! Und jetzt habe ich keinen Internetzugang mehr. Als Standardroute ist mein WLAN-Router immer noch in der Routingtabelle, aber FortiClient nutzt ihn, um mit dem VPN verbunden zu bleiben. Ja, ich bin immer noch mit dem VPN verbunden, aber ich habe keinen nachsten Hop.

  ~ 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

Lass uns eine neue Standardroute hinzufugen...

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

Jetzt kann ich 8.8.8.8 anpingen, nachdem ich eine neue Standardroute hinzugefugt habe.

  ~ 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
...
--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 packets received, 0.0% packet loss

Gegenprufung

Ich habe die Routingtabelle ein letztes Mal uberpruft, um zu sehen, was der Unterschied nach dem Loschen und Hinzufugen der Standardroute ist.

  ~ netstat -rn
Routing tables

Internet: Destination Gateway Flags Netif Expire default 10.212.134.152 UGScg ppp0 default 192.168.31.1 UGScIg en0 …

Jetzt lauft alles perfekt. Meine VPN-Verbindung ist stabil und schnell!

Bonus

Ich muss die Standardroute loschen und neu hinzufugen, wenn ich mich mit dem VPN verbinden muss, und das jeden Tag. Ich mochte nicht jedes Mal manuell eine Route loschen und hinzufugen, also habe ich ein kleines Bash-Skript fur diese Routine geschrieben.

Du kannst das Skript in deinem /usr/local/bin/-Pfad mit sudo vim speichern. Vergiss danach nicht, die chmod-Berechtigungen fur das Skript hinzuzufugen.

#!/bin/bash

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

sudo route delete default sudo route add default $FortiIP

Wenn du von Anfang an gelesen hast, sollte ich Danke sagen! : )