Tretiranje tun0 i VPN protokola kao jedne stvari šalje ljude na pogrešan dnevnik. Interfejs je lokalna granica na kojoj program iz korisničkog prostora razmjenjuje IP pakete s kernelom. Protokol je ono što taj program radi s paketima kad ih dobije: transport, autentikacija, enkripcija i partner. Stvaranje uređaja ne bira ništa od toga.

Dvije komponente, jedna putanja paketa

Kernel upisuje IP paket u uređaj, a program ga čita iz datotečnog deskriptora. U suprotnom smjeru program upisuje paket natrag i kernel ga rutira kao da je stigao na stvarni interfejs. TUN prenosi IP, dok TAP prenosi Ethernet okvire. Čitanje paketa na toj granici pokazuje uokvirenje, a uređaj upravo za to služi.

Sve iza te granice stvar je programa. Dva programa mogu koristiti isti koncept interfejsa i raditi potpuno različite stvari s paketima. Sam uređaj nema mišljenje o tome šta se dalje događa. Datotečni deskriptor je jedina ručka koju program ima na strani kernela.

Napravite uređaj, pa gledajte granicu

Napravite uređaj namjerno kada testirate granicu. Postojani uređaj preživi proces koji ga je stvorio, što je korisno za eksperimente i čest izvor zabune kasnije. Provjerite zastavice i vlasnika prije nego što okrivite VPN.

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

Detalji veze pokazuju tip uređaja i pridruženog vlasnika. Ako ga nijedan proces ne drži otvorenim, paketi upisani u njega ne idu nikamo. Uređaj bez pridruženog procesa može izgledati zdravo u listi veza dok ništa ne propušta.

Šta ime interfejsa ne može obećati

Ime interfejsa ne govori ništa o enkripciji ni autentikaciji. Program može umotati pakete u TLS, u vlastiti protokol, u IPsec ili u ništa. Odabir TUN umjesto TAP mijenja uokvirenje na granici, a ne sigurnosni dizajn. Odabir uokvirenja je stvaran i mnogo manji od sigurnosnog pitanja.

Otkrivanje radi na isti način: promatrač vidi vanjski protokol na žici, a ne oznaku koja kaže koji ga je lokalni uređaj proizveo. Tunel koji izgleda kao nešto drugo to čini zbog svog vanjskog protokola, a ne zbog imena interfejsa. Promatrač ne može vidjeti koji je lokalni uređaj proizveo paket, samo kako paket izgleda. Držite ta dva pitanja odvojeno kada poredite proizvode, jer jedan odgovor nikada ne podrazumijeva drugi.

Uskladite popravku s fazom koja pada

Razdvojite faze kvara kada se nešto pokvari. Nedostajući uređaj, greška u dozvolama i odbijena prijava daju različite dokaze i različite popravke. Prvo pročitajte lokalno stanje, zatim vlastiti dnevnik programa, pa pogled partnera. Pročitajte sva tri prije nego što bilo šta promijenite.

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

Ako uređaj postoji i proces ga drži, lokalna granica radi i problem je dalje. Ako uređaj nedostaje, nijedna provjera akreditiva neće pomoći. Faza koju možete imenovati je faza koju možete testirati. Dokumentacija za TUN/TAP opisuje granicu i model uređaja.

Povezani članci