VPN-regels op de router: koppel de bron en de bestemming
Een VPN-regel op de router heeft twee uiteinden: het apparaat dat verkeer verstuurt en de bestemming die de tunnel moet gebruiken. Bepaal eerst de doorsnede en het terugvalgedrag.
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:
| Scenario | Sender match | Target match | Rule shape |
|---|---|---|---|
| Media player uses the tunnel | Player address | Any internet destination except the LAN | Source only |
| Office prefix reachable | Authorized LAN devices | 10.40.0.0/16 | Target only |
| One app on one laptop | Laptop address | The service address set | Source and target |
| Guest network never tunnels | Guest subnet | Any | Deny, 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.