Вы падключаеце тунель, выконваеце ip route, і зыходны шлюз па змаўчанні ўсё яшчэ на месцы. Першая думка: кліент не пераняў маршрут, таму вы выдаляеце маршрут па змаўчанні ўручную і цалкам губляеце злучэнне. Гэты запіс павінен застацца. З redirect-gateway def1 OpenVPN усталёўвае два больш канкрэтныя маршруты, якія стаяць вышэй за звычайны маршрут па змаўчанні, замест таго каб замяніць яго. Стары шлюз застаецца і перастае несці трафік, які вы тэсціравалі.

Што насамрэч робіць def1

Сцяг дадае 0.0.0.0/1 і 128.0.0.0/1, абодва накіраваныя ў тунель. 0.0.0.0/1 ахоплівае ўсе адрасы, у якіх першы актэт ад 0 да 127, а 128.0.0.0/1 — ад 128 да 255, таму ў кожнага пункта прызначэння IPv4 ёсць супадзенне, больш канкрэтнае за стары маршрут па змаўчанні. Які маршрут пераможа, вызначае даўжыня прэфікса, а не метрыка.

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

Чаму /1, а не /0

Маршрутызацыя выбірае найдаўжэйшы адпаведны прэфікс, а не найніжэйшую метрыку, таму /1 перамагае /0 незалежна ад таго, што кажа метрыка маршруту па змаўчанні. Абедзве паловы існуюць таму, што адзін /1 пакрывае толькі палову прасторы; калі ёсць толькі 0.0.0.0/1, усё ад 128.0.0.0 і вышэй ідзе па старым маршруце па змаўчанні, што дае заблытаны сімптом: адныя сайты працуюць, іншыя не.

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

Прачытайце рэальную табліцу маршрутызацыі

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

default via 192.168.50.1 dev wlan0
0.0.0.0/1 via 10.8.0.1 dev tun0
128.0.0.0/1 via 10.8.0.1 dev tun0

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

Праверце, які маршрут насамрэч бярэ пакет

Больш канкрэтныя маршруты ўсё яшчэ могуць перамагчы: маршрут для прыватнага дыяпазону, лакальнай падсеткі або ўласнага адраса VPN-сервера даўжэйшы за /1. Тунелю патрэбны знешні шлях да свайго сервера, і адпраўка гэтага злучэння назад у тунель адразу яго зламае. У Linux спытайце ядро замест таго, каб чытаць табліцу на вока: ip route get з патрэбным вам пунктам прызначэння друкуе выбраны маршрут, інтэрфейс і крыніцу. Калі наладжана маршрутызацыя па палітыках, праверце і правілы, бо правіла можа выбраць іншую табліцу раней, чым звернуцца да асноўнай.

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

Што def1 не пакрывае

Два запісы IPv4 нічога не кажуць пра IPv6: хост з падключэннем IPv6 працягвае выкарыстоўваць свой маршрут па змаўчанні, пакуль нешта не перанакіруе гэтую сям’ю асобна, і менавіта таму ў двухстэкавай сетцы частка трафіку нібы абыходзіць тунель. Іншыя кліенты і менеджэры сетак рэалізуюць поўную маршрутызацыю тунеля па-рознаму, і іх табліцы не супадуць. Апісаныя тут паводзіны def1 належаць дакументаванаму сцягу OpenVPN, а не кожнаму VPN на машыне.

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

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