V jednom vlákne fóra ifconfig-noexec sa to ponúka ako oprava, ktorá udrží SSH reláciu nažive, keď sa zdvihne tunel. Zdôvodnenie znie prijateľne, kým sa nepozrieš, čoho sa táto voľba naozaj dotýka. Bráni OpenVPN konfigurovať adresu rozhrania tunela a tie hodnoty namiesto toho odovzdáva skriptom; o tom, kam idú odpovede na tvoje riadiace spojenie, nehovorí nič. Presvedčenie o opaku vytvára tunel bez použiteľnej adresy a SSH reláciu, ktorá aj tak umiera.

Čo táto voľba naozaj deleguje

Predvolene klient zdvihne zariadenie tunela a priradí lokálnu a vzdialenú adresu, ktorú mu dal server. Keď je ifconfig-noexec nastavená, tento krok sa preskočí a dohodnuté hodnoty sa exportujú do prostredia skriptov, aby ich mohlo niečo iné aplikovať.

Vlastníctvo sa presúva. Na jeho miesto sa nič nevymýšľa.

Otázka, na ktorú voľba odpovedá, teda je, kto konfiguruje rozhranie, a otázka, na ktorú neodpovedá, je, ako si pakety nájdu cestu späť k tebe. Drž tieto dve veci oddelene, inak stráviš celý večer úpravou trás, aby si vykompenzoval rozhranie bez adresy.

Tri podobné voľby s rôznymi úlohami

Túto rodinu je ľahké si pomýliť, pretože názvy sa líšia jedným slovom a príznaky sa prekrývajú. Prečítaj si, čo ktorá potláča, skôr než si nejakú vyberieš.

OptionWhat stops happening
ifconfig-noexecOpenVPN's own tunnel-address configuration; values go to scripts instead
route-noexecAutomatic route addition and removal; route details go to a script
route-nopullServer-pushed routes and related options such as DNS are rejected

Toto sú alternatívy na pochopenie jednotlivo, nie sada na zlepenie dokopy. Potlačenie konfigurácie adresy nepotláča zmeny trás, pravidlá firewallu ani vtláčané voľby, ktoré prenášajú DNS. Delegovaný skript môže tiež slobodne meniť trasy, a to je rozhodnutie, ktoré odovzdávaš, namiesto toho, aby si sa mu vyhol.

Ak klientsky obal dodavateľa obaľuje engine, použi jeho podporovanú integráciu namiesto toho, aby si hodil nízkoúrovňovú direktívu do profilu a dúfal, že obal ju bude rešpektovať. Obaly často pri pripojení regenerujú profil, takže manuálna úprava zmizne bez chyby. Skontroluj, kde klient ukladá svoje nastavenia, skôr než stráviš večer nad súborom. Platí to pre každý riadok tabuľky, nielen pre ten, pre ktorý si prišiel.

SSH relácia, ktorú si chcel chrániť

SSH spojenie má zdrojovú adresu, cieľovú adresu a cestu odpovede. Na serveri, ktorý práve nainštaloval predvolenú trasu plného tunela, odpoveď na tvoju verejnú adresu sedí s tunelom a brána VPN ju zahodí.

Nič v konfigurácii adries rozhrania tunela to nezmení.

Opraví to konkrétnejšia trasa pre tvoju riadiacu adresu cez bránu pred tunelom, alebo pravidlo politiky, ktoré ten traffic odkláňa, plus nastavenia filtra, ktoré uplatňuje tvoj hostiteľ. Oba problémy sa niekedy objavia spolu, a tak sa jeden považuje za liek na druhý. Testuj ich oddelene: zdvihni tunel bez voľby, pozri sa na adresu rozhrania a cestu odpovede, potom rozhodni, ktorý z dvoch je naozaj pokazený.

Čo musí delegovaný skript prevziať

Ak naozaj chceš, aby rozhranie konfiguroval iný vlastník, vymenuj prácu: aplikuj lokálnu a vzdialenú adresu, zdvihni zariadenie, pri odpojení obnov alebo odstráň adresovanie a po opätovnom pripojení urob to isté znova. Hodnoty z jednej úspešnej relácie sa nesmú natvrdo zakódovať, pretože server môže nabudúce dať inú dvojicu.

Premenné prostredia, ktoré klient exportuje, sú jediný podporovaný vstup pre tú prácu.

env | grep -E '^ifconfig_|^route_'

Vo vnútri skriptu route-up sú tie premenné dostupné; z úlohy cron alebo ručného shellu nie. Potvrď, ktorý hook životného cyklu tvoja verzia používa, a potvrď, že hook beží s dostatočnými právami na zmenu rozhrania, pretože klient už mohol klesnúť na neprivilegovaného používateľa.

Testuj celý životný cyklus, nie jednu reláciu

Zdvihni tunel, skontroluj adresu na zariadení, potom sa pripoj znova a skontroluj ju znova. Konfigurácia, ktorá funguje raz a pri druhom pokuse zlyhá, zvyčajne znamená, že delegovaný krok beží len pri prvom pripojení.

Potom otestuj obe akceptačné kritériá spolu: nové SSH spojenie cez zamýšľanú riadiacu cestu funguje a povolená aplikácia používa tunel správne.

Stará SSH relácia, ktorá náhodou prežije, kým tunel nemá adresu, nie je úspech, a presne tento stav táto voľba vytvára, keď prácu nikto neprevezme. Najprv skontroluj adresu rozhrania, potom cestu odpovede riadenia, potom aplikáciu. Ak sú dve z troch zlé, voľba presunula prácu, ale nedala jej vlastníka.

Súvisiace články