Як працуе IPsec на аснове маршрутаў з інтэрфейсам XFRM
Інтэрфейс XFRM дае IPsec на аснове маршрутаў прыладу, праз якую можна маршрутызаваць. if_id, асацыяцыі бяспекі за ім і знешні маршрут павінны ўзгаджацца.
IPsec на аснове маршрутаў перадае табліцы маршрутызацыі рашэнне, якое раней прымалі палітычныя селектары. У Linux тым кавалкам, што робіць гэта магчымым, з'яўляецца інтэрфейс XFRM: віртуальная прылада, трафік якой супастаўляецца са станам IPsec па ідэнтыфікатары інтэрфейса, а не па селектары. Стварэнне такой прылады — гэта адна каманда, і яна нічога не даказвае пра наяўнасць тунеля. Прылада — гэта кручок паміж маршрутызацыяй і палітыкай бяспекі, і абодва бакі гэтага кручка трэба наладзіць, перш чым нешта будзе абаронена.
Што такое прылада і чым яна не з'яўляецца
Інтэрфейс XFRM — гэта ручка маршрутызацыі. Пакеты, накіраваныя ў яго, супастаўляюцца з палітыкамі XFRM, якія спасылаюцца на той жа ідэнтыфікатар інтэрфейса, і калі палітыка і стан існуюць, яны інкапсулююцца. Без іх інтэрфейс існуе, лічыльнікі стаяць, а трафік ідзе ў нікуды.
Гэта першае дыягнастычнае раздзяленне. Маршрут у прыладу — гэта факт маршрутызацыі, усталяваны стан — гэта факт бяспекі, а лічыльнік, што расце на прыладзе, — ні тым, ні другім. Калі кажуць, што тунель узняты, бо інтэрфейс паказвае UP, то апісваюць сцягі сувязі віртуальнай прылады, у якой няма ўласнага партнёра. Сцяг азначае, што прылада створана і ўключана, і нічога больш.
Яшчэ адна мяжа: ідэнтыфікатар інтэрфейса — гэта не імя. Дзве прылады з падобнымі імёнамі і рознымі ідэнтыфікатарамі не дзеляць стан, а злучэнне, наладжанае з няправільным ідэнтыфікатарам, усталёўвае стан, які не выкарыстае ніводзін маршрут.
Пабудуйце адну ў правільным парадку
Пачніце са знешняй прылады і ліку, які вы таксама ўнясеце ў канфігурацыю дэмана. Прыклад выкарыстоўвае eth0 як знешні інтэрфейс і 42 як ідэнтыфікатар — адрасы, якія трэба замяніць сваімі.
Узніміце прыладу, затым пацвердзіце ідэнтыфікатар, які запісала ядро, перш чым кранаць канфігурацыю VPN:
sudo ip link add xfrm0 type xfrm dev eth0 if_id 42
sudo ip link set xfrm0 up
ip -d link show xfrm0 | grep -o 'if_id [0-9]*'Цяпер наладзьце злучэнне ў strongSwan з тым жа ідэнтыфікатарам, бо дэман павінен усталяваць палітыкі і станы, што на яго спасылаюцца. Задайце лакальны і аддалены селектары трафіку на дыяпазон, які вы збіраецеся маршрутызаваць, затым накіруйце гэты дыяпазон у прыладу. Канфігурацыя дэмана і табліца маршрутызацыі павінны ўзгаджацца і па ідэнтыфікатары, і па прызначэннях, і ні адно не дае другога.
Трымайце IKE і ESP па-за маршрутам тунеля
Маршрут па змаўчанні, накіраваны ў прыладу XFRM, перахоплівае інкапсуляваныя пакеты, а таксама трафік, які яны нясуць. Вынік — пятля: шлюз спрабуе адправіць свой ESP праз тунель, які ESP павінен пабудаваць.
Выратаванне — больш канкрэтны маршрут для знешняга адраса партнёра праз фізічны інтэрфейс, які перамагае маршрут па змаўчанні, бо супастаўляе больш бітаў. Маршрутызацыя на аснове метак робіць тое ж, калі некалькі тунеляў дзеляць адну табліцу, і strongSwan дакументуе абодва падыходы для разгортванняў на аснове маршрутаў.
Што б вы ні выбралі, праверце, што знешні пакет выходзіць неінкапсуляваным. Хуткая праверка — пінг знешняга адраса партнёра пасля ўзняцця тунеля; калі гэта не атрымліваецца, пакуль інтэрфейс узняты, падазравайце перахоп, а не даступнасць. Тое ж разважанне тычыцца порта IKE, бо ўласны UDP-трафік дэмана не павінен накіроўвацца ў прыладу, якую ён спрабуе ўсталяваць.
Праверце лічыльнікі ў двух месцах, перш чым вінаваціць шыфраванне
Лічыльнікі інтэрфейса і лічыльнікі стану вымяраюць розныя этапы. Пакеты, накіраваныя ў прыладу, павялічваюць яе лічыльнік, нават калі ніводзін стан не супадае, а лічыльнікі стану рухаюцца толькі для трафіку, які сапраўды быў інкапсуляваны.
Прачытайце абодва, затым прачытайце погляд дэмана на даччыную асацыяцыю:
ip -s link show xfrm0
sudo ip xfrm state list | grep -E 'src|proto|mode'
sudo swanctl --list-sasРост лічыльнікаў прылады пры пустым выхадзе стану азначае, што маршрутызацыя працуе, а палітыка не супадае; звычайна гэта памылка ідэнтыфікатара або селектара. Рост лічыльнікаў стану, калі аддалены бок нічога не паведамляе, азначае, што пакеты выходзяць, але не даходзяць ці не праходзяць аўтэнтыфікацыю, што паказвае на шлях або канфігурацыю партнёра. Пазначанае даччынае злучэнне з нулявым трафікам — гэта праблема селектара на адным канцы, а не зламаны шыфр.
Вырашыце, хто ўсталёўвае маршруты
Два ўладальнікі адной табліцы маршрутызацыі — звычайная крыніца дрыжэння. Калі дэман усталёўвае маршруты аўтаматычна, ваш сеткавы менеджар не павінен таксама ўсталёўваць маршрут па змаўчанні праз тую ж прыладу, а ручны маршрут, дададзены стартавым скрыптам, будзе выдалены наступным разам, калі дэман пераканфігуруецца.
Выберыце аднаго ўладальніка і запішыце гэта. Калі маршрутамі валодае дэман, трымайце стартавы скрыпт па-за табліцай і дайце вызначэнню злучэння апісаць селектары трафіку. Калі імі валодае сеткавы менеджар, адключыце аўтаматычную ўсталёўку і прызнайце, што дэман не адрамантуе адсутны маршрут пры паўторным падключэнні.
Правілы перасылкі і брандмаўэра — асобнае рашэнне паверх гэтага, бо шлюзу, які прапускае трафік іншых хастоў, патрэбна і тое, і другое. IPsec на аснове маршрутаў робіць такі трафік простым для выражэння звычайнымі сродкамі маршрутызацыі; ён не робіць палітычны пласт неабавязковым.