Å nå eit privat prefiks gjennom ein VPN er eit krav med varigheit: det gjeld så lenge den tilkoblinga er brukbar, og det sluttar når tilkoblinga sluttar. Eit innloggingsskript kan ikkje uttrykke det, fordi innlogging og tunnel-opp er ulike augneblink, og tunnelen som finst ved innlogging er kanskje ikkje den som ber trafikk eit minutt seinare. Den første avgjerda er ikkje kva kommando som skal køyrast. Det er kva komponent som eig prefikset.

Prefikset treng ein eigar, ikkje eit augneblink

Byrja med å skrive kravet som ei setning med eit subjekt: nå 10.77.0.0/24 gjennom Office-VPN medan den tilkoblinga er oppe. Den setninga namngir prefikset, tilkoblinga og vilkåret, og ho utelukkar straks to populære erstattarar: ein innloggingskrok og eit grensesnittnamn som ppp0 eller utun2.

Grensesnittnamn blir tildelte ved køyring og er ikkje stabile mellom gjenoppkoplingar. Ein krok som matchar namnet han såg førre veke, vil anten ikkje utløysast eller utløysast mot nokon andre sitt grensesnitt. Begge utfalla framstår som ein rutefeil snarare enn den forelda føresetnaden dei er. Den same innvendinga gjeld for eit kvart skript som er bunde til eit namn som berre finst medan ein bestemt tunnel er oppe.

Bruk ei støtta kjelde til rutehensikt

Gatewayen, ein administrert profil eller den eigande klienten sin dokumenterte rutemekanisme er rett stad, når den mekanismen kan uttrykke kravet. Kva som gjeld avheng av protokollen og leverandøren, og nøklane reiser ikkje mellom dei, så ein verdi som konfigurerer ein profil OpenVPN fortel deg ingenting om den innebygde L2TP- eller IKEv2-klienten.

MechanismCan carry extra prefixesWho owns the lifetime
Gateway-pushed routesOften, if the gateway is configured for itThe connection
Managed profile settingsDepends on the client and profile formatThe profile
Provider tunnel settingsYes, as included and excluded routesThe provider process
Manual commandYes, onceNobody

For utviklarar av pakketunnelar eksponerer Apples IPv4-tunnelinnstillingar inkluderte og ekskluderte ruter eksplisitt, og IPv6 har sin motpart. Dette er API-ar som leverandøren brukar, ikkje prov på at kvart innebygde VPN-panel tilbyr ein administrator ei vilkårleg ruteliste. Viss den noverande kombinasjonen ikkje kan uttrykke prefiksa du treng, er neste steg ein støtta konfigurasjonsveg frå operatøren, ikkje ein annan app installert i håp om at han oppfører seg betre.

Levetida omfattar opprydding

Nokre gonger er ein ekstern hjelpar verkeleg nødvendig, og når han er det, er «legg til ruta» den minste delen av jobben. Han må vite kva tilkobling han tener og kva grensesnitt den tilkoblinga brukar, vente til den relevante nettverkstilstanden fell til ro, halde fram som idempotent når han blir køyrd to gonger på rad, og ikkje rydde noko han ikkje sjølv installerte.

Den siste klausulen er den som gjer vondt. Ein hjelpar som slettar kvar rute som matchar kontorprefikset, vil før eller seinare slette ei rute han ikkje la til. Utfallet blir lagt på VPN-klienten, fordi klienten er den delen brukaren ser. Å avgjere kva ein hjelpar eig før du skriv han er billegare enn å forklare etterpå kvifor eit lokalt subnett slutta å svare.

Gjenoppkoplingsløpet

Tenk deg ei rask gjenoppkopling. Sesjon A fell, sesjon B kjem opp og installerar ruta si, og så køyrer A si forseinka opprydding endeleg. Viss den oppryddinga fjernar ruter etter prefiks, tek ho B sin gyldige tilstand med seg, og tilkoblinga som fungerte for eitt sekund sidan rutar no ut i ingenting.

Dette er eit eigarskapsløp, og å leggje til ein svevn i skriptet endrar berre kva side som vinn det. Løysinga er å gjere opprydding avhengig av identitet: samanlikn grensesnittet og sesjonen hjelparen installererte med dei som framleis gjeld, og fjern berre ved treff.

Kva som skal testast, og kva ei rute ikkje kan gjere

Aksept må dekkje fire overgangar: den første tilkoblinga, ei gjenoppkopling til eit anna grensesnitt, eit tilkoplingsforsøk som mislukkast, og den endelege fråkoblinga. Etter kvar av dei, les ruta systemet faktisk valde for ei adresse på den fjerne sida, ikkje den du forventa.

route -n get 10.77.0.5
netstat -rn -f inet

Ta med dei vanskelege tilfella i same runde: IPv6 der det krevst, eit lokalt prefiks som overlappar det fjerne, og ruta til sjølve det offentlege VPN-endepunktet, som må halde fram med å verke medan tunnelen er oppe. Skriv så ned kva ei rute ikkje er. Ho vel pakkar; ho gir ikkje løyve på den fjerne sida og lagar ikkje ein returveg, og det blir verande separate krav med separate eigarar.

Resultatet du vil ha er eit prefiks som følgjer sin støtta tilkoblingseigar gjennom kvar overgang, snarare enn ein kommando som tilfeldigvis lukkast éin gong på maskinen der han vart skriven.

Relaterte artiklar