Маршрутизаторға кіріп, форум жазбасынан kill switch ережелер жинағын қоясыз, және туннель құлаған сәтте LAN шолуды тоқтатады. Екі күннен кейін маршрутизатор әлі де динамикалық DNS жазбасын қарапайым WAN арқылы жаңартып тұр, ал қонақ ноутбугі әлі де IPv6 сайттарына жетеді. Екі мінез-құлық та қалыпты, себебі қойылған ережелер бір тізбекті және бір мекенжайлар отбасын қамтыған, және олардың ешқайсысы бүкіл маршрутизатор емес. Пакет жолдарын ретімен өту нақты ненің өткізіліп кеткенін көрсетеді.

Ноутбуктен емес, маршрутизатордан бастаңыз

Маршрутизатор деңгейіндегі саясат шағын кеңсе үшін тартымды, себебі артындағы әр құрылғы бірдей мінез-құлықты мұраға алады және ешкім клиенттегі қосқышты қосуды ұмыта алмайды. Ол сондай-ақ әрбір микробағдарлама жаңартуынан кейін тексеру үшін бір орын береді. Бермейтіні — маршрутизатордың өз трафигін немесе екінші мекенжайлар отбасын автоматты қамту, және сәтсіз орналастырулардың көпшілігінің артындағы екі олқылық осы.

Бірдеңені өзгерту алдында қағазға үш деректі жазыңыз: WAN интерфейсінің атауы, LAN көпірінің атауы, сондай-ақ VPN соңғы нүктесінің мекенжайы мен порты. Үшеуі де ережелерде қажет болады, ал интерфейс атауларын болжау — дұрыс көрінетін ережелер жинағының ештеңе істемеуінің ең көп тараған себебі.

Пакет жүре алатын үш жолды өтіңіз

Ноутбуктен интернетке трафик жіберіледі, сондықтан ол FORWARD тізбегі арқылы өтеді. Маршрутизатордың өзі жасайтын трафик, мысалы, DNS жіберу, NTP сұраулары, DDNS жаңартулары және VPN басқару арнасы, OUTPUT арқылы өтеді. Маршрутизаторға бағытталған басқару трафигі INPUT арқылы келеді.

Сондықтан тек FORWARD-та құрылған kill switch клиенттерді қорғайды, басқа ештеңені емес. Кесте ашылу сахнасындағы ағудың неге жұмбақ емес, болжамды екенін көрсетеді.

Packet pathExampleChain that sees it
LAN client to WAN or tunnelBrowser requestFORWARD
Router-originatedDDNS update, NTPOUTPUT
Addressed to the routerSSH from the LANINPUT

Көптеген жобаларда INPUT-та kill switch қажет емес, бірақ туннель өшірулі кезде басқару қатынасын жұмысқа қабілетті ұстау керек. Әйтпесе VPN бірінші рет істен шыққанда консоль кабелімен кеңсеге барасыз.

Туннель әлі де көтеріле алатындай ережелерді реттеңіз

Жұмыс істейтін kill switch — бас тартумен аяқталатын рұқсаттар тізімі, және оны кірпіштен ажырататын нәрсе — реттілік. Алдымен loopback, VPN соңғы нүктесі, орнатылған ағындарға жауаптар және туннель интерфейсіне рұқсат беріңіз; қалғанын соңында қабылдамаңыз.

iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -d 198.51.100.7 -p udp --dport 51820 -j ACCEPT
iptables -A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o wg0 -j ACCEPT
iptables -A OUTPUT -o eth0 -j REJECT

Бұл кезеңде соңғы нүкте хост атауы емес, мекенжай болуы керек. Соңғы бас тарту DNS-ті бұғаттағаннан кейін, провайдердің хост атауын атайтын ережені енді шешу мүмкін емес, және туннель қайта жүктеуден кейін ешқашан қайта іске қосылмайды. Егер провайдер соңғы нүктелерді ауыстырса, саясат қолданылмас бұрын атауды шешіңіз және сол ережені сол скрипттен жаңартып отырыңыз.

Клиент трафигі үшін пішінді FORWARD-та қайталаңыз және бас тартудың үстіне айқын басқару ережесін қойыңыз. Бұл басқару ережесін тар, бірақ қолжетімді ұстаңыз және бірінші SSH сеансын жаппас бұрын екіншісін ашып растаңыз. Kill switch өзгерісі кезінде өзіңізді құлыптап қалу жоспарлауға тұрарлықтай жиі. WireGuard жұмыс істейтін маршрутизаторда серіктестің allowed-ips мәндері туннельге ненің кіретінін шешеді, ал бұл ережелер онсыз ненің шығуына рұқсат екенін шешеді.

IPv6-ға өз есігі қажет

Жоғарыдағының барлығы IPv4. Егер LAN-да жұмыс істейтін IPv6 болса және туннель тек IPv4 тасыса, қамтылған әрбір құрылғының жаңа ережелеріңіз ешқашан көрмейтін интернетке тікелей жолы бар. Қос стекті ноутбук оны қуана таңдайды, ал kill switch тек IPv4-пен тексеретін адамға бұзық көрінеді.

ip6tables -A FORWARD -i br-lan -j REJECT
ip6tables -A OUTPUT -o eth0 -j REJECT
ip6tables -A OUTPUT -o lo -j ACCEPT

Мұнда да рет маңызды: loopback рұқсаты WAN бас тартуынан бұрын болуы керек, әйтпесе маршрутизатордағы жергілікті қызметтер оғаш түрде істен шыға бастайды. Егер желі IPv6-ны мүлдем қолданбаса, оны WAN мен LAN-да өшіру қарапайым және ұмытылатын ештеңе қалмайды.

Кейбір VPN клиенттері тек IPv4 үшін әдепкі маршрутты орнатады және бар IPv6 әдепкі маршрутын тимей қалдырады. Туннель қосылғаннан кейін маршруттау кестесін тексеріңіз, клиент шешті деп ойламаңыз.

Мұны туннель өшірулі кезде дәлелдеңіз

Туннельді маршрутизатордан тоқтатып, үш жерден осы ретпен тексеріңіз:

# systemctl stop wg-quick@wg0
# ip route get 203.0.113.1
# curl -m 5 -sS http://example.com || echo blocked
# iptables -vnL OUTPUT | head
# ip6tables -vnL OUTPUT | head

Маршрут іздеу пакеттің қайда кететінін айтады, ал есептегіштер ережелеріңіздің қашан да сәйкес келген-келмегенін айтады. Сәтсіз сынақтан кейін нөл пакеті бар ереже ештеңені қорғамайды, ал әдеттегі себеп — сіз енгізгеннен өзгеше интерфейс атауы. Маршрутизатор жасайтын трафикті айқын тексеріңіз, өйткені LAN жағынан сынақ OUTPUT-ты іске қоса алмайды.

Сәтсіздік режимін ол қажет болмай тұрып шешіңіз. Fail-closed туннель қайтқанша клиенттерді желіден тыс ұстайды; fail-open қарапайым WAN қатынасын қалпына келтіреді және сізге маңызды болған трафик үшін мақсатты жояды. Жоғары метрикалы VPN пулына blackhole маршруты fail-closed жобалар үшін пайдалы екінші қабат, өйткені ол әдепкі маршрутқа қайтудың орнына туннель маршруты жойылғанда да сақталады.

Конфигурацияны тек LAN клиенті, маршрутизатор жасаған сұрау және IPv6 сұрауы туннель өшірулі кезде сәтсіз болып, туннель көтерілгенде үшеуі де қайта жұмыс істегенде ғана қабылдаңыз.

Қатысты мақалалар