Wat er echt gebeurt als je een VPN op Linux start
Een VPN op Linux starten maakt een interface aan, installeert routes en wijzigt de resolver. Weten welke dienst elke stap bezit, verklaart de meeste installatiefouten.
Druk op verbinden en er veranderen drie dingen op een Linux-machine: er verschijnt een interface, er worden routes geïnstalleerd, en de resolver begint anders te antwoorden. De meeste installatiefouten komen doordat een van die drie zonder de andere gebeurt, of doordat twee programma's het oneens zijn over wie ze bezit. De volgorde begrijpen verklaart de fout sneller dan de loguitvoer van een client lezen.
Er verschijnt een interface voordat er iets werkt
Een tunnelclient opent een virtuele interface en geeft er pakketten aan. Een TUN-apparaat draagt IP-pakketten, wat een gerouteerde VPN nodig heeft; een TAP-apparaat draagt Ethernet-frames, wat een overbrugd ontwerp nodig heeft. De kernelmodule levert het apparaat, en de client bezit het zolang de sessie duurt.
Dat de interface omhoog komt is niet hetzelfde als een werkende tunnel. Hij kan met een adres bestaan terwijl de peer onbereikbaar is, en daarom is de interfacelijst de eerste controle en niet de laatste. Een apparaat dat zichzelf omhoog meldt, beschrijft de kijk van de kernel op een virtuele verbinding, niet de bereidheid van de peer om te antwoorden.
Laat de meegeleverde interfacemodus met rust. Een TUN-profiel naar TAP veranderen maakt van een gerouteerde server geen overbrugde, en het levert meestal een verbinding op die tot stand komt en niets doorstuurt.
Routes worden geïnstalleerd door wie de tunnel bezit
Routes zijn de tweede verandering, en hun eigenaarschap is belangrijker dan hun inhoud. Een NetworkManager-profiel, een systemd-unit en een met de hand gestarte client kunnen allemaal routes installeren, en als twee daarvan dat tegelijk doen ontstaat een tabel die niemand later kan verklaren.
ip -br addr show ip route show ip -6 route show
Een full-tunnelprofiel vervangt de standaardroute; een split-tunnelprofiel voegt specifiekere routes toe en laat de standaardroute met rust. Beide zijn normaal, en het tweede is de reden waarom het verwijderen van een standaardroute een slechte eerste test is op een machine die je op afstand beheert. Hem verwijderen is ook de snelste manier om de sessie te verliezen die je gebruikt om het probleem op te lossen.
Lees de tabel in plaats van aan te nemen. Een specifiekere route of een beleidsregel kan verkeer de tunnel in sturen terwijl de standaardroute nog naar de fysieke interface wijst, wat tegenstrijdig lijkt tot je de hele tabel leest. Die combinatie is normaal voor split-tunnel en verwarrend voor wie verwacht dat één regel het ontwerp beschrijft. Zoek de route die bij je werkelijke bestemming past, niet die bij het diagram past.
De resolver wisselt van eigenaar
DNS is de derde verandering en degene die het vaakst ergens wordt beheerd waar je niet hebt gekeken. Op een desktop kan NetworkManager resolverinstellingen per verbinding doorgeven. Op een systeem met systemd-resolved worden de instellingen per link toegepast en /etc/resolv.conf kan een stub of een symbolische link zijn in plaats van een bestand dat je zou moeten bewerken.
resolvectl status readlink -f /etc/resolv.conf cat /etc/resolv.conf
Als een handmatige wijziging aan het resolverbestand na een herverbinding verdwijnt, is dat het signaal om het onderdeel te vinden dat het onderhoudt en in plaats daarvan het profiel te wijzigen. Het gegenereerde bestand bewerken is een wijziging die een herverbinding wist.
Privénamen hebben meestal de interne resolver nodig en de zoekdomeinen die de operator heeft geleverd. Vervangen door een publieke resolver kan precies de bron breken waarvoor de VPN bestaat, en het symptoom lijkt op een routeringsfout en niet op een DNS-fout. Test de naam en het adres apart, want dat het ene werkt en het andere faalt vertelt je precies waar je moet kijken. Die ene vergelijking bespaart een uur routedebugging.
Eén beheerder per verbinding
Het profielformaat bepaalt welk programma het kan gebruiken. Een OpenVPN-profiel vereist OpenVPN of een compatibele plugin, en een WireGuard-configuratie heeft een eigen formaat met peersleutels en toegestane prefixen. Een importvenster vertaalt het ene niet naar het andere, wat de bestandsextensie ook suggereert.
Kies één beheerder en laat die de verbinding bezitten. Dezelfde tunnel via twee hulpmiddelen omhoog brengen maakt de routetabel en het herverbindingsgedrag dubbelzinnig, en de tweede die start wint meestal op manieren die moeilijk te reproduceren zijn.
Installeer de pakketten die je distributie ondersteunt en haal het profiel bij de operator. Behandel het als een inloggegeven, want het bevat meestal een privésleutel of gelijkwaardig materiaal, en bewaar het waar de rest van je geheimen woont. Een profiel dat in een downloadmap blijft liggen is een sleutel die op een bureau blijft liggen.
Wat je moet controleren als hij omhoog is maar niet werkt
Met de interface omhoog en de client die succes meldt, werk naar buiten: selecteert de routetabel de tunnel voor de bestemming, antwoordt de resolver voor de privénaam, en heeft de andere kant een terugweg. Elk heeft een eigen commando en een eigen eigenaar.
nmcli connection show --active nmcli device status wg show
De nmcli-referentie documenteert de status- en verbindingscommando's als je de volledige set nodig hebt. Wat hier telt is het onderscheid tussen een profiel dat actief is en een apparaat dat verkeer draagt, want de twee kunnen het oneens zijn.
Verbind één keer opnieuw via dezelfde beheerder voordat je de installatie voltooid noemt, en controleer dat DNS na een verbreking nog werkt. Een configuratie die alleen werkt tot de eerste netwerkwijziging is niet voltooid, ze werkt alleen op dit moment.