Què fa TUN i què ha de continuar fent el protocol VPN
TUN mou paquets IP entre el nucli i un programa. El transport, l’autenticació i el xifratge pertanyen al protocol que parla aquest programa.
Tractar tun0 i un protocol VPN com una sola cosa porta la gent al registre equivocat. La interfície és una frontera local on un programa d’espai d’usuari intercanvia paquets IP amb el nucli. El protocol és el que fa aquest programa amb els paquets un cop els té: transport, autenticació, xifratge i un homòleg. Crear el dispositiu no tria res d’això.
Dos components, un sol camí de paquets
El nucli escriu un paquet IP al dispositiu i el programa el llegeix d’un descriptor de fitxer. En l’altra direcció el programa torna a escriure un paquet i el nucli l’encamina com si hagués arribat per una interfície real. TUN transporta IP, mentre que TAP transporta trames Ethernet. Llegir un paquet en aquesta frontera mostra l’emmarcament, que és exactament per a què serveix el dispositiu.
Tot el que hi ha més enllà d’aquesta frontera és cosa del programa. Dos programes poden fer servir el mateix concepte d’interfície i fer coses completament diferents amb els paquets. El dispositiu mateix no té cap opinió sobre què passa després. El descriptor de fitxer és l’única nansa que el programa té al costat del nucli.
Creeu el dispositiu i després observeu la frontera
Creeu un dispositiu deliberadament quan proveu la frontera. Un dispositiu persistent sobreviu al procés que el va crear, cosa útil per als experiments i una font habitual de confusió després. Comproveu les banderes i el propietari abans de culpar la VPN.
sudo ip tuntap add dev tun9 mode tun user alice
ip -d link show tun9El detall de l’enllaç mostra el tipus de dispositiu i el propietari associat. Si cap procés el té obert, els paquets que s’hi escriuen no van enlloc. Un dispositiu sense cap procés associat pot semblar sa en un llistat d’enllaços mentre no passa res.
Què no pot prometre el nom de la interfície
El nom de la interfície no diu res sobre el xifratge ni l’autenticació. Un programa pot embolcallar els paquets en TLS, en un protocol propi, en IPsec o en res. Triar TUN en lloc de TAP canvia l’emmarcament a la frontera, no el disseny de seguretat. L’elecció d’emmarcament és real i molt més petita que la qüestió de seguretat.
La detecció funciona de la mateixa manera: un observador veu el protocol exterior al fil, no una etiqueta que digui quin dispositiu local l’ha produït. Un túnel que sembla una altra cosa ho fa pel seu protocol exterior, no pel nom de la interfície. Un observador no pot veure quin dispositiu local ha produït un paquet, només com és el paquet. Mantingueu aquestes dues preguntes separades quan compareu productes, perquè una resposta mai no implica l’altra.
Adapteu la solució a l’etapa que falla
Separeu les etapes de fallada quan alguna cosa es trenca. Un dispositiu que falta, un error de permisos i un inici de sessió rebutjat produeixen proves i solucions diferents. Llegiu primer l’estat local, després el registre del programa i després la visió de l’homòleg. Llegiu els tres abans de canviar res.
ip -d link show tun0
journalctl -u openvpn-client@corp --since '10 min ago'Si el dispositiu existeix i un procés el té, la frontera local funciona i el problema és més enllà. Si falta el dispositiu, cap quantitat de comprovació de credencials no ajudarà. Una etapa que podeu anomenar és una etapa que podeu provar. La documentació de TUN/TAP descriu la frontera i el model del dispositiu.