ppp0 vagy ppp1? PPP VPN-munkamenet elnevezése szkriptekhez
A pppd minden munkamenetnek ad egy interfésznevet és egy profiljelölőt. Mindkettőt a hookból olvasd, ne a ppp0-ból. Csak akkor foglalj le fix nevet, ha az elutasítás szándékos.
A hookszkript lefut, beolvassa a ppp0 értéket, és azokat az útvonalakat alkalmazza, amelyek abban a pillanatban ezt a nevet viselő interfészhez tartoznak. Néha az a bújtatás, amelyet szántál; néha egy munkamenet, amely egy perccel korábban kapcsolódott. A következő újracsatlakozás elmozdítja a számot, és ugyanaz a szkript csendben a rossz kapcsolatot konfigurálja. A megoldás az, hogy az interfészt abból a hívásból veszed, amely éppen lefutott, és mellette viszed a szándékolt profilt.
Kövess egy munkamenetet az opcióktól a hookig
Ott kezdd, ahol a munkamenet létrejön. Az xl2tpd azzal az opciós fájllal indítja a pppd-t, amelyet a bújtatás pppoptfile-je nevez meg, tehát a bővítmény, az egységszám és minden profiljelölő ott dől el, nem egy globális fájlban. A kapcsolatkezelő saját opciókat állíthat elő, ami azt jelenti, hogy a /etc/ppp/options szerkesztése nem bizonyíték arra, hogy a téged érdeklő bújtatás megváltozott. Amikor a kapcsolat feljön, a pppd futtatja az értesítő szkripteket a disztribúció diszpécseréből. Ezek a szkriptek az interfész nevét első argumentumként, a profiljelölőt pedig hatodikként kapják.
A környezet ugyanezeket a tényeket hordozza olyan neveken, mint IFNAME és PPP_IPPARAM, de elérhetőségük a telepített diszpécsertől függ. Olvasd el a diszpécsert, mielőtt egy változóra támaszkodsz: egyes disztribúciók megtartják az upstream argumentumsorrendet, mások szűrik a környezetet, mielőtt meghívnák a szkriptedet. Az a szkript, amely csak a $1-öt és a hatodik argumentumot használja, mindkét elrendezésben működik.
Az interfészt a hívásból olvasd
A hagyományos hook kapja meg először az interfészt. Ez a pozíciós érték az az interfész-azonosító, amely leírja a szkriptet kiváltó munkamenetet. Tárold el egy változóban felül, majd használd azt a változót az útvonalakhoz, a tűzfalszabályokhoz és a lebontáshoz.
ipparam office-vpn
A profiljelölőt ott csatold, ahol az opciók definiálva vannak, ne a szkriptben. Ezzel a sorral a bújtatás opciós fájljában minden abból a fájlból létrehozott munkamenet a office-vpn-et hordozza hatodik argumentumként. A szkript elágazhat a jelölő alapján, miközben továbbra is a valódi interfészen cselekszik. Tartsd külön a kettőt a kódban, mert a jelölő stabil, az interfészt pedig munkamenetenként osztják ki.
Csak akkor kérj nevet, ha az elutasítás helyes
A fix név egyszerűbbnek tűnik, mint az argumentumok olvasása, de megváltoztatja a hiba viselkedését. A unit opció számot kér egy kimenő kapcsolathoz, és a pppd dinamikus kiosztásra esik vissza, ha az az egység már foglalt. Ebben az eredményben semmi nem foglalja le a ppp0-t a profilodnak.
ifname ppp-office
A ifname opció másképp viselkedik: ha a kért név már használatban van, vagy nem osztható ki, a pppd kilép, ahelyett hogy másikat választana. Ez szakpolitikai döntés, nem kozmetikai átnevezés. Akkor használd, amikor ugyanazon profil második egyidejű példányát el kell utasítani, és igazold, hogy a telepített pppd és a kapcsolatkezelőd továbbadja az opciót.
Akárhogy is, a név, amelyet a szkript lát, az, amelyen cselekedni kell. A beállított név nem szünteti meg a hívás olvasásának szükségességét, mert egy újraindított munkamenet még mindig mutathat az előzőtől eltérő nevet.
A lebontást a konfigurált munkamenethez igazítsd
Az útvonalak és a tűzfalszabályok túlélik az őket létrehozó szkriptet, ezért a lebontásnak pontosan azokat az objektumokat kell eltávolítania, amelyek a munkamenet tulajdonában vannak. Címkézd a szabályokat a profiljelölővel és az interfésszel is, és törölj ez alapján a címke alapján. Ha két bújtatás lehet egyszerre aktív, minden ppp-t említő dolog törlése az, ahogy az egyik bontás elrontja a másik kapcsolatot.
Teszteld azt az esetet, amely felfedi a hibát: hozd fel a második PPP-munkamenetet, miközben az első még kapcsolódva van, majd csatlakoztasd újra az elsőt, és figyeld, melyik interfészt jelenti a hook. Az egyetlen munkamenettel végzett sikeres futás semmit nem bizonyít a névkiosztásról. Ismételd meg leállított VPN-nel, hogy igazold, a lebontás nem hagy maga után elavult útvonalat.
Tartsd a jelölőt, az interfészt és a hook útvonalát a telepítési jegyzetekben. Amikor a szám újraindítás után megváltozik, ez a három érték megmagyarázza, miért viselkedett a szkript másképp minden konfigurációmódosítás nélkül.