Routershoppagina’s tonen VPN-routering als één selectievakje, en die formulering verbergt drie verschillende vragen. Komt de regel overeen met het apparaat dat het verkeer verstuurt, met de server die het ontvangt, of met beide? Wat gebeurt er met verkeer dat met geen van beide overeenkomt? En als twee regels overlappen, welke wint dan? Het antwoord als paar van bron en bestemming opschrijven maakt van een vage functielijst een testbaar ontwerp.

De functienaam verbergt twee uiteinden

Een mediaspeler die de tunnel moet gebruiken, is een bron-overeenkomst. Een privé-kantoorprefix dat via de tunnel bereikbaar moet zijn, is een bestemming-overeenkomst. Een werkstation dat de tunnel alleen voor één dienst moet gebruiken, is beide, en precies die doorsnede is het geval dat de meeste consumentenfirmware slecht afhandelt.

Schrijf de eis als paar op voordat je producten vergelijkt. Dat paar is wat je later test.

Een product met een apparaatlijst of een globale bestemmingslijst kan misschien niet «alleen dit apparaat, alleen deze bestemmingen» uitdrukken. Het verschil is niet cosmetisch: een globale bestemmingsregel stuurt het verkeer van elk apparaat naar die site door de tunnel, en een apparaatregel stuurt al het verkeer van dat apparaat. Geen van beide is de eis. Test dat geval met twee apparaten voordat je het scherm vertrouwt.

Bouw de regel als een doorsnede

Een tabel houdt het ontwerp eerlijk. Zet het scenario links en benoem daarna de afzender-overeenkomst en de doel-overeenkomst apart:

ScenarioSender matchTarget matchRule shape
Media player uses the tunnelPlayer addressAny internet destination except the LANSource only
Office prefix reachableAuthorized LAN devices10.40.0.0/16Target only
One app on one laptopLaptop addressThe service address setSource and target
Guest network never tunnelsGuest subnetAnyDeny, evaluated first

De derde rij is de interessante, omdat die beide helften tegelijk nodig heeft. Kan de firmware maar één as uitdrukken, dan moet de eis in twee regels worden gesplitst of naar een apparaat worden verplaatst dat het wel kan.

Houd de bronidentiteit stabiel. Een DHCP-reservering, een apart segment of een apparaatidentiteitsmechanisme werken, maar een adres dat na het verlopen van de lease verandert niet. Neem IPv6 mee, want één IPv4-adres identificeert niet al het verkeer van een apparaat.

De prioriteit bepaalt de overlap

Overlappende regels zijn normaal. Een brede apparaatregel en een smalle bestemmingsregel kunnen dezelfde stroom beschrijven, en de gedocumenteerde prioriteitsorde bepaalt welke wint. Een aantrekkelijk instellingenscherm vertelt je die orde niet.

Lees de handleiding voor de orde en voor het geval zonder overeenkomst, en test beide daarna met verkeer dat je kunt waarnemen:

ip rule show
ip route get 203.0.113.10

Als de documentatie de orde niet vermeldt, ga ervan uit dat de smallere regel misschien niet wint en ontwerp daaromheen. Twee regels die niet kunnen botsen, zijn eenvoudiger te ondersteunen dan één slimme regel met een ongedocumenteerde voorrang.

Namen hebben een vernieuwingsbeleid nodig

Een bestemming die als domein is geschreven, voegt een onderhoudsprobleem toe. De router moet die oplossen, de mapping vernieuwen, meerdere adressen en subdomeinen verwerken en omgaan met applicatie-DNS dat de verwachte resolver omzeilt.

Eén opzoekresultaat in een IP-regel kopiëren is een momentopname, geen domeinbeleid.

Bepaal hoe verouderd een antwoord mag zijn voordat de regel fout is, en wat de router doet als de resolutie mislukt. Een regel die het laatst bekende adres bewaart, kan een dienstmigratie overleven; een regel die de vermelding laat vallen, kan het tunnelen stil stoppen. Beide gedragingen zijn aanvaardbaar als ze naast de regel zijn opgeschreven.

Definieer de niet-beschikbare toestand

Een routevoorkeur dwingt geen verkeer dat alleen via VPN mag gaan af. Als de tunnel platligt, kan de router de stroom blokkeren, direct versturen of een andere tunnel gebruiken, en elke keuze heeft een andere foutsignatuur.

Bepaal welke de eis nodig heeft, en verifieer dat door de tunnel te stoppen en de stroom te volgen:

curl -sS -o /dev/null -w "%{http_code}" --max-time 5 https://service.example/
ping -c 2 203.0.113.10

Verkeer dat van de router zelf afkomstig is, is een apart domein. DNS-doorsturing, updatecontroles en monitoring kunnen nieuwe stromen vanaf de router zelf starten in plaats van de bron-overeenkomst van het apparaat te erven. Houd expliciet rekening met die stromen, anders verschijnen ze als onverklaarde lekken in de logboeken.

Gerelateerde artikelen