Один піднято, нуль з’єднується: що рахує цей рядок 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'
Запуск названого дочірнього — це навмисна дія з видимим результатом, і вона відокремлює “з’єднання простоює, бо ніхто не просив” від “з’єднання не може піднятися”. Політика пастки за запитом поводиться точно як перший випадок, тому прочитайте налаштування запуску з’єднання, перш ніж називати це несправністю.
Коли число справді хибне
Якщо визначення немає в завантаженому інвентарі, подивіться на завантаження конфігурації та на те, який екземпляр демона працює. Якщо воно завантажене, але ніколи не узгоджується, порівняйте пропозиції, контекст автентифікації та селектори з партнером, по одному дочірньому за раз. Змінюйте по одному елементу за спробу й записуйте ідентифікатор, який змінили. Відкотити пропозицію — дрібниця, коли знаєш яку; це здогад після трьох правок, які так і не розділили.
Спершу виправте неправильне прочитання. Більшість повідомлень про “зниклий” другий тунель закінчуються двома встановленими дочірніми під одним батьківським, і єдине, що колись було зламане, — це рядок зведення, якому люди вірили замість ієрархії.