Has seguit la llista de comprovació: denega la sortida, permet el túnel, activa ufw. Llavors el client espera a l'apretada de mans i no es connecta mai, o es connecta i no es carrega cap pàgina. Tots dos errors vénen del mateix buit. Falta la regla que permet que el túnel existeixi, perquè el túnel no és una interfície per la qual surten els teus paquets.

Per què un permís a tun0 no coincideix amb res al principi

tun0 el crea el client després que existeixi una sessió. Els datagrames que construeixen aquesta sessió són paquets UDP ordinaris adreçats al proveïdor al port 1194, i surten per wlan0 o eth0 amb l'adreça d'origen física. allow out on tun0 només coincideix amb el trànsit la interfície de sortida del qual és tun0, així que durant l'apretada de mans no coincideix amb res.

Posa default deny outgoing a sobre i els paquets exteriors es descarten abans que la interfície aparegui. El client reintenta, es consumeix el temps d'espera i informa d'una fallada de TLS o d'apretada de mans, cosa que envia la gent a buscar entre certificats i MTU mentre el tallafoc es menja la connexió en silenci. La regla que havia de contenir el teu trànsit impedeix que aquest trànsit es contingui.

La solució reflexa fa permanent la fuita. sudo ufw allow out on wlan0, o tornar el valor per defecte a permetre, aixeca el túnel i deixa la màquina sense interruptor d'aturada: la propera vegada que caigui el túnel, tot es reprèn per l'adaptador físic. Vaig perdre una tarda exactament en aquest parell d'edicions abans d'esbrinar quin paquet filtrava realment.

Què necessiten els dos conjunts de paquets

El teu trànsit travessa el tallafoc dues vegades, en dues formes. El paquet interior va de l'adreça del túnel cap a fora per tun0. El paquet exterior va de l'adreça física al parell, i és l'única cosa visible al cable. Una regla per forma:

sudo ufw allow out on tun0
sudo ufw allow out to 203.0.113.10 port 1194 proto udp
sudo ufw allow out to 203.0.113.10 port 443 proto tcp comment 'tcp fallback'

Substitueix l'adreça i el port pels del teu propi perfil. Els parells de WireGuard solen respondre a 51820/udp; els perfils d'OpenVPN que van per TCP 443 necessiten aquest port. Els detalls canvien, la forma no: totes dues regles són estretes i, juntes, defineixen les úniques destinacions que la màquina pot assolir mentre el túnel està caigut.

L'ordre és el segon mite. Amb iptables en brut llegeixes la cadena de dalt a baix i raones quina regla guanya. ufw no és un embolcall prim de la llista que has escrit; compila les teves regles a les seves pròpies cadenes i tria els punts d'inserció. ufw status les imprimeix en l'ordre d'ufw, no en el teu. Quan una regla sembla ignorada, compara ufw show added amb el conjunt compilat de iptables -S | grep ufw abans de reescriure res.

L'excepció ha de quedar-se ampla d'una adreça

Una regla de parell només és correcta mentre anomena l'adreça a la qual el client marca. Els proveïdors roten punts finals, i un perfil que resol un nom d'amfitrió seguirà un canvi de DNS cap a una adreça nova mentre la regla continua apuntant a la vella. Quan un túnel que funcionava des de feia mesos deixa d'aixecar-se, compara l'adreça de la regla amb la que el client busca abans d'ampliar res.

Ampliar a tota una subxarxa, o a cada destinació al port 1194, converteix la política de nou en un tallafoc amb un forat. L'excepció és l'interruptor d'aturada; un cop és ampli, no queda res per aturar. Mantén-la en una sola adreça i deixa un comentari que anomeni el perfil i el proveïdor al qual pertany, perquè d'aquí a sis mesos l'adreça semblarà arbitrària.

La resolució de noms mereix la seva pròpia línia. La consulta passa abans que existeixi el túnel, per la interfície física, així que una política estricta de denegació de sortida pot deixar el client incapaç de trobar el seu propi servidor. Permet el port 53 cap a l'adreça del teu resolutor, o resol una vegada i fixa l'adreça al perfil. Permetre DNS a totes les interfícies és una decisió, no un valor per defecte.

Construeix la política abans que calgui el túnel

ufw enable aplica tota la política alhora i recarrega les seves cadenes, i canviar una política per defecte en un tallafoc en marxa també les recarrega. El manual d'ufw adverteix que això pot fer caure connexions existents com SSH. Per tant les ordres van en aquest ordre, amb la regla SSH abans de l'activació i una sessió de consola oberta:

sudo ufw default deny incoming
sudo ufw default deny outgoing
sudo ufw allow out on tun0
sudo ufw allow out to 203.0.113.10 port 1194 proto udp
sudo ufw allow 22/tcp
sudo ufw enable
sudo ufw status verbose

ufw reset es deixa fora d'aquest bloc a propòsit. Esborra totes les regles i desactiva el tallafoc, i en un amfitrió remot l'activació següent és el que fa caure la teva sessió. Si fas el reset, afegeix la regla SSH i confirma una segona via de tornada per consola abans de continuar.

La seqüència no és cosmètica. Les regles afegides mentre ufw s'executa no buiden res, però en el moment que tombes una política per defecte les cadenes es recarreguen, i una sessió que la política antiga permetia se'n va amb elles. Fes els defectes, els permisos i l'activació en una sola passada, mentre encara tens una via d'entrada que no depèn de la màquina.

Prova l'estat bloquejat i conserva la desfeta

Un interruptor d'aturada no provat és una suposició. Desconnecta el client a propòsit i intenta carregar una pàgina: ha de fallar. Torna a connectar i ha de recuperar-se sense tocar cap regla. sudo ufw status verbose confirma els defectes i l'estat del registre, i ufw status numbered mostra quina regla de prova cal esborrar quan sobrevisqui al seu propòsit.

Mantén l'script invers al costat del directe. Una màquina amb denegació de sortida i un túnel mort no pot descarregar la seva pròpia reparació, així que la desfeta ha de ser al disc i llegible des d'una consola:

sudo ufw reset
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw enable

Executa'l quan el túnel ja està caigut i les regles s'han de treure, no com a pas rutinari. Abans de tancar el terminal, quatre coses han de complir-se: la regla del parell anomena exactament una adreça, el DNS té una excepció anomenada, l'activació va arribar després dels permisos, i estirar el túnel mata el trànsit ordinari sense matar el client per sempre.

Articles relacionats