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

Два спосабы вырашыць, што трапляе ў тунель

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

Маршрутны VPN стварае інтэрфейс, які прадстаўляе тунель, і дазваляе табліцы маршрутызацыі накіроўваць трафік у яго. Дэман IKE па-ранейшаму ўсталёўвае стан і палітыку для кожнага інтэрфейса; гэта менавіта тая дэталь, якую прапускаюць, калі вырашаюць, што маршруты замянілі шыфраванне. Абодва праекты шыфруюць з дапамогай IPsec; адрозніваецца толькі механізм выбару.

Чытайце параўнанне ніжэй як набор сігнатуры збояў, а не як табліцу вынікаў, бо ні адзін слупок не перамагае сам па сабе.

AspectPolicy-basedRoute-based
What selects trafficNegotiated selectorsA route into the tunnel interface
Adding a networkEdit selectors on both peersAdd a route, widen the selector once
Dynamic routingAwkward to run over the tunnelRuns over the interface directly
Typical failureTunnel up, host outside the selectorTunnel up, no route or wrong source

Палітычны: селектар — гэта дамова

Селектары ўзгадняюцца, а не проста наладжваюцца. Прапануйце 10.10.0.0/16 з аднаго боку і 10.10.1.0/24 з другога, і асацыяцыя ахопіць тое, на чым сышліся перамовы, а ўсе астатнія хасты застануцца па-за ёй.

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

sudo ip xfrm state
sudo ip xfrm policy
sudo swanctl --list-sas

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

Маршрутны: інтэрфейс — гэта дамова

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

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

sudo ip link add xfrm0 type xfrm dev eth0 if_id 42
sudo ip route add 10.20.0.0/16 dev xfrm0
ip -s link show xfrm0
ip route get 10.20.5.10

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

Дзе гэтыя два праекты сапраўды разыходзяцца

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

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

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

Пераход без страты зваротнага шляху

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

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

ip route get 10.20.5.10
sudo tcpdump -ni any host 10.20.5.10 and icmp
sudo swanctl --list-conns

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

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