De tunnel komt op, het pictogram wordt groen en het lokale netwerk verdwijnt: printers, de NAS en de kantoorrouter antwoorden allemaal niet meer. FortiClient doet wat het profiel heeft gevraagd. De gateway heeft een standaardroute gepusht, de client heeft die geïnstalleerd, en elk pakket heeft nu een pad de tunnel in. De reparatie is een bewerking van de routetabel met een DNS-bewerking erachter, en de volgorde van die bewerkingen bepaalt of de machine er beter of slechter uitkomt.

Wat de client installeerde, en waarom het LAN verdween

Begin met het lezen van de tabel in plaats van de clientinterface. Op macOS drukt netstat -rn de hele tabel af en noemt route -n get default de interface en metriek die nu winnen; op Linux is het paar ip route show en ip route get 8.8.8.8. Beide beantwoorden één vraag: welke vermelding draagt een pakket dat op niets specifieks past.

De naam van het tunnelapparaat ligt niet vast. Een IKEv2-profiel op macOS toont meestal utun met een nummer, de SSL VPN-client toont ppp0, en OpenVPN toont tun0. Twee standaardroutes kunnen ook tegelijk aanwezig zijn met verschillende metrieken, en de clientvermelding neemt misschien pas over na een herverbinding en niet op het moment dat hij verschijnt. Daarom kunnen twee tabeldumpen met vijf minuten ertussen verschillende verhalen vertellen.

Waarom de standaardroute van de tunnel eerst weg moet

De kernel kiest het langst passende prefix en wanneer meerdere routes even specifiek zijn, kiest hij die met de laagste metriek. Een client die 0.0.0.0/0 met een betere metriek installeert, wint dus elke bestemming zonder de oorspronkelijke standaardroute te verwijderen, en daarom staat de fysieke route nog in de tabel en verklaart die nog steeds de storing. Eerst de standaardroute van de tunnel verwijderen herstelt het eerdere gedrag. Pas dan doet een prefixroute door de tunnel wat de auteur bedoelde.

Prefixen toevoegen vóór die stap is de fout die een half werkende machine oplevert. Verkeer voor het nieuwe prefix volgt de tunnel, en alles wat niet in de lijst staat volgt ook de standaardroute van de tunnel, dus niets lijkt kapot tot iemand een dienst opent die niemand heeft toegevoegd. Verwijder, herstel en voeg dan toe, en de tussenstand blijft voorspelbaar.

De volgorde op macOS en op Linux

Op macOS verwijdert de volgorde de standaardroute van de tunnel, herstelt de fysieke standaardroute en stuurt één kantoorprefix terug de tunnel in. Vervang de voorbeeldinterfacenamen hier door die uit je eigen tabel.

sudo route delete -net default -interface utun4
sudo route add -net 0.0.0.0 -interface en0
sudo route add -net 10.20.0.0 -netmask 255.255.0.0 -interface utun4

Op Linux gebruikt dezelfde volgorde een ander hulpmiddel: de LAN-gateway voor de standaardroute en het tunnelapparaat voor het kantoorprefix. De oude opdracht route accepteert nog de oude syntaxis, maar ip route is de vorm die bij de huidige documentatie past.

sudo ip route del default dev tun0
sudo ip route add default via 192.168.50.1
sudo ip route add 10.20.0.0/16 dev tun0

Wanneer de route een volgende hop nodig heeft in plaats van een apparaat, neem dan de peer uit de uitvoer van de client. Gokken levert een van twee fouten op, en ze betekenen iets anders: een verkeerde gateway geeft meteen network unreachable, terwijl een verkeerd tunneldoel een time-out geeft. Lees welke je kreeg voordat je de opdracht opnieuw wijzigt.

Prefixen, de resolver en de DMZ die donker blijft

Eén prefix dekt het werk zelden af. Applicatieservers, beheernetwerken, de DMZ en de DNS-servers zelf kunnen elk in een ander bereik zitten, dus noem elk bereik dat je kunt benoemen voordat je begint en test een lookup naast elke ping. Een bestemming die midden in de test wordt ontdekt, is degene die in het wijzigingslogboek wordt vergeten. Een route die op adres antwoordt maar op naam faalt, is meestal een resolverprobleem in een routing-kostuum.

De resolver is een aparte beslissing. Wanneer het profiel interne DNS-servers heeft gepusht, kan het weghalen van de standaardroute die adressen onbereikbaar maken voor openbare namen of alleen bereikbaar via de tunnel, en beide toestanden geven verwarrende deelresultaten. Routeer de resolveradressen door de tunnel, of configureer resolutie per domein zodat openbare opzoekingen de lokale resolver gebruiken.

De Linux SSL-client heeft een veldspecifieke storing die de moeite waard is om te kennen: de tunnel verbindt, het kantoor-LAN antwoordt, en één DMZ-bereik blijft donker. Het ontbrekende stuk is een route voor dat bereik via de tunnelgateway, en de gateway verschilt per machine, dus een hardgecodeerd adres is hoe de volgende laptop stukgaat. Leid het af uit de status van de client en houd de opdracht zelfdocumenterend:

PEER=$(ip -4 addr show dev ppp0 | awk '/peer/ {print $4}' | cut -d/ -f1)
sudo ip route add 192.168.30.0/24 via "$PEER"

Lees de twee waarden voordat je hem uitvoert. peer is het verre uiteinde van een punt-tot-punt-tunnel, en dat is het adres dat de DMZ-route nodig heeft; op een gerouteerde tunnel is het equivalent de interface of de gateway die de client rapporteert. Als geen van beide verschijnt, zit de client niet in de modus die je aannam.

Na de volgende verbinding, en wanneer je hiermee lokaal moet stoppen

FortiClient maakt opnieuw verbinding na een slaapstand of een netwerkwijziging en installeert opnieuw wat het profiel voorschrijft. Handmatige routes overleven dus alleen tot de volgende verbinding, en dat is precies het interval waarin één geslaagde test op een oplossing kan lijken. Een route die 's nachts verdwijnt is verwacht gedrag, geen nieuwe storing.

Er zijn twee duurzame antwoorden. Een script dat de correctie na elke verbinding opnieuw uitvoert is een omweg die zijn auteur kan overleven, terwijl een split-tunnelprofiel van de gatewaybeheerder de echte oplossing is, omdat de client dan alleen de bereiken installeert die het werk nodig heeft. Vraag om het tweede en gebruik het eerste alleen terwijl je wacht. Controleer ook het beleid dat je hebt geaccepteerd voordat je een volledige tunnel lokaal splitst, want het externe netwerk kan erop vertrouwen dat het al je verkeer ziet.

De checklist is kort: lees de tabel, verwijder de standaardroute van de tunnel, herstel de LAN-standaardroute, voeg elk prefix toe, repareer de resolutie apart, en verwacht dat de routes terugkomen bij herverbinding.

Gerelateerde artikelen