Cron genstarter en helt sund VPN hvert tiende minut, og det samme job lader en død køre i en uge. Begge fejl kommer af at behandle «oppe» som én kendsgerning, når den er mindst fire. En enhed kan være administrativt aktiveret, korrekt rutet, fuldt krypteret og stadig ikke bære noget brugbart. Adskil observationerne først, og kontrollen skriver næsten sig selv.

Link-flags beskriver enheden, ikke stien

Den kontrol, alle kopierer, leder efter en hardwareadresse af lutter nuller. Det trick skelner en ægte grænseflade fra en pladsholder i nogle drivere og beviser intet i resten, fordi en tun-enhed slet ikke har nogen MAC at rapportere. ip -brief link show tun0 giver i stedet flags: UP betyder, at en administrator har aktiveret enheden, og LOWER_UP betyder, at driveren anser linket for brugbart. Læst sammen fortæller de, at enheden findes og ikke er administrativt nede. Ingen af dem fortæller, at en pakke har noget sted at gå hen.

OpenVPN opretter sin tun-enhed, før ruter installeres, så flagene kan se perfekte ud, mens intet er rutet. Behandl dem som en forudsætning, aldrig som svaret.

Spørg, hvor en pakke ville gå hen

Ruteopslag besvarer det spørgsmål, flagene ikke kan. ip route get 10.8.0.1 from 10.8.0.2 navngiver grænsefladen, kildeadressen og den tabel, kernen ville bruge, hvilket er præcis det, en split-tunnel skal kontrolleres imod. Uden kildeadressen spørger du om noget andet, og med policy-routing kan svaret variere per kilde. Det er den billigste ærlige test, fordi den konsulterer de samme regler, som din trafik vil bruge.

Til WireGuard skal du tilføje handshaken. wg show udskriver et seneste-handshake-tidsstempel per peer, og et tidsstempel, der er holdt op med at avancere, betyder, at peeren er væk, uanset hvad grænsefladeflagene siger. En konfigureret grænseflade uden et nyligt handshake er en af de mest almindelige falske positiver i hjemmelavet overvågning.

Tabel 220 fortæller IPsecs historie

strongSwan installerer ruter for forhandlede selectors i tabel 220, når ruteinstallation er aktiveret. ip route list table 220 skiller derfor forhandlet fra rutet: en tom tabel ved siden af en indlæst forbindelse betyder, at IKE- og CHILD-SA'erne kom op, mens ingen trafik ledes ind i dem. Kontroller ip xfrm state ved siden af, da den lister de installerede sikkerhedsassociationer og deres endepunkter.

En fældepolitik er det tilfælde, man skal holde øje med. Den venter på interessant trafik i stedet for at route den, så tabellen forbliver tom, indtil noget udløser tunnelen.

Manager-tilstand og daemon-tilstand er forskellige lister

NetworkManager lister kun de forbindelser, den ejer. nmcli -t -f NAME,TYPE connection show --active returnerer intet for en tunnel startet direkte af wg-quick eller af en OpenVPN-daemon.

Den forskel betyder noget, når et script skal afgøre, hvilken af to managere der skal spørges. Vælg den, der faktisk ejer tunnelen på denne host, og ignorér den andens tavshed. Hvis begge findes, afgør hvilken der er autoritativ, og deaktivér den anden, fordi to managere, der omskriver ruter på én grænseflade, producerer fejl, som ingen kan genskabe. En manglende post er information om manageren, ikke om tunnelen.

Gør det næste trin betinget af den kontrol, det har brug for

At polle en UDP-port beviser intet om parathed, fordi UDP ikke har noget handshake, og nc -u lykkes, så snart pakken forlader maskinen. Undersøg, hvad det næste trin faktisk forbruger: en TCP-forbindelse til den videresendte port, en anmodning til en host inde i tunnelen, et navn, der kun opløses der. Begræns ventetiden med en timeout og et antal forsøg, og fejl højlydt, når den løber ud.

Hooks slår polling, når klienten tilbyder dem. OpenVPNs --up og --down scripts kører, efter at grænsefladen skifter tilstand, hvilket fjerner kapløbet helt, men de kører med de privilegier, daemonen har beholdt. Hvis OpenVPN er faldet til en uprivilegeret konto gennem user og group, kører hooken som den konto. Genstart af en systemtjeneste kræver så sudo for at tillade netop den kommando. Giv genforsøget til tjenestemanageren i stedet for et cron-loop: en begrænset genstartspolitik med en startgrænse afslører en brudt tunnel, mens et ubegrænset loop skjuler den på ubestemt tid.

Relaterede artikler