Загружаны профіль 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 — не фінішная лінія. Правілы перасылкі, маршруты і ўласныя дазволы праграмы ўсё яшчэ мусяць супасці. Жыццёвы цыкл адказвае на пытанне, што ўзгоднена; ён не можа вырашыць, каму можна карыстацца сэрвісам.