Чаму маршрут да вузла /32 пакідае канчатковы пункт VPN дасяжным
Маршрут да вузла выбірае адзін адрас, а не падсетку. Ён можа пакінуць канчатковы пункт тунеля дасяжным або замацаваць адзін рэсурс, але састарэе, калі адрасы змяняюцца.
Вы адкрываеце табліцу маршрутызацыі пасля падключэння і бачыце адзін адрас, які ідзе праз тунель, тады як падсетка вакол яго па-ранейшаму ідзе на лакальны шлюз. Гэты запіс — маршрут да вузла: адзін адрас, які супадае з прэфіксам з усіх адзінак. Гэта важна, бо рашэнні маршрутызацыі выкарыстоўваюць найдаўжэйшы супадальны прэфікс, таму /32 можа пераадолець /24 або маршрут па змаўчанні, не змяняючы ні аднаго з іх. Ці гэта асцярожнае выключэнне, ці будучы збой, залежыць ад таго, які адрас ён называе і хто яго падтрымлівае.
Адзін адрас, адзін запіс у табліцы
Маршрут да вузла IPv4 мае прэфікс /32, а маршрут да вузла IPv6 — /128, што значыць, што запіс можа супасці роўна з адным адрасам прызначэння. Нішто іншае ў табліцы не рухаецца: падсетка, якая ахоплівае, і маршрут па змаўчанні застаюцца там, дзе былі. Вузкі запіс перамагае для гэтага адраса, таму што яго прэфікс даўжэйшы, а не таму што ён быў дададзены пазней.
Гэтая ўласцівасць робіць маршрут да вузла добрым выключэннем і дрэннай звычкай. Два запісы /32, якія называюць галоўную ўваходную кропку сэрвісу, не ахопліваюць яго другі адрас, яго адрас IPv6 або адрас, на які ён пераедзе ў наступным месяцы. Табліца, поўная непатлумачаных запісаў з адным адрасам, звычайна азначае, што нехта ўвесь час латаў рашэнне для падсеткі замест таго каб прыняць яго. Спачатку прачытайце даўжыню прэфікса, затым спытайце, што запіс павінен абараняць.
Чытайце запіс ад кліента вонкі
Пачніце з машыны, дзе ёсць праблема, бо той жа адрас можа маршрутызавацца па-рознаму на ноўтбуку і на шлюзе перад ім. Спытайце ядро, які шлях яно выбера для дакладнага адраса, які выкарыстоўвае праграма, замест таго каб чытаць табліцу зверху. Адказ уключае інтэрфейс і наступны крок, якія разам і ёсць рашэнне.
ip route get 203.0.113.25
ip -6 route get 2001:db8:4::25
ip route show | grep -F 203.0.113.25
Find-NetRoute -RemoteIPAddress 203.0.113.25
Паўтарыце запыт для сямейства адрасоў, якое праграма фактычна выбірае, бо кліент можа аддаць перавагу IPv6 і ціха абыйсці выключэнне IPv4. Параўнайце вынік да і пасля ўзняцця тунеля і захавайце абодва вывады. Гэта параўнанне паказвае, ці кліент дадаў запіс у момант падключэння, ці ён ужо быў там.
Пастаянны запіс і запіс часу выканання выходзяць з ладу па-рознаму. Запіс часу выканання знікае разам з сеансам, а пастаянны перажывае перазагрузку і працягвае адпраўляць трафік на шлюз, якога больш няма.
Выключэнне для канчатковага пункта і пастка рэкурсіі
Кліенты VPN звычайна ўсталёўваюць маршрут да вузла на знешні адрас сервера праз зыходны шлюз, перш чым перанакіраваць маршрут па змаўчанні. Без гэтага запісу зашыфраваныя пакеты былі б адпраўлены ў тунель, які яны спрабуюць пабудаваць, і злучэнне зацыклілася б, пакуль не скончыўся час чакання.
Пастка з’яўляецца, калі прынятыя падсеткі тунеля выпадкова ўключаюць гэты адрас канчатковага пункта або калі другі профіль дадае шырэйшы маршрут пазней. Тады запіс канчатковага пункта прайграе даўжэйшаму прэфіксу, і сеанс разбураецца, як толькі пачынае прапускаць трафік. Запісаць адрас канчатковага пункта побач з прынятымі падсеткамі — самы танны спосаб заўважыць канфлікт раней за карыстальнікаў. Гэта таксама тлумачыць, чаму адзін і той жа профіль працуе з адной сеткі і не працуе з іншай.
Праверце шлях, які праграма рэальна выкарыстоўвае
Паспяховы ping на імя хоста — слабы доказ, калі праграма падключаецца да іншага адраса або іншага сямейства. Праверце дакладную камбінацыю адраса, сямейства, порта і інтэрфейса з машыны, якая запускае кліент.
ip route get 203.0.113.25
sudo nft list ruleset | grep -A 4 'chain output'
curl -sS --max-time 8 -o /dev/null -w '%{remote_ip}
' https://app.example.net
Калі шлях няправільны, вырашыце, ці патрэба — гэта сетка, ці адзін адрас, перш чым нешта змяняць. Патрэба ў адным адрасе апраўдвае маршрут да вузла з каментаром і ўладальнікам; сэрвіс з адрасамі, якія змяняюцца, патрабуе маршрутызацыі на аснове дамена або сумленнага рашэння для падсеткі.
Выдаляйце запісы, якія больш не адпавядаюць рэальнаму пункту прызначэння, і адзначайце тыя, што пакідаеце. Непатлумачаны /32 праз тры месяцы неадрозны ад памылкі, і наступны чалавек выдаліць яго, не ведаючы, што ад яго залежала.