Tretirati tun0 i VPN protokol kao jednu stvar vodi ljude na pogrešan dnevnik. Interfejs je lokalna granica na kojoj program iz korisničkog prostora razmenjuje IP pakete sa kernelom. Protokol je ono što taj program radi sa paketima kada ih dobije: transport, autentikacija, enkripcija i partner. Pravljenje uređaja ne bira ništa od toga.

Dve komponente, jedna putanja paketa

Kernel upisuje IP paket u uređaj, a program ga čita iz datotečnog deskriptora. U suprotnom smeru program upisuje paket nazad i kernel ga rutira kao da je stigao na pravi interfejs. TUN prenosi IP, dok TAP prenosi Ethernet okvire. Čitanje paketa na toj granici pokazuje uokviravanje, i 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 sa paketima. Sam uređaj nema mišljenje o tome šta se dalje dešava. Datotečni deskriptor je jedina ručka koju program ima na strani kernela.

Napravite uređaj, pa gledajte granicu

Napravite uređaj namerno kada testirate granicu. Trajni uređaj preživi proces koji ga je napravio, što je korisno za eksperimente i čest izvor zabune kasnije. Proverite zastavice i vlasnika pre 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 nikuda. Uređaj bez pridruženog procesa može izgledati zdravo na listi veza dok ništa ne propušta.

Šta ime interfejsa ne može da obeća

Ime interfejsa ne govori ništa o enkripciji ni autentikaciji. Program može umotati pakete u TLS, u sopstveni protokol, u IPsec ili u ništa. Biranje TUN umesto TAP menja uokviravanje na granici, a ne bezbednosni dizajn. Izbor uokviravanja je stvaran i mnogo manji od bezbednosnog pitanja.

Otkrivanje radi na isti način: posmatrač vidi spoljni 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 spoljnog protokola, a ne zbog imena interfejsa. Posmatrač ne može da vidi 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 podrazumeva drugi.

Uskladite popravku sa fazom koja pada

Razdvojite faze kvara kada se nešto pokvari. Uređaj koji nedostaje, greška u dozvolama i odbijena prijava daju različite dokaze i različite popravke. Prvo pročitajte lokalno stanje, zatim sopstveni dnevnik programa, pa pogled partnera. Pročitajte sva tri pre nego što bilo šta promenite.

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 provera akreditiva neće pomoći. Faza koju možete da imenujete je faza koju možete da testirate. Dokumentacija za TUN/TAP opisuje granicu i model uređaja.

Povezani članci