Што палітычная маршрутызацыя мяняе ў VPN-трафіку, а што не
Правілы выбіраюць, да якой табліцы звяртацца, таму маршрут па змаўчанні ў асноўнай табліцы часта нічога не тлумачыць. Чытайце прыярытэты, пазнакі і крыніцы разам, перш чым дадаваць правіла.
Палітычная маршрутызацыя адказвае на іншае пытанне, чым тое, якое ставяць большасць нататак па выпраўленні непаладак. Асноўная табліца кажа, куды ідзе прызначэнне; правілы палітыкі кажуць, да якой табліцы звяртацца наогул, і яны могуць вырашаць гэта па адрасе крыніцы, пазнацы пакета, або па інтэрфейсе, на які прыйшоў пакет. Калі тунэль паводзіць сябе непаслядоўна, набор правіл часта з'яўляецца прычынай, а табліца маршрутызацыі часта не.
Правілы выбіраюць табліцу, затым табліца выбірае маршрут
Кожнае правіла мае прыярытэт, умову супадзення і мэтавую табліцу. Ядро праходзіць правілы ў парадку прыярытэту і спыняецца на першым супадзенні, затым выконвае звычайны пошук найдаўжэйшага прэфікса ў гэтай табліцы. Правіла, якое паказвае на пустую табліцу, правальваецца да таго, што выбера наступнае правіла, і менавіта так старанна напісанае правіла можа выглядаць так, быццам яно нічога не робіць.
Вось чаму выгрузка асноўнай табліцы рэдка тлумачыць працаздольны кліент VPN. Кліенты звычайна ўстаўляюць правілы з нізкімі нумарамі прыярытэту, задоўга да правіла па змаўчанні асноўнай табліцы, таму пакет ніколі не дасягае маршруту, на які вы глядзелі. Паніжэнне метрыкі ў асноўнай табліцы нічога не мяняе для трафіку, які ўжо быў перанакіраваны.
Правіла таксама можа наўмысна зрабіць прэфікс чорнай дзіркай або недасягальным. Некаторыя кліенты дадаюць такое правіла як выключальнік, і тады скід выглядае як зламаны тунэль, а не як наладжаны.
Чытайце набор правіл як паслядоўнасць, а не як спіс
Вывядзіце правілы з іх прыярытэтамі і табліцамі, на якія яны спасылаюцца, затым вывядзіце кожную табліцу, якая мае маршрут па змаўчанні або маршрут тунэля. Парадак — гэта частка, якая мае значэнне, і менавіта яе здымак экрана звычайна апускае:
ip rule show ip route show table all | sed -n '1,60p' ip route get 198.51.100.20 from 10.8.0.2 ip route get 198.51.100.20 from 10.8.0.2 mark 0x1
Апошнія дзве каманды — тыя, што ператвараюць тэорыю ў назіранне, бо яны пытаюць што зрабіла б ядро для гэтай крыніцы і гэтай пазнакі. Калі адказ мяняецца, калі мяняецца пазнака, дзейнічае правіла на аснове пазнакі, і любы тэст, які апускае пазнаку, правярае іншы пакет. Знешняе злучэнне заслугоўвае ўласнага правіла. Тунэль, які маршрутызуе ўвесь трафік праз сябе, павінен выключаць адрас канчатковай кропкі, да якой ён падключаецца, інакш зашыфраваныя пакеты адпраўляюцца назад у тунэль, які яны толькі што пакінулі. Большасць кліентаў устаўляюць гэта выключэнне аўтаматычна, і ўручную адрэдагаваны набор правіл — гэта месца, дзе яно знікае.
Пазнакі і сокеты: два спосабы, якімі кліенты раздзяляюць трафік
Некаторыя кліенты пазначаюць пакеты ў фаеры і дадаюць правіла, якое супадае з пазнакай. Іншыя выкарыстоўваюць маршрутызацыю на ўзроўні сокета, усталёўваючы маршрут на сокеце перад падключэннем. Першае бачна ў ip rule; другое не, і яно не з'явіцца ў агульным пошуку.
Калі тэставая праграма паводзіць сябе інакш, чым праграма, якую яна павінна прадстаўляць, праверце, ці ставіць праграма пазнаку або прывязваецца да прылады. Гэтая розніца перастае быць загадкай, як толькі механізм названы, і яна тлумачыць, чаму curl з абалонкі і ўкладка браўзера могуць ісці рознымі шляхамі на адной машыне. Абодзве тэхнікі — гэта палітычная маршрутызацыя ў шырокім сэнсе: яны выбіраюць шлях з дапамогай чагосьці іншага, чым пункт прызначэння. Ні адна з іх не аўтарызуе трафік, і ні адна не замяняе правілы фаера або ўліковыя даныя, якіх чакае партнёр.
Адсачыце ўласніка, перш чым дадаць яшчэ адно правіла
Правілы ўсталёўвае нешта. Кліент VPN, сеткавы менеджэр і ўручную напісаны скрыпт могуць кожны дадаваць правілы пры запуску, а логіка перападключэння можа пакінуць папярэдні набор. Два састарэлыя правілы ад папярэдняга профілю будуць кіраваць трафікам яшчэ доўга пасля выдалення профілю.
Знайдзіце, які працэс валодае правілам, па яго прыярытэце і форме, і праверце, ці перапісвае гэты ўласнік набор пры кожным злучэнні. Калі перапісвае, уручную дададзенае сёння правіла знікне заўтра, і выпраўленне належыць канфігурацыі кліента, а не файлу гісторыі абалонкі. Ачыстка ўсяго набору правіл для тэсту — спакуслівы кароткі шлях з прадказальным коштам: яна таксама выдаляе правілы, патрэбныя кліенту, каб яго ўласны тунэль працаваў. Выдаляйце па адным правіле або тэстуйце на машыне, якую можна перазагрузіць.
Дакажыце ахоп двума патокамі, а не адным
Выпраўленне правяраецца толькі патокам, які павінен быць закрануты, і патокам, які не павінен. Выберыце прызначэнне, якое палітыка накіроўвае ў тунэль, і тое, якое павінна застацца звонку, затым параўнайце пошукі і захопы для абодвух:
ip route get 198.51.100.20 from 192.0.2.44 ip route get 198.51.100.21 from 192.0.2.44 tcpdump -ni any host 198.51.100.21 and port 443
Калі два пошукі вяртаюць розныя інтэрфейсы, правіла нешта робіць. Калі яны вяртаюць адзін і той жа інтэрфейс, правіла супадае шырэй, чым задумана, і гэта той збой, які ціха накіроўвае ўсю падсетку праз тунэль, прызначаны для адной праграмы.
Запішыце прыярытэты правіл і службу-ўласніка ў заяўку разам з двума тэставымі адрасамі. Тады наступны чалавек атрымае паўтаральную пару замест апісання сімптома і зможа за хвіліну сказаць, ці палітычная маршрутызацыя ўсё яшчэ дзейнічае.