Hook skripta se pokreće, čita ppp0 i primjenjuje rute na interfejs koji u tom trenutku nosi taj naziv. Ponekad je to tunel koji ste namjeravali; ponekad je to sesija koja se povezala minutu ranije. Sljedeće ponovno povezivanje pomjera broj, a ista skripta tiho konfiguriše pogrešnu vezu. Rješenje je uzeti interfejs iz poziva koji je upravo izvršen i nositi željeni profil uz njega.

Pratite jednu sesiju od opcija do hooka

Počnite tamo gdje se sesija stvara. xl2tpd pokreće pppd sa datotekom opcija koju imenuje pppoptfile tog tunela, pa se plugin, broj jedinice i svaka oznaka profila određuju tamo, a ne u globalnoj datoteci. Menadžer veza može generisati sopstvene opcije, što znači da uređivanje /etc/ppp/options nije dokaz da se tunel koji vas zanima promijenio. Kada se veza podigne, pppd pokreće skripte obavještenja iz dispečera distribucije. Te skripte primaju naziv interfejsa kao prvi argument, a oznaku profila kao šesti.

Okruženje nosi iste činjenice pod imenima kao što su IFNAME i PPP_IPPARAM, ali njihova dostupnost zavisi od instaliranog dispečera. Pročitajte dispečer prije nego što se oslonite na varijablu: neke distribucije zadržavaju upstream redoslijed argumenata, druge filtriraju okruženje prije nego pozovu vašu skriptu. Skripta koja koristi samo $1 i šesti argument radi u oba slučaja.

Čitajte interfejs iz poziva

Tradicionalni hook prima interfejs prvi. Ta pozicijska vrijednost je identifikator interfejsa koji opisuje sesiju koja je pokrenula skriptu. Sačuvajte je u varijablu na vrhu, a zatim tu varijablu koristite za rute, firewall pravila i uklanjanje.

ipparam office-vpn

Oznaku profila prikačite tamo gdje su opcije definisane, a ne u skripti. Sa tim redom u datoteci opcija tunela, svaka sesija stvorena iz te datoteke nosi office-vpn kao šesti argument. Skripta može granati po oznaci dok istovremeno djeluje na stvarni interfejs. Držite to dvoje odvojeno u kodu, jer je oznaka stabilna a interfejs se dodjeljuje po sesiji.

Zatražite naziv samo ako je odbijanje ispravno

Fiksni naziv izgleda jednostavnije od čitanja argumenata, ali mijenja ponašanje pri neuspjehu. Opcija unit traži broj za odlaznu vezu, a pppd prelazi na dinamičku dodjelu kada je ta jedinica već zauzeta. Ništa u tom rezultatu ne rezerviše ppp0 za vaš profil.

ifname ppp-office

Opcija ifname se ponaša drugačije: ako je traženi naziv već u upotrebi ili se ne može dodijeliti, pppd izlazi umjesto da izabere drugi. To je politička odluka, a ne kozmetičko preimenovanje. Koristite je kada drugu istovremenu instancu istog profila treba odbiti, i potvrdite da instalirani pppd i vaš menadžer veza prosljeđuju tu opciju.

U svakom slučaju, naziv koji skripta vidi je onaj na koji treba djelovati. Konfigurisani naziv ne uklanja potrebu da se pročita poziv, jer ponovo pokrenuta sesija i dalje može predstaviti drugačiji naziv od prethodnog.

Uskladite uklanjanje sa sesijom koju ste konfigurisali

Rute i firewall pravila nadživljavaju skriptu koja ih je stvorila, pa uklanjanje mora odstraniti tačno objekte koje sesija posjeduje. Označite pravila oznakom profila kao i interfejsom, i brišite po toj oznaci. Ako dva tunela mogu biti aktivna, brisanje svega što spominje ppp je način na koji jedno prekidanje razbija drugu vezu.

Testirajte slučaj koji otkriva grešku: podignite drugu PPP sesiju dok je prva još povezana, zatim ponovo povežite prvu i gledajte koji interfejs hook prijavljuje. Uspješno izvršavanje sa jednom sesijom ništa ne dokazuje o dodjeli naziva. Ponovite sa zaustavljenim VPN-om da potvrdite da uklanjanje ne ostavlja zastarjelu rutu.

Držite oznaku, interfejs i putanju hooka u bilješkama o postavljanju. Kada se broj promijeni nakon ponovnog pokretanja, te tri vrijednosti objašnjavaju zašto se skripta ponašala drugačije bez ikakve izmjene konfiguracije.

Povezani članci