Považovať tun0 a VPN protokol za jednu vec posiela ľudí k nesprávnemu logu. Rozhranie je lokálna hranica, kde program v používateľskom priestore vymieňa IP pakety s jadrom. Protokol je to, čo tento program robí s paketmi, keď ich má: prenos, autentifikácia, šifrovanie a partner. Vytvorenie zariadenia nevyberá nič z toho.

Dve súčasti, jedna cesta paketu

Jadro zapisuje IP paket do zariadenia a program ho číta z deskriptora súboru. Opačným smerom program zapíše paket späť a jadro ho smeruje, ako keby dorazil na skutočné rozhranie. TUN prenáša IP, zatiaľ čo TAP prenáša ethernetové rámce. Čítanie paketu na tejto hranici ukazuje rámcovanie, a práve na to zariadenie slúži.

Všetko za touto hranicou je vecou programu. Dva programy môžu používať ten istý koncept rozhrania a robiť s paketmi úplne odlišné veci. Samotné zariadenie nemá názor na to, čo bude nasledovať. Deskriptor súboru je jediná rukoväť, ktorú program na strane jadra má.

Vytvorte zariadenie a potom sledujte hranicu

Keď testujete hranicu, vytvorte zariadenie zámerne. Trvalé zariadenie prežije proces, ktorý ho vytvoril, čo je užitočné pri experimentoch a neskôr častý zdroj zmätku. Pred obvinením VPN skontrolujte príznaky a vlastníka.

sudo ip tuntap add dev tun9 mode tun user alice
ip -d link show tun9

Podrobnosti spojenia ukazujú typ zariadenia a priradeného vlastníka. Ak ho žiadny proces nemá otvorené, pakety doň zapísané nikam nejdú. Zariadenie bez priradeného procesu môže v zozname spojení vyzerať zdravo, a pritom nič neprepúšťa.

Čo názov rozhrania nemôže sľúbiť

Názov rozhrania nehovorí nič o šifrovaní ani autentifikácii. Program môže pakety zabaliť do TLS, do vlastného protokolu, do IPsec alebo do ničoho. Voľba TUN namiesto TAP mení rámcovanie na hranici, nie bezpečnostný návrh. Voľba rámcovania je skutočná a je oveľa menšia než bezpečnostná otázka.

Detekcia funguje rovnako: pozorovateľ vidí na drôte vonkajší protokol, nie štítok hovoriaci, ktoré lokálne zariadenie ho vytvorilo. Tunel, ktorý vyzerá ako niečo iné, to robí kvôli svojmu vonkajšiemu protokolu, nie kvôli názvu rozhrania. Pozorovateľ nevidí, ktoré lokálne zariadenie paket vytvorilo, iba ako paket vyzerá. Pri porovnávaní produktov držte tieto dve otázky oddelene, pretože jedna odpoveď nikdy neimplikuje druhú.

Prispôsobte opravu zlyhávajúcej fáze

Keď sa niečo pokazí, oddeľte fázy zlyhania. Chýbajúce zariadenie, chyba oprávnení a odmietnuté prihlásenie dávajú rôzne dôkazy a rôzne opravy. Najprv čítajte lokálny stav, potom vlastný log programu, potom pohľad partnera. Prečítajte všetky tri, skôr než niečo zmeníte.

ip -d link show tun0
journalctl -u openvpn-client@corp --since '10 min ago'

Ak zariadenie existuje a proces ho drží, lokálna hranica funguje a problém je ďalej. Ak zariadenie chýba, žiadna kontrola prihlasovacích údajov nepomôže. Fáza, ktorú viete pomenovať, je fáza, ktorú viete otestovať. Dokumentácia TUN/TAP opisuje hranicu a model zariadenia.

Súvisiace články