Зареден профил на strongSwan не е активен тунел
strongSwan зарежда дефиниции и след това договаря IKE и CHILD SA. Това, че профилът е зареден, не казва нищо за това дали има тунел или кой го стартира.
Изброяването на връзка в конфигурацията на strongSwan доказва само, че е заредена дефиниция. Това не означава, че партньорът е бил контактуван, че съществува IKE SA или че някакъв трафик е защитен. Демонът третира дефинициите и живите асоциации като отделни обекти, а разстоянието между тях е съзнателно решение при проектирането. Да знаете кой обект преглеждате превръща неясната повреда в конкретна следваща команда.
Зареждането не е свързване
Заредената връзка е твърдение за това какво може да се договори по-късно: адреси на партньора, идентификационни данни, предложения и селектори на трафик. Нищо в това твърдение не изисква демонът да е звънял на някого. Шлюзът може да чака другата страна, да инициира при стартиране или да чака подходящ трафик да го събуди. И трите са валидни и и трите изглеждат еднакво в конфигурационния файл, докато не прочетете политиката за стартиране.
Операторите си навличат проблеми, като четат списъка с дефиниции като списък със състояния. Профилът е там, значи тунелът се смята за активен, и следващият час отива за отстраняване на грешки в маршрути за асоциация, която никога не е била изградена.
Обратната грешка е също толкова честа. Липсващ профил изпраща хората да търсят мрежова повреда, когато конфигурацията никога не е била заредена. Назовете обекта и след това изпълнете командата, която го наблюдава.
Три обекта, три наблюдения
strongSwan държи заредена дефиниция, IKE SA и CHILD SA. Първата е конфигурация, втората е удостоверена контролна връзка, а третата е договорена защита за избрания трафик. Те дори имат отделни имена, така че профил с име hq може да притежава child с име hq-lan.
Таблицата свързва всеки слой с командата, която го показва. Прочетете реда, преди да прочетете журнала.
| Layer | What it contains | Command |
|---|---|---|
| Definition | Peer addresses, credentials, proposals, and traffic selectors | swanctl --list-conns |
| IKE SA | One authenticated control channel to the peer | swanctl --list-sas |
| CHILD SA | Keys and selectors for the traffic being protected | Child rows under the IKE SA |
Заявката за child първо изгражда неговия родителски IKE SA, когато няма такъв. Заявката само за IKE SA е друго извикване. Контролен канал, който се удостоверява правилно, не гарантира поискания child.
Тази разлика има значение при частична повреда. IKE SA може да е здрав, докато child се проваля заради несъответствие на селектор или предложение, което партньорът не приема. Двата обекта се провалят по различни причини, затова заслужават отделни наблюдения.
Изберете действието при стартиране съзнателно
В swanctl.conf start_action на child определя поведението след зареждане. Стойността по подразбиране none оставя дефиницията за ръчно иницииране или използване като responder. start я извиква, докато trap оставя политика, която договаря веднага щом се появи подходящ трафик.
Така че и „зареждането никога не стартира тунел“, и „зареждането винаги стартира един“ са грешни. Действието е част от профила и трябва да отговаря на ролята на партньора. Два шлюза, които и двата чакат другата страна, създават тишина, не тунел.
При trap трафикът трябва да отговаря на селекторите, така че несвързан ping няма да събуди нищо. При start адресът на партньора трябва да е използваем и двете страни трябва да се съгласят за удостоверяване и предложения. Никое от действията не замества проверката на тези условия.
Възстановяването е отделна политика
Стартирането не е keepalive. Откриването на мъртъв партньор, изричното затваряне от партньора, подмяната на ключове и рестартирането на процеса са различни събития от жизнения цикъл със собствени настройки. Конфигурирайте всяко от тях съзнателно, вместо да очаквате първоначалното стартиране да покрие всички.
Тунел, който се вдига при стартиране и умира час по-късно, е въпрос на възстановяване. Политиката за стартиране свърши своята работа и след това престана да има значение. Погледнете настройките за DPD и подмяна на ключове, преди да обвините първоначалното договаряне.
Подмяната на заредени дефиниции е отделна операция. Нестандартните политики за стартиране имат документирани обратни действия, а презареждането е оперативна промяна, а не предположение, че всяка асоциация е обновена на място. Извършвайте презареждането на етапи, където повторното свързване е приемливо. Пазете старата конфигурация, докато новата не бъде доказана.
Проверете какво съществува, преди да отстранявате грешки в маршрутизирането
Изпълнете трите наблюдения по ред: заредени дефиниции, активни IKE SA и child записи. Всеки отговор стеснява следващия въпрос. Пропуснете стъпка и накрая ще отстранявате грешки в слой, който никога не е бил изграден.
Започнете с това, което е заредено, и с това, което наистина е установено:
swanctl --list-conns
swanctl --list-sas
Ако child липсва, докато профилът е правилен, инициирайте го по име и наблюдавайте какво се случва. Изходът обикновено казва дали родителят се е вдигнал първи.
swanctl --initiate --child hq-lan
Активен CHILD SA не е финалната линия. Правилата за препращане, маршрутите и собствената авторизация на приложението все още трябва да съвпадат. Жизненият цикъл отговаря какво е договорено; той не може да реши кой може да използва услугата.