Yksityiseen etuliitteeseen pääseminen VPN:n kautta on vaatimus, jolla on kesto: se pätee niin kauan kuin yhteys on käyttökelpoinen, ja päättyy kun yhteys päättyy. Kirjautumisskripti ei voi ilmaista sitä, koska kirjautuminen ja tunnelin nousu ovat eri hetkiä, eikä kirjautumishetkellä oleva tunneli välttämättä ole se, joka kuljettaa liikennettä minuuttia myöhemmin. Ensimmäinen päätös ei ole, mikä komento ajetaan. Se on, mikä komponentti omistaa etuliitteen.

Etuliite tarvitsee omistajan, ei hetkeä

Aloita kirjoittamalla vaatimus subjektillisena lauseena: saavuta 10.77.0.0/24 Office VPN:n kautta, kunnes yhteys on pystyssä. Se lause nimeää etuliitteen, yhteyden ja ehdon, ja sulkee heti pois kaksi suosittua korviketta: kirjautumiskoukun ja liitännäisnimen, kuten ppp0 tai utun2.

Liitännäisnimet annetaan ajonaikaisesti, eivätkä ne ole vakaita yhteyksien välillä. Koukku, joka vastaa viime viikolla nähtyä nimeä, joko ei laukea tai laukeaa jonkun toisen liitännäistä vastaan. Molemmat tulokset näyttävät reititysvirheeltä, eivät siltä vanhentuneelta oletukselta, joka ne ovat. Sama vastalause pätee mihin tahansa skriptiin, joka on sidottu nimeen, joka on olemassa vain tietyn tunnelin ollessa pystyssä.

Käytä tuettua reittiaikeen lähdettä

Yhdyskäytävä, hallittu profiili tai omistavan asiakasohjelman dokumentoitu reittimekanismi on oikea paikka, kun kyseinen mekanismi voi ilmaista vaatimuksen. Kumpi pätee, riippuu protokollasta ja palveluntarjoajasta, eivätkä avaimet siirry niiden välillä, joten arvo, joka määrittää profiilin OpenVPN ei kerro mitään natiivista L2TP- tai IKEv2-asiakkaasta.

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

Pakettitunnelien kehittäjille Applen IPv4-tunnelin asetukset paljastavat sisällytetyt ja poissuljetut reitit eksplisiittisesti, ja IPv6:lla on vastineensa. Nämä ovat API:ja, joita palveluntarjoaja käyttää, eivät todiste siitä, että jokainen natiivi VPN-paneeli tarjoaa ylläpitäjälle mielivaltaisen reittilistan. Jos nykyinen yhdistelmä ei voi ilmaista tarvittavia etuliitteitä, seuraava askel on operaattorin tuettu konfigurointipolku, ei toinen sovellus, joka asennetaan toiveena, että se käyttäytyisi paremmin.

Elinkaari sisältää siivouksen

Joskus ulkoinen apuri on todella tarpeen, ja silloin «lisää reitti» on sen työn pienin osa. Sen on tiedettävä, mitä yhteyttä se palvelee ja mitä liitännäistä kyseinen yhteys käyttää, odotettava, että asiaankuuluva verkkotila vakiintuu, pysyttävä idempotenttina, kun se ajetaan kahdesti peräkkäin, eikä siivottava mitään, mitä se ei itse asentanut.

Viimeinen lauseke on se, joka sattuu. Apuri, joka poistaa jokaisen toimistetuliitettä vastaavan reitin, poistaa ennemmin tai myöhemmin reitin, jota se ei lisännyt. Syntyvä katko laitetaan VPN-asiakasohjelman syyksi, koska asiakasohjelma on se osa, jonka käyttäjä näkee. Sen päättäminen, mitä apuri omistaa, ennen kuin sen kirjoittaa, on halvempaa kuin selittää jälkikäteen, miksi paikallinen aliverkko lakkasi vastaamasta.

Uudelleenyhdistämisen kilpajuoksu

Ajattele nopeaa uudelleenyhdistämistä. Istunto A putoaa, istunto B nousee ja asentaa reittinsä, ja sitten A:n viivästynyt siivous lopulta ajetaan. Jos siivous poistaa reittejä etuliitteen perusteella, se vie B:n kelvollisen tilan mukanaan, ja yhteyttä, joka toimi sekunti sitten, reititetään nyt ei mihinkään.

Kyse on omistajuuden kilpajuoksusta, ja skriptiin lisätty nukkuminen muuttaa vain sitä, kumpi puoli sen voittaa. Ratkaisu on tehdä siivous ehdolliseksi identiteetille: vertaa liitännäistä ja istuntoa, jotka apuri asensi, vielä voimassa oleviin, ja poista vain täsmäävissä tapauksissa.

Mitä testata ja mitä reitti ei voi tehdä

Hyväksynnän on katettava neljä siirtymää: ensimmäinen yhteys, uudelleenyhdistäminen toiseen liitännäiseen, epäonnistuva yhteysyritys ja lopullinen katkaisu. Lue jokaisen jälkeen reitti, jonka järjestelmä todella valitsi kaukopään osoitteelle, ei sitä, jonka odotit sen valitsevan.

route -n get 10.77.0.5
netstat -rn -f inet

Ota samaan kiertoon myös hankalat tapaukset: IPv6 siellä missä sitä vaaditaan, paikallinen etuliite, joka menee päällekkäin kaukoetuliitteen kanssa, ja reitti itse julkiseen VPN-päätepisteeseen, jonka on toimittava tunnelin ollessa pystyssä. Kirjoita sitten muistiin, mikä reitti ei ole. Se valitsee paketteja; se ei anna lupaa kaukopäässä eikä luo paluupolkua, ja ne pysyvät erillisinä vaatimuksina erillisine omistajineen.

Tulos, jonka haluat, on etuliite, joka seuraa tuettua yhteysomistajaansa jokaisen siirtymän läpi, eikä komento, joka sattumalta onnistui kerran koneella, jolle se kirjoitettiin.

Aiheeseen liittyvät artikkelit