Прекинувачот на UFW го блокира вашиот VPN? Дозволете го партнерот
Вашето правило за забрана на излезниот сообраќај го фрла ракувањето на тунелот. Еден исклучок за партнерот, додаден пред ufw enable, ја претвора политиката во прекинувач.
Ја следевте контролната листа: забранете излезен, дозволете тунелот, вклучете ufw. Потоа клиентот чека на ракувањето и никогаш не се поврзува, или се поврзува и ниту една страница не се вчитува. Двата неуспеси доаѓаат од истата празнина. Недостасува правилото што му дозволува на тунелот да постои, бидејќи тунелот не е интерфејс од кој излегуваат вашите пакети.
Зошто дозволата на tun0 на почеток не се совпаѓа со ништо
tun0 го создава клиентот откако ќе постои сесија. Датаграмите што ја градат таа сесија се обични UDP пакети упатени до давателот на портата 1194 и излегуваат низ wlan0 или eth0 со физичката изворна адреса. allow out on tun0 се совпаѓа само со сообраќај чиј излезен интерфејс е tun0, па за време на ракувањето не се совпаѓа со ништо.
Ставете default deny outgoing врз тоа и надворешните пакети се отфрлаат пред интерфејсот воопшто да се појави. Клиентот повторно се обидува, истекува времето и пријавува TLS или грешка при ракување, што ги праќа луѓето да пребаруваат низ сертификати и MTU додека огнениот ѕид тивко ја јаде врската. Правилото што требаше да го задржи вашиот сообраќај го спречува тој сообраќај да биде задржан.
Рефлексното решение го прави истекувањето трајно. sudo ufw allow out on wlan0, или враќањето на стандардната вредност на дозволи, го крева тунелот и ја остава машината без прекинувач: следниот пат кога тунелот ќе падне, се продолжува преку физичкиот адаптер. Изгубив попладне точно на тој пар измени пред да сфатам кој пакет всушност го филтрирам.
Што им треба на двете множества пакети
Вашиот сообраќај го преминува огнениот ѕид двапати, во две форми. Внатрешниот пакет оди од адресата на тунелот надвор низ tun0. Надворешниот пакет оди од физичката адреса до партнерот и е единственото видливо на жицата. Едно правило на форма:
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'
Заменете ја адресата и портата со оние од вашиот профил. WireGuard партнерите обично одговараат на 51820/udp; OpenVPN профилите што одат преку TCP 443 наместо тоа ја бараат таа порта. Деталите се разликуваат, формата не: двете правила се тесни и заедно ги одредуваат единствените одредишта до кои машината може да стигне додека тунелот е паднат.
Редоследот е вториот мит. Со суров iptables ја читате веригата од горе надолу и размислувате кое правило победува. ufw не е тенка обвивка околу списокот што го внесовте; тој ги компајлира вашите правила во свои вериги и ги избира точките на вметнување. ufw status ги печати по редот на ufw, не по вашиот. Кога правило изгледа игнорирано, споредете ufw show added со компајлираното множество од iptables -S | grep ufw пред да препишете нешто.
Исклучокот мора да остане широк една адреса
Правилото за партнер е точно само додека ја именува адресата што клиентот ја повикува. Давателите ги ротираат крајните точки, а профилот што решава име на домаќин ќе следи промена на DNS кон нова адреса додека правилото продолжува да покажува на старата. Кога тунел што работел со месеци престанува да се крева, споредете ја адресата во правилото со онаа што клиентот ја бара пред да проширите нешто.
Проширувањето на цела подмрежа или на секое одредиште на портата 1194 ја враќа политиката во огнен ѕид со дупка. Исклучокот е прекинувачот; штом е широк, нема што повеќе да се исклучи. Држете го на една адреса и оставете коментар што го именува профилот и давателот на кој припаѓа, бидејќи за шест месеци адресата ќе изгледа произволна.
Решавањето имиња заслужува своја линија. Пребарувањето се случува пред тунелот да постои, преку физичкиот интерфејс, па строга политика на забрана на излез може да го остави клиентот неспособен да го најде сопствениот сервер. Дозволете порта 53 кон адресата на вашиот резолвер или решете еднаш и прицврстете ја адресата во профилот. Дозволувањето DNS на секој интерфејс е одлука, не стандард.
Изградете ја политиката пред тунелот да биде потребен
ufw enable ја применува целата политика одеднаш и ги превчитува своите вериги, а менувањето на стандардната политика на огнен ѕид што работи исто така ги превчитува. ufw прирачникот предупредува дека тоа може да ги фрли постојните врски како SSH. Затоа наредбите одат по овој ред, со SSH правилото пред вклучувањето и отворена конзолна сесија:
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 е намерно оставено надвор од тој блок. Тоа го брише секое правило и го оневозможува огнениот ѕид, а на далечински домаќин следното вклучување е она што ја фрла вашата сесија. Ако сепак ресетирате, додајте го SSH правилото и потврдете втор пат назад преку конзола пред да продолжите.
Редоследот не е козметички. Правилата додадени додека ufw работи не исплакнуваат ништо, но во моментот кога ќе ја превртите стандардната политика веригите се превчитуваат, а сесија што ја дозволувала старата политика оди со нив. Направете ги стандардите, дозволите и вклучувањето во еден премин, додека се уште имате влез што не зависи од машината.
Тестирајте ја блокираната состојба и задржете го враќањето
Нетестиран прекинувач е претпоставка. Намерно исклучете го клиентот и обидете се да вчитате страница: тоа мора да не успее. Поврзете се повторно и тоа мора да се врати без допирање на правило. sudo ufw status verbose ги потврдува стандардите и состојбата на евидентирањето, а ufw status numbered покажува кое тест правило да се избрише кога ќе ја надживее својата цел.
Држете ја обратната скрипта покрај предната. Машина со забрана на излез и мртов тунел не може да ја преземе сопствената поправка, па враќањето мора да стои на дискот и да биде читливо од конзола:
sudo ufw reset
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw enable
Извршете го кога тунелот веќе е паднат и правилата мора да се отстранат, не како рутински чекор. Пред да го затворите терминалот, четири работи мора да важат: правилото за партнер именува точно една адреса, DNS има именуван исклучок, вклучувањето дојде по дозволите, и влечењето на тунелот убива обичен сообраќај без да го убие клиентот засекогаш.