Što radi TUN i što VPN protokol još mora raditi
TUN prenosi IP pakete između kernela i programa. Transport, autentikacija i enkripcija pripadaju protokolu kojim taj program govori.
Tretiranje tun0 i VPN protokola kao jedne stvari šalje ljude na pogrešan dnevnik. Sučelje 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 odabire ništa od toga.
Dvije komponente, jedna staza 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 usmjerava kao da je stigao na stvarno sučelje. 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 sučelja i raditi potpuno različite stvari s paketima. Sam uređaj nema mišljenje o tome što se dalje događa. Datotečni deskriptor jedina je ručka koju program ima na strani kernela.
Stvorite uređaj, pa gledajte granicu
Stvorite 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 tun9Pojedinosti veze pokazuju vrstu 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 na popisu veza dok ništa ne propušta.
Što naziv sučelja ne može obećati
Naziv sučelja 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 stvaran je 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 čini to zbog svog vanjskog protokola, a ne zbog naziva sučelja. Promatrač ne može vidjeti koji je lokalni uređaj proizveo paket, samo kako paket izgleda. Držite ta dva pitanja odvojeno kada uspoređujete proizvode, jer jedan odgovor nikada ne podrazumijeva drugi.
Uskladite popravak s fazom koja pada
Razdvojite faze kvara kada se nešto pokvari. Nedostajući uređaj, pogreš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 što 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 vjerodajnica 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.