Політика IPsec поглинає ваш локальний трафік: як це розпізнати
Селектор, що охоплює весь приватний діапазон, охоплює і ваш принтер. Прочитайте встановлену політику, а потім звузьте виняток там, де живе з’єднання.
Принтер на столі перестає відповідати в момент, коли піднімається тунель, і ніщо в конфігурації тунелю не згадує принтер. Зазвичай сталося те, що захищений діапазон було записано настільки широко, що він його включає, тому машина тепер намагається шифрувати трафік, який мав залишитися в локальному сегменті. Читання встановленої політики пояснює перехоплення; звуження її в потрібному місці зберігає захист віддаленого трафіку. Шлях від невдалого запиту до відповідної політики займає кілька хвилин.
Простежте потік, перш ніж змінювати селектор
Почніть із невдалого запиту й запишіть чотири значення: адресу джерела, яку використовує машина, точне призначення, маршрут, який обирає ядро, і політику, що відповідає цій парі.
Ці чотири факти вирішують, чи є перехоплення навмисним або випадковим. Призначення, що потрапляє до віддаленого селектора, захищене за задумом, навіть якщо задум був помилковим. Призначення поза ним, яке все одно перехоплюється, означає, що збігається щось інше, і зміна селектора не допоможе. Обидва випадки поширені, і їх розрізняє одна команда.
Зробіть це до того, як щось редагувати, бо цікавий випадок — це локальна підмережа, яка перекривається з приватним діапазоном, що його захищає з’єднання. Знайомі префікси на кшталт 192.168.0.0/16 трапляються в багатьох мережах, і селектор, написаний для одного з них, може тихо охопити ваш.
Три види локального, які поводяться по-різному
Призначення, призначене цьому хосту, призначення на тому самому каналі та призначення за іншим інтерфейсом — це три різні випадки. Ядро обробляє кожен із них по-різному, коли вирішує, чи потребує трафік захисту.
Трафік, який створює сам шлюз, теж не те саме, що трафік, пересланий від клієнта. Політика, що виглядає правильною для пересланого трафіку, може перехопити власну сесію керування шлюзу, і так адміністратор втрачає доступ, поки лагодить тунель.
Корисна звичка — назвати випадок уголос: цей пакет іде від мене, на мій канал чи через мене? Кожна відповідь указує на інше місце для звуження. Запис випадку також не дає наступній людині повторити ту саму роботу.
Коли захищений діапазон — це весь приватний простір, усі три випадки можуть потрапити до нього одразу, і симптомом стає машина, яка не дістає нічого, крім кінцевої точки тунелю.
Читайте встановлену політику, а не файл
Файли конфігурації описують намір; ядро зберігає політики, які справді збігаються. Покажіть обидва та вважайте розбіжність першою знахідкою.
Ці команди показують обраний маршрут до призначення та встановлені політики в кожному напрямку:
ip route get 192.168.50.20
ip xfrm policy list
sudo swanctl --list-connsМаршрут каже, який інтерфейс використовував би пакет. Список політик каже, чи буде потім до цього пакета застосовано шаблон, а список з’єднань показує, які селектори демон вважає встановленими. Якщо призначення з’являється у віддаленому селекторі, ви знайшли перехоплення, не вгадуючи.
Звузьте селектор або обійдіть призначення
Є два підтримувані виправлення, і вони відповідають на різні питання. Звуження селектора означає, що це з’єднання захищає лише менший діапазон, що правильно, коли ширший діапазон був помилкою. Додавання обходу означає, що це конкретне призначення ніколи не повинно захищатися, що правильно, коли захищений діапазон справді широкий, а одне призначення є винятком.
Обирайте перше, коли можете, бо менший селектор легше осмислити, і він видно у визначенні з’єднання. Обирайте друге, коли широкий діапазон навмисний, а виняток — окремий хост або підмережа, яку ви можете назвати.
Обидва рішення належать конфігурації, якій належить з’єднання. Правило часу виконання, додане вручну, зникає при наступному перепідключенні, і збій повертається в момент, коли ніхто вже не пам’ятає обхідного шляху.
Винятки, що переживають перевстановлення
Після зміни повторіть той самий нешкідливий запит і подивіться на ті самі лічильники. Локальне призначення має відповісти, а потрібне віддалене призначення має й далі показувати зашифрований трафік.
Ці дві перевірки підтверджують, що виняток вижив, а захист ні:
ip xfrm policy list | grep -c out
ping -c 3 192.168.50.20Потім навмисно від’єднайте й знову під’єднайте тунель і повторіть обидві. Виняток, який працює до перепідключення і не працює після, було застосовано не на тому рівні, і це найчастіший спосіб повернення цієї проблеми.