Выключыць імя хоста — тое, чаго тунель зрабіць не можа. Але маршрут можа накіраваць адзін адрас па-за тунель і праз хатні шлюз, і звычайна гэтага дастаткова для аднаго сайта. Загваздка ў тым, што ўсё ніжэй па маршруце павінна ўзгадніцца: брандмаўэр павінен выпускаць пакет, DNS павінен вяртаць адрас, які вы накіравалі, а сайт павінен працягваць карыстацца гэтым адрасам. Калі хоць адно з трох зрушыцца, выключэнне перастае працаваць, не абвяшчаючы пра сябе.

Прачытайце адрас прызначэння, перш чым кранаць тунель

Загрузіце сайт аднойчы з уключаным тунелем, а потым паглядзіце на адрас суразмоўцы, да якога браўзер сапраўды падключыўся. У Linux, ss -tunp паказвае аддалены адрас для кожнага адкрытага сокета, а dig +short для таго ж імя паказвае, што вярнуў рэзалвер. Трымайце абодва нумары перад сабой.

Абодва адказы часта не супадаюць, і гэтае разыходжанне і ёсць уся праблема. Вялікія сайты ставяць сетку кантэнту перад сваёй крыніцай, таму адрас, які рэзалвер вяртае зараз, можа быць не тым, якім браўзер карыстаўся хвіліну таму. Накіроўвайце тое, што вы назіралі на сокеце, а не тое, што пералічвае стары даведнік. Калі адказы працягваюць круціцца па рэгіёнах, выключэнне адраса — няправільны інструмент для гэтага канкрэтнага сайта.

Запусціце пошук другі раз з іншай сеткі і запішыце адказ IPv6 разам з адказам IPv4. Тунель, які нясе абедзве сям'і, патрабуе выключэння ў абедзвюх, інакш браўзер ціха вяртаецца на шлях IPv6, якога вы ніколі не краналі. Пакладзіце адрасы і дату туды, дзе вы зноў паглядзіце.

Пастаўце адзін маршрут хоста на кліенце

Выкажам здагадку, што інтэрфейс называецца home-wg, а LAN-роўтар знаходзіцца на 192.168.1.1. NetworkManager бярэ маршрут, шлюзам якога з'яўляецца гэты роўтар, а даўжыня прэфікса ахоплівае поўныя 32 біты, і ядро аддае яму перавагу, бо самы доўгі прэфікс перамагае.

nmcli connection modify home-wg +ipv4.routes "198.51.100.20/32 192.168.1.1"
nmcli connection up home-wg
ip route get 198.51.100.20

Шлюз павінен быць дасяжным без тунеля; накіраванне наступнага скока на адрас тунеля знішчае сэнс, бо пакет зноў увайшоў бы ў інтэрфейс, якога вы спрабуеце пазбегнуць. Пасля таго як злучэнне зноў узнімецца, ip route get для выключэння павінна надрукаваць LAN-шлюз, і тая ж каманда для публічнага рэзалвера павінна ўсё яшчэ надрукаваць прыладу тунеля.

У профілі wg-quick няма поля маршрутаў, таму тое ж выключэнне жыве ў радку PostUp , які дадае маршрут хоста ў галоўную табліцу з LAN-інтэрфейсам у якасці прылады. Апусціце і падніміце інтэрфейс пасля рэдагавання, бо працуючы інтэрфейс ніколі не перачытвае свой файл. Правілы fwmark, якія ўсталёўвае wg-quick, кіруюць толькі яго ўласнымі інкапсуляванымі пакетамі, таму звычайны трафік браўзера па-ранейшаму ідзе па галоўнай табліцы і знаходзіць ваш /32.

Kill switch — наступнае, што гэта блакуе

Палітыка брандмаўэра, якая прапускае трафік толькі на інтэрфейсе тунеля, адкіне выключэнне, нават калі маршрут цалкам правільны. Чытайце правілы за пераключальнікам, а не давярайце пераключальніку, бо тыя, што рэалізуюць kill switch, звычайна абмежаваныя імем інтэрфейса.

Вам патрэбен вузкі дазвол для фізічнага інтэрфейса і таго аднаго прызначэння, змешчаны перад скідваннем, пакуль палітыка па змаўчанні застаецца некранутай. Поўная паўза kill switch даказвае сутнасць, але таксама пакідае машыну адкрытай на ўвесь час, пакуль вы не ўспомніце ўключыць яго назад.

Праверце два напрамкі асобна. Запыт да адраса выключэння павінен атрымацца, а запыт да незвязанага сайта павінен па-ранейшаму выходзіць праз тунель. Калі абодва атрымліваюцца, але другі паведамляе хатні адрас, парадак правілаў брандмаўэра няправільны, а не маршрут.

DNS вырашае, да якога адраса звяртаецца браўзер

Калі імя развязваецца ўнутры тунеля, рэзалвер правайдэра можа адказаць іншым адрасам, чым лакальны. Тады ваш маршрут прымяняецца да адраса, да якога браўзер ніколі не звяртаецца, і старонка загружаецца праз тунель так, нібы нічога не змянілася. Гэтая памылка выглядае як зламанае выключэнне, нават калі табліца маршрутызацыі правільная.

Адпраўляйце запыты гэтага імя таксама праз лакальны рэзалвер, або цалкам прапусціце імёны і праверце адрас напрамую. Раздзяленне адраса з пакіданнем DNS унутры тунеля — самая распаўсюджаная напаўгатовая версія гэтай налады, і яе таксама найцяжэй заўважыць, бо сайт працягвае працаваць, проста не так, як вы хацелі.

Тое ж выключэнне на роўтары, аднойчы, для кожнай прылады

Калі тунель працуе на роўтары, маршрут хоста належыць табліцы палітычнай маршрутызацыі роўтара і паказвае на WAN-шлюз замест LAN-шлюза. Кожная прылада за ім атрымлівае выключэнне ў спадчыну, што важна для медыяпрыстасавання ці працоўнага ноўтбука, сеткавыя налады якога вы не можаце змяніць.

Пакіньце тунель выхадам па змаўчанні для ўсіх астатніх кліентаў, а потым праверце з кліенцкай машыны, а не з кансолі роўтара. Загрузіце сайт выключэння і другі сайт у адной сесіі браўзера і параўнайце адрасы выхаду; калі другі ўсё яшчэ паказвае тунель, табліца палітыкі робіць тое, што вы прасілі.

Запішыце адрас, дату і прычыну ў нататках роўтара. Выключэнне, пабудаванае вакол адраса, які пазней пераязджае, становіцца непаладай, якую ніхто не зможа растлумачыць праз год, і выпраўленне заўсёды выглядае як таямніца, пакуль хтосьці не знойдзе старую нататку.

Падобныя артыкулы