ppp0 или ppp1? Како именовати PPP VPN сесију за скрипте
pppd даје свакој сесији име интерфејса и ознаку профила. Читајте обоје из hook-а, не из ppp0. Фиксно име резервишите само када је одбијање намерно.
Скрипта куке се активира, чита ppp0 и примењује руте на интерфејс који у том тренутку носи то име. Понекад је то тунел који сте имали на уму; понекад је то сесија која се повезала минут раније. Следеће поновно повезивање помера број, и иста скрипта тихо конфигурише погрешну везу. Решење је да узмете интерфејс из позива који је управо извршен и да носите жељени профил поред њега.
Пратите једну сесију од опција до куке
Почните тамо где се сесија ствара. xl2tpd покреће pppd са датотеком опција коју именује pppoptfile тог тунела, па се прикључак, број јединице и свака ознака профила одређују тамо, а не у глобалној датотеци. Менаџер веза може да генерише сопствене опције, што значи да уређивање /etc/ppp/options није доказ да се тунел који вас занима променио. Када се веза подигне, pppd покреће скрипте обавештења из отпремаоца дистрибуције. Те скрипте добијају име интерфејса као први аргумент, а ознаку профила као шести.
Окружење носи исте чињенице под именима као што су IFNAME и PPP_IPPARAM, али њихова доступност зависи од инсталираног отпремаоца. Прочитајте отпремаоца пре него што се поуздате у променљиву: неке дистрибуције задржавају upstream редослед аргумената, друге филтрирају окружење пре него што позову вашу скрипту. Скрипта која користи само $1 и шести аргумент ради у оба случаја.
Читајте интерфејс из позива
Традиционална кука прва добија интерфејс. Та позициона вредност је идентификатор интерфејса који описује сесију која је активирала скрипту. Сачувајте је у променљивој на почетку, а затим ту променљиву користите за руте, правила заштитног зида и расклапање.
ipparam office-vpn
Прикачите ознаку профила тамо где су дефинисане опције, а не у скрипти. Са тим редом у датотеци опција тунела, свака сесија створена из те датотеке носи office-vpn као шести аргумент. Скрипта може да се грана по ознаци док истовремено делује на стварном интерфејсу. Држите обоје одвојено у коду, јер је ознака стабилна, а интерфејс се додељује по сесији.
Затражите име само када је одбијање исправно
Фиксно име изгледа једноставније од читања аргумената, али мења понашање при неуспеху. Опција unit тражи број за одлазну везу, и pppd се враћа на динамичку доделу када је та јединица већ заузета. Ништа у том резултату не резервише ppp0 за ваш профил.
ifname ppp-office
Опција ifname се понаша другачије: ако је тражено име већ у употреби или не може да се додели, pppd излази уместо да изабере друго. То је избор политике, а не козметичко преименовање. Користите је када треба одбити други истовремени примерак истог профила, и потврдите да инсталирани pppd и ваш менаџер веза прослеђују опцију.
У сваком случају, име које скрипта види је оно на које треба деловати. Конфигурисано име не уклања потребу да се прочита позив, јер рестартована сесија и даље може представити другачије име од претходног.
Ускладите расклапање са сесијом коју сте конфигурисали
Руте и правила заштитног зида надживљавају скрипту која их је створила, па расклапање мора да уклони тачно оне објекте које сесија поседује. Означите правила ознаком профила као и интерфејсом, и бришите по тој ознаци. Ако два тунела могу бити активна, брисање свега што помиње ppp је начин на који једно искључење квари другу везу.
Тестирајте случај који открива грешку: подигните другу PPP сесију док је прва још повезана, затим поново повежите прву и гледајте који интерфејс пријављује кука. Успешно извршавање са једном сесијом ништа не доказује о додели имена. Поновите са заустављеним VPN-ом да потврдите да расклапање не оставља застарелу руту.
Чувајте ознаку, интерфејс и путању до куке у белешкама о распоређивању. Када се број промени после рестартовања, те три вредности објашњавају зашто се скрипта понашала другачије без икаквог уређивања конфигурације.