Дъщерната SA на IPsec е вдигната, но броячите на пакети остават нула
Нулеви броячи на пакети при инсталирана дъщерна SA обикновено означават, че нищо не е съвпаднало с нея. Проследете един фиксиран поток през броячи, маршрут, селектори и произход.
Вдигнахте тунела, таймерът за преподписване тече, а в двете посоки все още се чете нула пакета. Тази двойка числа не казва, че партньорът е отхвърлил тунела ви: инсталирана CHILD SA с бездейни броячи е нормалното състояние на асоциация, с която още нищо не е съвпаднало. Задачата е да докажете, че пакет е трябвало да съвпадне, и после да намерите точката, в която той е напуснал пътя, описан от селекторите. Направете го веднъж, по ред, и дръжте заявката идентична между пусканията.
Какво всъщност доказва нулевият брояч
CHILD SA е двойка селектори плюс ключовете и SPI, които шифроват трафика, попадащ в тези диапазони. Инсталирането ѝ означава само, че двете страни са се съгласили за тези диапазони и за производните ключове; ядрото ще я пази с часове без нито един пристигнал пакет. Затова въпросът никога не е дали тунелът съществува, а дали някой пакет от вашия тест е попаднал в диапазоните, договорени от двете страни. Ако не е, броячите остават нула и асоциацията изтича неизползвана в края на живота си.
Това разграничение променя какво проверявате първо. Отхвърлена оферта, провал на удостоверяването или умираща IKE SA се появяват в журнала или в списъка със SA, а не като тиха нула. Тунел, който договаря чисто и после стои бездейно, сочи вместо това към съпоставянето, маршрутизацията или произхода на тестовия трафик.
Изпратете поток, който можете да опишете, преди да го изпратите
Изберете дестинация в защитената подмрежа и отворете нова връзка към нея; страница, която сте заредили преди час, може да бъде сервирана от кеша, а кешираният отговор никога не докосва тунела. След това запишете четири стойности, докато заявката е още хипотетична: адреса на източника, който приложението ще завърже, дестинацията, семейството адреси и името или двойката селектори на дъщерната асоциация, която наблюдавате. Този запис е това, което превръща плоския брояч в проверимо твърдение.
Адресът на източника е стойността, която хората пропускат, и точно тя най-често проваля теста. Лаптоп с кабелен адрес, Wi-Fi адрес и адрес на тунела може да завърже всеки от тях в зависимост от търсенето на маршрут и само един може да е в договорения диапазон. Използвайте инструмент, който ви позволява да фиксирате източника, например ping -I 10.1.0.5 10.2.0.9 или curl --interface 10.1.0.5, за да не може пакетът тихо да избере друг адрес. Когато фиксираното пускане мести броячите, а нефиксираното не, сте открили проблем с маршрутизацията, а не с IPsec.
Кои числа да четете и къде живеят
На Linux ip -s xfrm state отпечатва всяка асоциация с ред lifetime current:, чиято обща сума байтове и пакети принадлежи само на тази SA, последван от ред stats: за броячи на повторения и грешки. При партньор със strongSwan swanctl --list-sas извежда един ред in и един ред out за всяка инсталирана дъщерна асоциация, всеки завършващ с брой байтове и брой пакети; по-старите инструменти stroke наричат същата двойка bytes_i и bytes_o. Четете двете посоки отделно, защото посоката, останала плоска, е находката. Събирането им скрива точно асиметрията, която търсите.
И двата изгледа са за отделна асоциация, така че преподписването инсталира нова двойка SPI и базовата ви линия се връща на нула, без нищо да е счупено. Запишете SPI, който наблюдавате, преди таймерът за преподписване да задейства, иначе ще сравнявате нова SA със старо число. Ако изходящото расте, а входящото остава плоско, селекторът е съвпаднал и отговорът така и не се е върнал, което премества разследването към препращането на партньора и собствената му политика. Документацията за конфигуриране на IKEv2 на strongSwan покрива жизнения цикъл на дъщерната SA и времената на преподписване зад тези числа.
Точката на наблюдение е отделна променлива от произхода на пакета. Хардуерното разтоварване може да увеличи броячите на асоциацията, докато софтуерен запис на интерфейса не показва нищо, защото разтоварените пакети прескачат куката, върху която стои записът, и входящата посока може да се разминава по същия начин. Когато двете не се съгласят, използвайте броячите, за да отговорите дали нещо е съвпаднало, и записа, за да отговорите как е изглеждал пакетът.
Маршрут, селектори и къде се е родил пакетът
Сравнете три неща едно до друго: маршрута, който ядрото избира за вашата дестинация, политиката, която насочва трафика в тунела, и двойката селектори, договорена от дъщерната асоциация. ip route get 10.2.0.9 from 10.1.0.5 посочва интерфейса и източника, които ядрото би използвало, а те често не са двойката, която сте предположили. ip xfrm policy показва локално инсталираните шаблони и селектори, докато swanctl --list-sas показва за какво се е съгласил партньорът. Търсене, което изпраща пакета през физическия интерфейс, изобщо не стига до политиката, така че броячите не могат да мръднат.
Несъответствията имат няколко разновидности, които от гледна точка на брояча изглеждат еднакво. Дестинация IPv6 извън селектор IPv4, адрес на източника от грешната подмрежа и политика, по-тясна от дъщерната асоциация, дават същата нула. Първо поправете най-тясната причина, защото разширяването на селектор само за да преместите число променя това, което тунелът защитава.
После идва произходът на пакета — капанът, който шлюзът поставя на собствения си оператор. Трафикът, който шлюзът генерира сам, се съпоставя с изходната политика, докато пакет, който той препраща за клиент, се съпоставя с политиката за препращане, така че ping от самата машина може да успее по път, по който не минава нито един клиент.
Една обратима промяна и доклад, който издържа на преглед
Променете един елемент, повторете идентичната заявка и прочетете същите броячи. Изчистването на всички правила на защитната стена или замяната на всички селектори наведнъж ще премести число и ще унищожи доказателството, което ви е казало защо. Ако второто пускане все още показва нула, вие сте изключили една хипотеза, вместо да пропилеете следобеда.
Запишете находката във вид, който друг може да възпроизведе: име на дъщерната асоциация, приети диапазони, източникът, който сте фиксирали, дестинацията, която сте тествали, посоката, останала на нула, и SPI, който сте чели. Това изречение разделя асоциация, която никой не е използвал, от отдалечено приложение, което е получило трафика и го е отказало. Върнете промяната, когато тя не е преместила броячите, и запазете записа; следващият човек започва там, където вие сте спрели. Нищо в тунела не е трябвало да се преустройва за всичко това и точно това е смисълът да проверявате съпоставянето, преди да пипате конфигурацията.