Om 'n private voorvoegsel deur 'n VPN te bereik is 'n vereiste met 'n duur: dit geld terwyl daardie verbinding bruikbaar is, en dit eindig wanneer die verbinding eindig. 'n Aanmeldskrip kan dit nie uitdruk nie, want aanmelding en tonnel-op is verskillende oomblikke, en die tonnel wat by aanmelding bestaan is dalk nie die een wat 'n minuut later verkeer dra nie. Die eerste besluit is nie watter opdrag om te loop nie. Dit is watter komponent die voorvoegsel besit.

Die voorvoegsel het 'n eienaar nodig, nie 'n oomblik nie

Begin deur die vereiste as 'n sin met 'n onderwerp te skryf: bereik 10.77.0.0/24 deur die Kantoor-VPN terwyl daardie verbinding op is. Daardie sin noem die voorvoegsel, die verbinding en die voorwaarde, en dit sluit twee gewilde plaasvervangers dadelik uit, 'n aanmeldhaak en 'n koppelvlaknaam soos ppp0 of utun2.

Koppelvlakname word tydens looptyd toegeken en is nie stabiel oor herverbindings nie. 'n Haak wat die naam pas wat hy verlede week gesien het, sal óf nie vuur nie óf teen iemand anders se koppelvlak vuur. Albei uitkomste lyk soos 'n routeringsfout eerder as die verouderde aanname wat hulle is. Dieselfde beswaar geld vir enige skrip wat op 'n naam staatmaak wat net bestaan terwyl een spesifieke tonnel op is.

Gebruik 'n ondersteunde bron van roete-voorneme

Die gateway, 'n bestuurde profiel of die eienaarskliënt se gedokumenteerde roetemeganisme is waar dit hoort, wanneer daardie meganisme die vereiste kan uitdruk. Watter een geld, hang af van die protokol en die verskaffer, en die sleutels reis nie tussen hulle nie, so 'n waarde wat 'n profiel vir OpenVPN opstel, sê niks oor die inheemse L2TP- of IKEv2-kliënt nie.

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

Vir pakkiettonnel-ontwikkelaars stel Apple se IPv4-tonnelinstellings ingeslote en uitgeslote roetes duidelik bloot, en IPv6 het sy eweknie. Dit is API's wat die verskaffer gebruik, nie bewys dat elke inheemse VPN-paneel 'n willekeurige roetelys aan 'n administrateur bied nie. As die huidige kombinasie nie die voorvoegsels kan uitdruk wat jy nodig het nie, is die volgende stap 'n ondersteunde opstellingspad van die operateur, nie 'n ander app wat geïnstalleer word in die hoop dat dit beter optree nie.

Lewensduur sluit opruiming in

Soms is 'n eksterne helper werklik nodig, en dan is “voeg die roete by” die kleinste deel van sy werk. Dit moet weet watter verbinding dit dien en watter koppelvlak daardie verbinding gebruik, wag tot die betrokke netwerktoestand tot rus kom, idempotent bly wanneer dit twee keer agter mekaar loop, en niks opruim wat hy nie self geïnstalleer het nie.

Daardie laaste klousule is die een wat seermaak. 'n Helper wat elke roete na die kantoorvoorvoegsel verwyder, sal vroeër of later 'n roete verwyder wat hy nie bygevoeg het nie. Die gevolglike onderbreking word aan die VPN-kliënt verwyt, want die kliënt is die deel wat die gebruiker kan sien. Om te besluit wat 'n helper besit voordat jy dit skryf, is goedkoper as om later te verduidelik waarom 'n plaaslike subnet opgehou antwoord het.

Die herverbindingswedloop

Oorweeg 'n vinnige herverbinding. Sessie A val, sessie B kom op en installeer sy roete, en dan loop A se vertraagde opruiming uiteindelik. As daardie opruiming roetes per voorvoegsel verwyder, neem dit B se geldige toestand saam, en die verbinding wat 'n sekonde gelede gewerk het, routeer nou in niks in.

Dit is 'n eienaarskapwedloop, en 'n slaap in die skrip verander net watter kant dit wen. Die oplossing is om opruiming voorwaardelik op identiteit te maak: vergelyk die koppelvlak en sessie wat die helper geïnstalleer het met die wat nog geldig is, en verwyder net by 'n passing.

Wat om te toets, en wat 'n roete nie kan doen nie

Aanvaarding moet vier oorgange dek: die eerste verbinding, 'n herverbinding na 'n ander koppelvlak, 'n verbindingspoging wat misluk, en die finale ontkoppeling. Lees ná elkeen die roete wat die stelsel werklik gekies het vir 'n adres aan die oorkant, eerder as die een wat jy verwag het dit sou kies.

route -n get 10.77.0.5
netstat -rn -f inet

Sluit die ongemaklike gevalle in dieselfde rondte in: IPv6 waar dit vereis word, 'n plaaslike voorvoegsel wat die oorkantste een oorvleuel, en die roete na die openbare VPN-eindpunt self, wat moet bly werk terwyl die tonnel op is. Skryf dan neer wat 'n roete nie is nie. Dit kies pakkette; dit verleen nie toestemming aan die oorkant nie en dit skep nie 'n terugpad nie, en dié bly aparte vereistes met aparte eienaars.

Die uitkoms wat jy wil hê is 'n voorvoegsel wat sy ondersteunde verbindingseienaar deur elke oorgang volg, eerder as 'n opdrag wat toevallig een keer geslaag het op die masjien waar dit geskryf is.

Verwante artikels