Nekdo je vnaprej ustvaril tun1, profil pravi dev tun1, povezava pa se še vedno ne pripne. Sama prisotnost imena na gostitelju ne pove skoraj nič, ker je pripenjanje odvisno od imenskega prostora, vrste naprave, tega kdo poseduje povezavo in kaj je demonu dovoljeno. Ponovna uporaba naprave vsili tudi odločitev, ki jo privzeta konfiguracija skriva: katera komponenta piše naslove in poti. Načina odpovedi obeh ureditev se razlikujeta veliko bolj kot konfiguracijske vrstice, zato se odločite pred urejanjem profila.

Ime ni pripenjanje

dev tun1 zahteva od OpenVPN ta imenovani vmesnik in tradicionalne gradnje v uporabniškem prostoru ga bodo poskusile odpreti. Če ime ne sledi običajnemu vzorcu tun ali tap, profil potrebuje tudi ustrezni dev-type, ker se tip nikoli ne izpelje iz niza. Naprava TAP ni naprava TUN z drugo oznako: pripenjanje napačne bodisi takoj ne uspe bodisi ustvari povezavo, ki prenaša okvire, ki jih nihče ne pričakuje. Preverite tip pred vsem drugim, ker vsako kasnejše preverjanje predpostavlja, da se obe strani o tem strinjata. Nato potrdite, da lahko proces napravo resnično odpre in ne le vidi.

dev tun1
dev-type tun

Omrežni vmesnik in /dev/net/tun sta različna objekta: eden je povezava v imenskem prostoru, drugi je znakovna naprava, ki jo program v uporabniškem prostoru uporablja za pripenjanje. Dokumentacija Linux TUN/TAP opisuje to pot pripenjanja in pravila lastništva trajnih naprav. Root lupina, ki lahko zažene ip link, dokazuje le, da ima lupina pravice, ne pa da jih ima demon. Lastništvo vozlišča naprave, nabor zmogljivosti storitve in uporabnik, pod katerim teče se mora vse ujemati, preden odprtje uspe.

Naprava, ki obstaja in se ne odpre, je problem lastništva, ne usmerjanja. Tako jo obravnavajte pri iskanju napak, sicer popoldne mine ob branju usmerjevalnih tabel, ki nikoli niso bile problem.

Kdo konfigurira povezavo: dva modela lastništva

V prvem modelu OpenVPN konfigurira naslove in poti kot del dviga povezave. To je privzeto vedenje in najlažje za razmislek, ker ena komponenta ustvari stanje in ga nato spet odstrani. V drugem modelu ima vmesnik v lasti zunanji upravljalnik in ifconfig-noexec prepreči OpenVPN, da bi izvajal svoje ukaze za konfiguracijo naslovov, ter preda parametre skriptom. Upravljalnik mora nato sam uporabiti pravilno lokalno konfiguracijo in konfiguracijo partnerja, kar je več dela, kot nakazuje ime možnosti. Izbira med njima je vprašanje, kdo sme spreminjati povezavo, dokler je dvignjena.

ifconfig-noexec pokriva samo naslove: usmerjevalna tabela ostane nedotaknjena, konfiguracija poti pa pripada route-noexec. Obe direktivi obravnavajte kot ločeni upravljanji z ločenimi lastniki, ker je nastavitev ene in domneva druge pogost vir napol konfiguriranih povezav. Izberite natanko enega lastnika na plast, naslove na enem mestu in poti na enem mestu. Omrežni upravljalnik in pomočnik VPN, ki oba pišeta naslove, je način, kako prekinitev izbriše stanje, od katerega je druga stran še vedno odvisna.

Preglejte napravo iz imenskega prostora, ki je pomemben

Preglejte napravo iz imenskega prostora, v katerem teče proces VPN, ne iz tistega, v katerem je po naključju vaša lupina. Spodnja ukaza odgovarjata na različna vprašanja in razlika se pokaže, ko gostitelj vidi vmesnik, ki ga vsebnik ne vidi. Zaženite ju v navedenem vrstnem redu, ker ima drugi smisel šele, ko veste, ali povezava sploh obstaja.

ip -details link show dev tun1
ip tuntap show

Prvi ukaz izpiše povezavo tako, kot jo vidi jedro, vključno z zastavicami in vrsto vmesnika, in tako potrdite, da je to želena naprava. Drugi navaja trajne vnose tun/tap, ki obstajajo brez tega, da bi jih držal kateri koli proces. Vmesnik, ki čaka na svojega predvidenega lastnika, je drugačna situacija od živega tunela, pripetega na drugo VPN, in le drugi pojasni, zakaj vaše lastno pripenjanje ne uspe. Poiščite proces, ki drži napravo, preden karkoli spremenite, ker imata trajni vnos in zaseden vmesnik različne rešitve.

Podpora več vrstam je posebna razporeditev gonilnika z lastnimi zahtevami, ne dovoljenje nepovezanim procesom, da si delijo en vmesnik. Živa seja drugega lastnika je problem usklajevanja in nobeno urejanje profila ga ne reši.

Dve vrsti trajnosti

Trajnost jedra in persist-tun opisujeta življenjske dobe, ki jih je lahko zamenjati in drago pomešati. Trajna naprava obstaja neodvisno od katerega koli procesa, zato preživi zaustavitev in naslednji zagon jo lahko znova uporabi. persist-tun ohranja vire skozi podprte mehke ponovne zagone znotraj enega procesa OpenVPN, veliko krajše obzorje. Nobeno ne obljublja, da zaustavitev storitve pusti poti in naslove na mestu, in vmesnik, ki ostane viden, ni dokaz delujoče šifrirane seje.

Potrdite tudi backend, ker vnaprej ustvarjen vmesnik ne pove nič o tem, katera izvedba ga bo odprla. Skupnostne gradnje z neposredno podatkovno potjo ga bodo poskusile uporabiti, razen če zasnova pravi drugače. Kjer različica podpira stikalo, disable-dco namesto tega izbere pot v uporabniškem prostoru; starejši pogoni in drugi odjemalci takšne direktive nimajo, zato hranite pogoj različice ob možnosti, namesto da predpostavljate, da velja.

Kaj se zlomi, ko se preizkusi samo zagon

Dogovor o lastništvu lahko prestane prvi preizkus in pade na zadnjem, kar naredi sam zagon slabim preverjanjem. Opazujte namesto tega dva prehoda: mehki ponovni zagon in popolno zaustavitev, ki ji sledi zagon.

systemctl status openvpn-client@lab
ip -details link show dev tun1

Zagon je lahek primer: enota se dvigne, povezava se pojavi in izpis stanja poimenuje naloženi profil. Pripenjanje je trenutek, ko demon odpre napravo, zato preverjanje povezave zaženite potem, ko enota poroča, da je aktivna, in ne prej. Če povezava obstaja, medtem ko se stanje še aktivira, gledate trajno napravo, na katero se še nihče ni pripel, in ne delujočega tunela. Spustite resničen promet skozi povezavo, preden nadaljujete, ker je pripet vmesnik brez uporabne poti še vedno neuspeh.

kill -SIGHUP $(pidof openvpn)
journalctl -u openvpn-client@lab -n 40
systemctl stop openvpn-client@lab
ip -details link show dev tun1

Mehki ponovni zagon naj bi pustil sejo uporabno in vire nepoškodovane, in prav to delo opravlja persist-tun. Popolna zaustavitev je mesto, kjer se zunanji upravljalnik izda: če povezava ali njeni naslovi preživijo zaustavitev, jih ima v lasti nekdo drug, in to je bodisi stanje, ki ste ga dokumentirali, bodisi napaka, ki ste jo pravkar našli. Zapišite obe opažanji ob profil, da se naslednja sprememba začne z dokazi in ne z diagramom.

Sorodni članki