Ce face TUN și ce mai trebuie să facă protocolul VPN
TUN mută pachete IP între nucleu și un program. Transportul, autentificarea și criptarea aparțin protocolului pe care îl vorbește acel program.
A trata tun0 și un protocol VPN ca pe un singur lucru îi trimite pe oameni la jurnalul greșit. Interfața este o graniță locală unde un program din spațiul utilizatorului schimbă pachete IP cu nucleul. Protocolul este ceea ce face acel program cu pachetele după ce le are: transport, autentificare, criptare și un partener. Crearea dispozitivului nu alege niciuna dintre acestea.
Două componente, o singură cale a pachetelor
Nucleul scrie un pachet IP în dispozitiv, iar programul îl citește dintr-un descriptor de fișier. În direcția opusă programul scrie un pachet înapoi și nucleul îl rutează ca și cum ar fi ajuns pe o interfață reală. TUN transportă IP, în timp ce TAP transportă cadre Ethernet. Citirea unui pachet la acea graniță arată încadrarea, și exact pentru asta există dispozitivul.
Tot ce se află dincolo de acea graniță este treaba programului. Două programe pot folosi același concept de interfață și pot face lucruri complet diferite cu pachetele. Dispozitivul în sine nu are nicio părere despre ce se întâmplă mai departe. Descriptorul de fișier este singurul mâner pe care programul îl are de partea nucleului.
Creați dispozitivul, apoi observați granița
Creați un dispozitiv intenționat când testați granița. Un dispozitiv persistent supraviețuiește procesului care l-a creat, ceea ce este util pentru experimente și o sursă obișnuită de confuzie mai târziu. Verificați stegulețele și proprietarul înainte de a da vina pe VPN.
sudo ip tuntap add dev tun9 mode tun user alice
ip -d link show tun9Detaliile legăturii arată tipul dispozitivului și proprietarul asociat. Dacă niciun proces nu îl ține deschis, pachetele scrise în el nu ajung nicăieri. Un dispozitiv fără proces asociat poate părea sănătos într-o listă de legături fără să lase nimic să treacă.
Ce nu poate promite numele interfeței
Numele interfeței nu spune nimic despre criptare sau autentificare. Un program poate înfășura pachetele în TLS, într-un protocol propriu, în IPsec sau în nimic. Alegerea TUN în locul TAP schimbă încadrarea la graniță, nu proiectul de securitate. Alegerea încadrării este reală și este mult mai mică decât întrebarea de securitate.
Detectarea funcționează la fel: un observator vede protocolul exterior pe fir, nu o etichetă care spune ce dispozitiv local l-a produs. Un tunel care arată ca altceva face asta din cauza protocolului său exterior, nu din cauza numelui interfeței. Un observator nu poate vedea ce dispozitiv local a produs un pachet, doar cum arată pachetul. Țineți aceste două întrebări separate când comparați produse, pentru că un răspuns nu îl implică niciodată pe celălalt.
Potriviți remedierea cu etapa care eșuează
Separați etapele de eșec când ceva se strică. Un dispozitiv lipsă, o eroare de permisiuni și o autentificare respinsă produc dovezi și remedieri diferite. Citiți mai întâi starea locală, apoi jurnalul programului însuși, apoi perspectiva partenerului. Citiți toate trei înainte de a schimba ceva.
ip -d link show tun0
journalctl -u openvpn-client@corp --since '10 min ago'Dacă dispozitivul există și un proces îl ține, granița locală funcționează și problema este mai departe. Dacă dispozitivul lipsește, nicio verificare a acreditărilor nu va ajuta. O etapă pe care o puteți numi este o etapă pe care o puteți testa. Documentația TUN/TAP descrie granița și modelul dispozitivului.