Egy privát előtag elérése VPN-en keresztül időtartammal bíró követelmény: addig áll fenn, amíg az a kapcsolat használható, és akkor szűnik meg, amikor a kapcsolat megszűnik. Egy bejelentkezési szkript ezt nem tudja kifejezni, mert a bejelentkezés és az alagút felépülése különböző pillanatok, és a bejelentkezéskor létező alagút nem feltétlenül az, amely egy perccel később a forgalmat viszi. Az első döntés nem az, melyik parancsot kell futtatni. Hanem az, melyik komponens birtokolja az előtagot.

Az előtagnak tulajdonos kell, nem pillanat

Kezdje azzal, hogy a követelményt alanyos mondatként írja le: érje el 10.77.0.0/24 az Office VPN-en keresztül, amíg az a kapcsolat fennáll. Ez a mondat megnevezi az előtagot, a kapcsolatot és a feltételt, és azonnal kizár két népszerű helyettesítőt: egy bejelentkezési hookot és egy interfésznevet, például ppp0 vagy utun2.

Az interfészneveket futásidőben osztják ki, és nem stabilak az újracsatlakozások között. Egy hook, amely a múlt héten látott névre illeszkedik, vagy nem fut le, vagy valaki más interfészére fut le. Mindkét eredmény útválasztási hibának látszik, nem annak az elavult feltevésnek, ami valójában. Ugyanez a kifogás vonatkozik minden olyan szkriptre, amely olyan névhez kötődik, amely csak egy adott alagút fennállása alatt létezik.

Használjon támogatott útvonal-szándék forrást

Az átjáró, egy felügyelt profil vagy a birtokló kliens dokumentált útvonalmechanizmusa a helyes hely, amikor az a mechanizmus ki tudja fejezni a követelményt. Melyik érvényes, a protokolltól és a szolgáltatótól függ, és a kulcsok nem utaznak közöttük, ezért egy profilt konfiguráló érték OpenVPN semmit nem mond a natív L2TP vagy IKEv2 kliensről.

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

A csomagalagutak fejlesztőinek az Apple IPv4-es alagútbeállításai kifejezetten feltárják a belefoglalt és kizárt útvonalakat, és az IPv6-nak is megvan a maga megfelelője. Ezek olyan API-k, amelyeket a szolgáltató használ, nem bizonyíték arra, hogy minden natív VPN-panel tetszőleges útvonallistát kínál a rendszergazdának. Ha a jelenlegi kombináció nem tudja kifejezni a szükséges előtagokat, a következő lépés az üzemeltető által támogatott konfigurációs útvonal, nem egy másik alkalmazás, amelyet abban a reményben telepítenek, hogy jobban viselkedik.

Az élettartam magában foglalja a tisztítást

Néha egy külső segéd valóban szükséges, és ilyenkor az «add hozzá az útvonalat» a munkájának legkisebb része. Tudnia kell, melyik kapcsolatot szolgálja ki, és az a kapcsolat melyik interfészt használja, meg kell várnia, amíg a releváns hálózati állapot megnyugszik, idempotensnek kell maradnia, ha kétszer egymás után fut, és semmit nem szabad eltakarítania, amit nem ő telepített.

Az utolsó kikötés az, amelyik fáj. Egy segéd, amely minden, az irodai előtaghoz illeszkedő útvonalat töröl, előbb vagy utóbb törölni fog egy olyan útvonalat, amelyet nem ő adott hozzá. Az ebből eredő kiesést a VPN-kliensre fogják, mert a kliens az a rész, amelyet a felhasználó lát. Eldönteni, mit birtokol egy segéd, mielőtt megírja, olcsóbb, mint utólag elmagyarázni, miért hagyott fel a válaszadással egy helyi alhálózat.

Az újracsatlakozási verseny

Képzeljen el egy gyors újracsatlakozást. Az A munkamenet leesik, a B munkamenet feljön és telepíti az útvonalát, majd az A késleltetett tisztítása végre lefut. Ha ez a tisztítás előtag szerint távolít el útvonalakat, magával viszi a B érvényes állapotát, és a kapcsolat, amely egy másodperccel ezelőtt működött, most a semmibe irányít.

Ez egy tulajdonosi verseny, és az alvás hozzáadása a szkripthez csak azt változtatja meg, melyik fél nyeri meg. A megoldás az, hogy a tisztítást identitáshoz kössük: hasonlítsa össze az interfészt és a munkamenetet, amelyet a segéd telepített, a még érvényesekkel, és csak egyezés esetén távolítson el.

Mit kell tesztelni, és mit nem tud egy útvonal

Az átvételnek négy átmenetet kell lefednie: az első kapcsolatot, az újracsatlakozást egy másik interfészre, egy sikertelen kapcsolódási kísérletet és a végső bontást. Mindegyik után olvassa le azt az útvonalat, amelyet a rendszer ténylegesen választott egy távoli oldali címhez, ne azt, amelyet várt.

route -n get 10.77.0.5
netstat -rn -f inet

Vegye bele a kellemetlen eseteket is ugyanabba a körbe: IPv6 ott, ahol szükséges, egy helyi előtag, amely átfed a távolival, és magának a nyilvános VPN-végpontnak az útvonala, amelynek működnie kell, amíg az alagút fennáll. Aztán írja le, mi nem egy útvonal. Csomagokat választ ki; nem ad engedélyt a távoli oldalon, és nem hoz létre visszautat, és ezek külön követelmények maradnak külön tulajdonosokkal.

A kívánt eredmény egy előtag, amely minden átmenetben követi a támogatott kapcsolattulajdonosát, nem pedig egy parancs, amely véletlenül egyszer sikerült azon a gépen, ahol megírták.

Kapcsolódó cikkek