Адзін узняты, нуль злучаных: што лічыць гэты радок strongSwan
Стары загаловак лічыць асацыяцыі IKE, а не падсеткі ці даччыныя SA, таму спачатку чытайце загружаныя азначэнні і ўсталяваныя даччыныя элементы.
Прачытайце радок стану Security Associations (1 up, 0 connecting) і здаецца, што гэта справаздача пра адзін працоўны тунэль. Дзве падсеткі адначасова прапускаюць праз яго трафік, таму лік выглядае так, нібыта ілжэ. Ён не ілжэ; ён лічыць асацыяцыі IKE, а адна з іх можа змяшчаць некалькі даччыных. Прачытайце інвентары, перш чым чапаць прапанову або маршрут.
Чаму загаловак і трафік разыходзяцца
Стары вывад stroke называе сваю суму асацыяцыямі бяспекі і выводзіць яе з мэнэджара асацыяцый IKE. Кожная ўсталяваная асацыяцыя IKE дадае адну, незалежна ад таго, колькі даччыных CHILD SA знаходзіцца пад ёй. Адзін бацькоўскі IKEv2 звычайна нясе некалькі даччыных, па адным на пару селектараў трафіку, а дамоўленыя селектары даччынага могуць пакрываць больш за адзін адрас ці прэфікс. Таму колькасць адрасоў у вашай канфігурацыі не мае фіксаванай сувязі з лікам у загалоўку.
Сучасны вывад часам паказвае суму замест старога слова “up”, а дэман пад кіраваннем swanctl зусім не кіруецца старымі наладамі stroke. Не мяркуйце ні пра фармулёўку, ні пра правіла падліку паміж версіямі.
Параўнайце тры інвентары, перш чым нешта змяняць
Пачніце з таго, што загружана, потым з таго, што дамоўлена, потым з таго, што сапраўды пераносіць пакеты. Гэта тры розныя пытанні, і ў кожнага свая каманда.
swanctl --list-conns
swanctl --list-sas
Першы пералічвае азначэнні злучэнняў, якія дэман прыняў. Другі пералічвае ўсталяваныя асацыяцыі IKE з іх даччынымі, і менавіта там з’яўляецца сапраўдная іерархія. Азначэнне, якое ёсць у файле, але адсутнічае ў першым спісе, ніколі не было загружана, і ніякая колькасць паўтораў ініцыятара гэтага не выправіць. Калі вы замест гэтага запускаеце стары інтэрфейс, эквівалентная пара — ipsec statusall і той самы спіс swanctl, у залежнасці ад таго, які плагін валодае канфігурацыяй. Не змешвайце інструменты паміж двума дэманамі на адным хасте і не чакайце аднаго ўзгодненага адказу.
swanctl --list-sas --raw | head -40
ip -s xfrm state
Сырая форма трымае ідэнтыфікатары і селектары бачнымі для параўнання, а спіс стану ядра паказвае, што, на думку стэка, ён усталяваў. Калі дэман і ядро разыходзяцца, значыць дэман перазапусціўся вакол існуючага даччынага або аб’ект ядра быў выдалены з-пад яго.
Чытайце іерархію, а не суму
Ілюстрацыйны ўсталяваны бацькоўскі з двума даччынымі выглядае як адзін вузел з двума даччынымі пад ім, кожны з пазнакай свайго стану і рэжыму. Выгрузіце фактычны вывад і палічыце даччыныя самі замест чытання зводкі, якую хтосьці ўставіў з панэлі.
swanctl --list-sas
swanctl --list-conns --raw | grep -A4 'accounting'
Адзін бацькоўскі з двума ўсталяванымі даччынымі — гэта здаровы тунэль на дзве падсеткі. Адзін бацькоўскі з адным усталяваным і адным адсутным даччыным — іншая сітуацыя, і селектары адсутнага даччынага — гэта тое, што трэба параўнаць з прапановай далёкага боку. Падчас перазамены ключоў стары даччыны і яго замена могуць на кароткі час з’явіцца разам. Захоўвайце адзнаку часу разам са здымкам, бо падлік, зроблены пасярэдзіне перазамены, выглядае як дубліраванне, а пасля яе — як страта.
Загружана, усталявана і пераносіць трафік
Даччыны ў усталяваным стане мае дамоўленыя параметры і запіс у ядры. Але ён не абавязкова пераносіў пакет: селектары могуць быць вузейшыя за трафік, які вы чакаеце, а маршрут можа накіраваць гэты трафік у іншае месца раней, чым тунэль яго ўбачыць. Адпраўце паток, што адпавядае дамоўленым селектарам, з дазволенага хаста, потым чытайце лічыльнікі даччынага, а не загаловак. Лічыльнік, які застаецца на нулі, пакуль вы генерыруеце адпаведны трафік, паказвае на маршрутызацыю або палітыку, а не на IKE.
swanctl --initiate --child accounting
swanctl --list-sas --raw | grep -E 'bytes|packets'
Запуск названага даччынага — гэта наўмыснае дзеянне з бачным вынікам, і яно аддзяляе “злучэнне прастойвае, бо ніхто не прасіў” ад “злучэнне не можа ўзняцца”. Палітыка пасткі па патрабаванні паводзіць сябе дакладна як першы выпадак, таму прачытайце наладу запуску злучэння, перш чым называць гэта няспраўнасцю.
Калі лік сапраўды няправільны
Калі азначэння няма ў загружаным інвентары, паглядзіце на загрузку канфігурацыі і на тое, які асобнік дэмана працуе. Калі яно загружана, але ніколі не дамаўляецца, параўнайце прапановы, кантэкст аўтэнтыфікацыі і селектары з партнёрам, па адным даччыным за раз. Змяняйце па адным элеменце за спробу і запісвайце ідэнтыфікатар, які змянілі. Адкаціць прапанову — дробязь, калі ведаеш, якую; гэта здагадка пасля трох правак, якія ніколі не раздзялялі.
Спачатку выпраўце памылковае чытанне. Большасць паведамленняў пра “адсутны” другі тунэль сканчаюцца двума ўсталяванымі даччынымі пад адным бацькоўскім, і адзінае, што было зламана, — гэта радок зводкі, якому людзі давяралі замест іерархіі.