ppp0 alebo ppp1? Ako pomenovať reláciu PPP VPN pre skripty
pppd dáva každej relácii názov rozhrania a značku profilu. Čítajte oboje z háčika, nie z ppp0. Pevný názov rezervujte len vtedy, keď je odmietnutie zámerné.
Skript háčika sa spustí, prečíta ppp0 a aplikuje trasy na rozhranie, ktoré ten názov v tej chvíli vlastní. Niekedy je to tunel, ktorý ste zamýšľali; niekedy je to relácia, ktorá sa pripojila o minútu skôr. Ďalšie opätovné pripojenie posunie číslo a ten istý skript potichu nakonfiguruje nesprávne spojenie. Riešením je vziať rozhranie z volania, ktoré práve prebehlo, a niesť so sebou zamýšľaný profil.
Sledujte jednu reláciu od volieb až po háčik
Začnite tam, kde sa relácia vytvára. xl2tpd spúšťa pppd so súborom volieb, ktorý pomenúva pppoptfile daného tunela, takže plugin, číslo jednotky a akákoľvek značka profilu sa rozhodujú tam, nie v globálnom súbore. Správca pripojení môže generovať vlastné voľby, čo znamená, že úprava /etc/ppp/options nie je dôkazom, že sa tunel, na ktorom vám záleží, zmenil. Keď spojenie naskočí, pppd spustí oznamovacie skripty z dispečera distribúcie. Tieto skripty dostanú názov rozhrania ako prvý argument a značku profilu ako šiesty.
Prostredie nesie rovnaké fakty pod názvami ako IFNAME a PPP_IPPARAM, ale ich dostupnosť závisí od nainštalovaného dispečera. Prečítajte si dispečer, skôr než sa spoľahnete na premennú: niektoré distribúcie zachovávajú poradie upstream argumentov, iné filtrujú prostredie pred volaním vášho skriptu. Skript, ktorý používa len $1 a šiesty argument, funguje v oboch prípadoch.
Čítajte rozhranie z volania
Tradičný háčik dostáva rozhranie ako prvý. Táto pozičná hodnota je identifikátor rozhrania, ktorý opisuje reláciu, ktorá skript spustila. Uložte ju hore do premennej a potom túto premennú používajte pre trasy, pravidlá firewallu a odstránenie.
ipparam office-vpn
Značku profilu pripevnite tam, kde sa definujú voľby, nie do skriptu. S týmto riadkom v súbore volieb tunela nesie každá relácia vytvorená z tohto súboru office-vpn ako šiesty argument. Skript môže vetviť podľa značky a pritom konať na skutočnom rozhraní. Držte oboje v kóde oddelene, pretože značka je stabilná a rozhranie sa prideľuje pre každú reláciu.
Žiadajte názov len vtedy, keď je odmietnutie správne
Pevný názov vyzerá jednoduchšie ako čítanie argumentov, ale mení správanie pri zlyhaní. Voľba unit žiada číslo pre odchádzajúce spojenie a pppd prejde na dynamické pridelenie, keď je táto jednotka už obsadená. Nič v tomto výsledku nerezervuje ppp0 pre váš profil.
ifname ppp-office
Voľba ifname sa správa inak: ak je požadovaný názov už používaný alebo ho nemožno prideliť, pppd skončí, namiesto toho aby zvolil iný. Je to rozhodnutie politiky, nie kozmetické premenovanie. Použite ju, keď má byť druhá súbežná inštancia toho istého profilu odmietnutá, a overte, že nainštalovaný pppd a váš správca pripojení voľbu prepúšťajú.
Tak či onak, názov, ktorý skript vidí, je ten, na ktorý treba konať. Nakonfigurovaný názov neodstraňuje potrebu čítať volanie, pretože reštartovaná relácia môže stále predložiť iný názov ako predchádzajúca.
Zlaďte odstránenie s reláciou, ktorú ste nakonfigurovali
Trasy a pravidlá firewallu prežijú skript, ktorý ich vytvoril, takže odstránenie musí odobrať presne tie objekty, ktoré relácia vlastní. Označte pravidlá značkou profilu aj rozhraním a mazajte podľa tejto značky. Ak môžu byť aktívne dva tunely, mazanie všetkého, čo spomína ppp, je spôsob, akým jedno odpojenie pokazí druhé spojenie.
Otestujte prípad, ktorý odhalí chybu: zdvihnite druhú reláciu PPP, kým je prvá ešte pripojená, potom znova pripojte prvú a sledujte, ktoré rozhranie háčik hlási. Úspešné spustenie s jedinou reláciou nič nedokazuje o prideľovaní názvov. Zopakujte so zastaveným VPN, aby ste potvrdili, že odstránenie nezanecháva zastaranú trasu.
Uchovávajte značku, rozhranie a cestu k háčiku v poznámkach k nasadeniu. Keď sa číslo po reštarte zmení, tieto tri hodnoty vysvetlia, prečo sa skript správal inak bez akejkoľvek úpravy konfigurácie.