Jy het die kontrolelys gevolg: weier uitgaande, laat die tonnel deur, aktiveer ufw. Dan wag die kliënt by die handdruk en verbind nooit, of dit verbind en geen bladsy laai nie. Albei mislukkings kom uit dieselfde leemte. Die reël wat die tonnel laat bestaan, ontbreek, want die tonnel is nie 'n koppelvlak waaruit jou pakkette vertrek nie.

Waarom 'n toelating op tun0 eers niks pas nie

tun0 word deur die kliënt geskep nadat 'n sessie bestaan. Die datagramme wat daardie sessie bou, is gewone UDP-pakkette wat aan die verskaffer op poort 1194 gerig is, en hulle vertrek deur wlan0 of eth0 met die fisiese bronadres. allow out on tun0 pas slegs verkeer wie se uitgaande koppelvlak tun0 is, so tydens die handdruk pas dit glad niks nie.

Sit default deny outgoing bo-op dit en die buitenste pakkette word laat val voordat die koppelvlak ooit verskyn. Die kliënt probeer weer, keer uit, en rapporteer 'n TLS- of handdrukfout, wat mense deur sertifikate en MTU laat soek terwyl die vuurmuur die verbinding stilweg opvreet. Die reël wat jou verkeer moes inperk, verhinder dat daardie verkeer ingeperk word.

Die refleksoplossing maak die lek permanent. sudo ufw allow out on wlan0, of om die verstek terug te skakel na toelaat, bring die tonnel op en laat die masjien sonder 'n doodskakelaar: die volgende keer dat die tonnel val, hervat alles oor die fisiese adapter. Ek het 'n middag verloor aan presies daardie paar wysigings voordat ek uitgewerk het watter pakket ek eintlik filter.

Wat die twee stelle pakkette nodig het

Jou verkeer kruis die vuurmuur twee keer, in twee vorms. Die binneste pakket loop van die tonneladres uit deur tun0. Die buitenste pakket loop van die fisiese adres na die eweknie, en dit is die enigste ding wat op die draad sigbaar is. Een reël per vorm:

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'

Vervang die adres en poort met dié uit jou eie profiel. WireGuard-eweknieë antwoord gewoonlik op 51820/udp; OpenVPN-profiele wat oor TCP 443 ry, het daardie poort nodig. Die besonderhede verskil, die vorm nie: albei reëls is smal, en saam bepaal hulle die enigste bestemmings wat die masjien kan bereik terwyl die tonnel af is.

Volgorde is die tweede mite. Met rou iptables lees jy die ketting van bo na onder en redeneer oor watter reël wen. ufw is nie 'n dun omhulsel om die lys wat jy getik het nie; dit stel jou reëls in sy eie kettings saam en kies die invoegpunte. ufw status druk dit in ufw se volgorde, nie joune nie. Wanneer 'n reël geïgnoreer lyk, vergelyk ufw show added met die saamgestelde stel uit iptables -S | grep ufw voordat jy enigiets herskryf.

Die uitsondering moet een adres breed bly

'n Ewekniereël is net korrek terwyl dit die adres noem wat die kliënt skakel. Verskaffers roteer eindpunte, en 'n profiel wat 'n gasheernaam oplos, sal 'n DNS-verandering na 'n nuwe adres volg terwyl die reël na die ou een bly wys. Wanneer 'n tonnel wat maande lank gewerk het, ophou opkom, vergelyk die adres in die reël met die een waarna die kliënt soek voordat jy enigiets verbreed.

Om na 'n hele subnet te verbreed, of na elke bestemming op poort 1194, maak die beleid weer 'n vuurmuur met 'n gat. Die uitsondering is die doodskakelaar; sodra dit breed is, is daar niks oor om te skakel nie. Hou dit by een adres en los 'n opmerking wat die profiel en verskaffer noem waaraan dit behoort, want oor ses maande sal die adres willekeurig lyk.

Naamresolusie verdien sy eie reël. Die opsoek gebeur voordat die tonnel bestaan, oor die fisiese koppelvlak, so 'n streng weier-uitgaande beleid kan die kliënt nie in staat stel om sy eie bediener te vind nie. Laat poort 53 na jou oplosser se adres toe, of los een keer op en pen die adres in die profiel vas. Om DNS op elke koppelvlak toe te laat, is 'n besluit, nie 'n verstek nie.

Bou die beleid voordat die tonnel nodig is

ufw enable pas die hele beleid gelyktydig toe en herlaai sy kettings, en om 'n verstekbeleid op 'n lopende vuurmuur te verander, herlaai hulle ook. Die ufw-handleiding waarsku dat dit bestaande verbindings soos SSH kan laat val. Dus gaan die opdragte in hierdie volgorde, met die SSH-reël voor die aktivering en 'n konsolesessie oop:

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 is doelbewus uit daardie blok gelaat. Dit verwyder elke reël en deaktiveer die vuurmuur, en op 'n afgeleë gasheer is die daaropvolgende aktivering wat jou sessie laat val. As jy wel herstel, voeg die SSH-reël by en bevestig 'n tweede pad terug via 'n konsole voordat jy verder gaan.

Die volgorde is nie kosmeties nie. Reëls wat bygevoeg word terwyl ufw loop, spoel niks uit nie, maar die oomblik wanneer jy 'n verstekbeleid omdraai, herlaai die kettings, en 'n sessie wat die ou beleid toegelaat het, gaan saam. Doen die verstekke, die toelatings en die aktivering in een lopie, terwyl jy nog 'n pad in het wat nie van die masjien afhang nie.

Toets die geblokkeerde toestand, en hou die ongedaanmaking

'n Ongetoetste doodskakelaar is 'n raaiskoot. Ontkoppel die kliënt doelbewus en probeer 'n bladsy laai: dit moet misluk. Herverbind en dit moet herstel sonder om aan 'n reël te raak. sudo ufw status verbose bevestig die verstekke en die logtoestand, en ufw status numbered wys watter toetsreël om te verwyder wanneer dit sy doel oorleef.

Hou die omgekeerde skrip langs die voorwaartse een. 'n Masjien met weier-uitgaande en 'n dooie tonnel kan nie sy eie herstel aflaai nie, so die ongedaanmaking moet op skyf sit en van 'n konsole leesbaar wees:

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

Voer dit uit wanneer die tonnel reeds af is en die reëls verwyder moet word, nie as 'n roetine-stap nie. Voordat jy die terminal sluit, moet vier dinge geld: die ewekniereël noem presies een adres, DNS het 'n genoemde uitsondering, die aktivering het na die toelatings gekom, en om die tonnel te trek dood gewone verkeer sonder om die kliënt vir goed dood te maak.

Verwante artikels