Маршрутны і палітычны VPN паміж пляцоўкамі: у чым розніца
Палітычны IPsec выбірае трафік селектарам; маршрутны адпраўляе яго праз інтэрфейс тунеля. Абодва ўсё яшчэ патрабуюць правілаў фэйрвола і зваротнага маршруту.
Абодва праекты абараняюць той жа трафік той жа машынай IPsec, і розніца ў тым, што вырашае, які пакет уваходзіць у тунель. У палітычным злучэнні гэтую працу робяць узгодненыя селектары трафіку; у маршрутным — маршрут, які паказвае на інтэрфейс тунеля. Блытаніна паміж імі дае знаёмую тэму падтрымкі, дзе тунель паведамляе, што ўсталяваны, а праграма ні да чаго не даходзіць. Розніца найбольш важная, калі вы дадаяце сетку, запускаеце пратакол маршрутызацыі або адладжваеце шлях, які ціха выходзіць праз няправільны выхад.
Два спосабы вырашыць, што трапляе ў тунель
Палітычны VPN будуе палітыку бяспекі, якая супастаўляе прэфіксы крыніцы і прызначэння, а затым шыфруе ўсё, што падыходзіць. Партнёр павінен узгадніць сумяшчальныя селектары, таму эфектыўны ахоп у выніку становіцца перасячэннем таго, што прапанавалі абодва бакі. Нішто па-за гэтым перасячэннем не абаронена, што б ні казала табліца маршрутызацыі.
Маршрутны VPN стварае інтэрфейс, які прадстаўляе тунель, і дазваляе табліцы маршрутызацыі накіроўваць трафік у яго. Дэман IKE па-ранейшаму ўсталёўвае стан і палітыку для кожнага інтэрфейса; гэта менавіта тая дэталь, якую прапускаюць, калі вырашаюць, што маршруты замянілі шыфраванне. Абодва праекты шыфруюць з дапамогай IPsec; адрозніваецца толькі механізм выбару.
Чытайце параўнанне ніжэй як набор сігнатуры збояў, а не як табліцу вынікаў, бо ні адзін слупок не перамагае сам па сабе.
| Aspect | Policy-based | Route-based |
|---|---|---|
| What selects traffic | Negotiated selectors | A route into the tunnel interface |
| Adding a network | Edit selectors on both peers | Add a route, widen the selector once |
| Dynamic routing | Awkward to run over the tunnel | Runs over the interface directly |
| Typical failure | Tunnel up, host outside the selector | Tunnel 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
Трымайце шлях кіравання, які не залежыць ад тунеля, пакуль працуеце. Адкат прасцей, калі ўласны доступ шлюза не едзе на злучэнні, якое вы адладжваеце.