Legg til ei standardrute gjennom tunnelen, og pakkane til sjølve tunnelen vil følgje ho. Tabellen inneheld då ei regel som sigrar seg sjølv. Den krypterte sambindinga til tenaren prøver å ferdast inne i sambindinga ho prøver å opprette.

To mekanismar hindrar den løkka. Den eine er synleg i rutetabellen, den andre lever inne i applikasjonen.

Indre og ytre trafikk er ulike avgjerder

Ein applikasjonspakke går inn i det virtuelle grensesnittet og vert pakka inn. Resultatet er ein ny pakke adressert til den offentlege adressa til tenaren. Den pakken treng ei rute på det fysiske nettet, for ingenting ved han kan gå inn i tunnelen.

Begge er ruteavgjerder, og berre den fyrste høyrer til tunnelen. Når klienten installerer ei standardrute som òg dekkjer tenaren, vert den ytre pakken òg fanga.

Symptoma er augneblinklege og totale. Handsaminga vert fullført og deretter flyt ingenting, eller sambindinga fell i det augneblinken ruta vert installert. I båe tilfelle kan keepalive ikkje lenger kome ut.

Alternativ éin: ei vertsrute for endepunktet

Den direkte tilnærminga legg til ei rute for adressa til tenaren gjennom den opphavlege gatewayen. Det krev éi line. Ho er synleg for alle som les tabellen. Ho er òg lett å forklare i ein endringslogg.

Svakheita viser seg når den underliggjande vegen vert endra. Den lagra ruta namngjev ein gateway og eit grensesnitt frå det gamle nettet. Etter eit Wi-Fi-byte finst kanskje ikkje den gatewayen, og ruta vert liggjande attende, ser rett ut og gjer ingenting.

# before the tunnel: which path reaches the endpoint?
ip route get 198.51.100.7

# pin it through the current gateway
ip route add 198.51.100.7/32 via 192.168.1.1 dev wlan0

# after the tunnel is up, confirm the pin survived
ip route get 198.51.100.7

Eit vertsnamn gjer dette vanskelegare. Viss endepunktet er eit namn som løysest til fleire adresser, må unntaket dekkje adressa som faktisk vert brukt. Eit seinare oppslag kan returnere noko ruta aldri dekte.

Alternativ to: verne socketen

Den andre tilnærminga rører aldri rutetabellen. Klienten merkjer eller vernar socketen som ber tunnelen, slik at operativsystemet sender trafikken frå den socketen utanfor tunnelen etter policy. Android eksponerer mekanismen direkte for VPN-applikasjonar. Skrivebordsklientar implementerer ekvivalentar med brannmurmerke eller bind-til-eining-kall.

Føremonen er at unntaket følgjer sambindinga i staden for ein lagra gateway. Eit nettverksbyte skriv om den underliggjande vegen, og den verna socketen flyttar med fordi han aldri vart festa til ei adresse. Rutetabellen held seg rein.

Prisen er synlegheit. Ingenting i rutetabellen viser unntaket, så ein gjennomgåar som leitar etter ei vertsrute finn ingenting og kan konkludere med at designet er utrygt. Vernet lever i koden til klienten og i policyreglane den koden installerar.

Å velje mellom dei

Vel socket-mekanismen når klienten støttar han, fordi han overlever nettverksbyta som øydelegg ei festa rute. Vel vertsruta når unntaket må vere synleg for andre verktøy, eller når klienten ikkje tilbyr noko betre.

Ingen av mekanismane fjernar behovet for at tenaradressa i det heile er tilgjengeleg. Ein privat gateway har ei offentleg lyttaradresse, og det er den adressa som må bli utanfor tunnelen. Dei interne netta bak han vert fyrst tilgjengelege når tunnelen finst.

Uansett kva du vel, hald det hos komponenten som eig tunnelen. Ei laus vertsrute lagt til for hand fungerer til neste nettverk, og då vert ho morgondagens mystiske avbrot.

Relaterte artiklar