Обидва майданчики використовують однаковий приватний діапазон, і тунель піднімається, хоча нічого корисного через нього не проходить. Трансляція — звичайна відповідь, і це справжня відповідь: показ іншого діапазону далекій стороні може вирішити перекриття або зворотний шлях, який інша мережа не вміє маршрутизувати. Пропущена частина — трансляція змінює адреси, які бачить кожне наступне рішення. Ставтеся до цього як до документованого проєктного рішення з письмовим зіставленням, а не як до правила, яке додають, доки не пройде ping.

Вирішіть, яка адреса переписується

Трансляція джерела змінює те, що віддалена служба та її журнали бачать як клієнта, тому хост філії після прибуття стає адресою шлюзу. Трансляція призначення або префікса натомість подає альтернативну адресу для віддаленого ресурсу. Деяким розгортанням потрібна узгоджена трансляція з обох боків, щоб розділити дві інакше однакові мережі, і саме в цьому поєднанні починається більшість плутанини.

Запишіть джерело до трансляції, призначення так, як його називає застосунок, і пару адрес, за якою зіставляє кожен шлюз. Трьох стовпців достатньо, і третій стовпець — той, який люди пропускають.

Порядок селекторів теж важливий. Вибір і трансляція політики IPsec відбуваються на визначених етапах, тому селектор, написаний для адрес до трансляції, може ніколи не збігтися з пакетом на етапі, який ви припустили. Перевіряйте встановлену політику, а не ту, яку збиралися встановити, бо вони розходяться саме тоді, коли правило приймає один компонент, а інший його ігнорує:

ip xfrm policy show
ip xfrm state show
nft list ruleset | grep -A4 nat

Стежте за корисним навантаженням і зворотним шляхом

Сервер, який реєструє трансльоване джерело замість окремого хоста філії, зламає будь-яке правило чи звіт, прив'язаний до початкової адреси. Перш ніж змінювати зіставлення, з'ясуйте, чи не приймає щось нижче за потоком рішення за цим полем: списки доступу, звіти аудиту, обмеження швидкості, перевірки ліцензій. Кожне з них — місце, де трансляція згодом проявляється як незрозуміла відмова.

Протоколи, які несуть адреси всередині корисного навантаження, потребують окремого планування, бо перезапис зовнішнього заголовка не зачіпає внутрішнє посилання. Активний FTP, SIP і деякі продукти віддаленого доступу — класичні випадки, і проєкт, який їх ігнорує, працюватиме для вебтрафіку та відмовить для застосунку, що мав значення.

Зворотний трафік залежить від зіставлень зі станом. Перемикання шлюзу може втратити цей стан, асиметрична маршрутизація може його обійти, а перезапуск може його очистити, доки сеанси залишаються відкритими на віддаленій стороні. Тому запит, що досягає призначення, і сеанс, що завершується, — два різні результати приймання.

Порівняйте це з перенумерацією майданчика

Перенумерація одного конфліктного майданчика повністю прибирає зіставлення й залишає план адрес, який можна читати без таблиць трансляції. Це операційно дорого: записи DNS, статичні призначення, правила брандмауера та кожна задокументована адреса мають змінюватися разом. Витрати виникають один раз, у запланованому вікні, з ясним кінцевим станом. Те, що ви купуєте, — здатність прочитати дамп пакетів через роки без таблиці пошуку.

Трансляція уникає більшості локальних змін і створює зіставлення, яке треба вічно підтримувати в DNS, документації та усуненні несправностей. Витрати виникають постійно, у вигляді кожного майбутнього інженера, якому доведеться дізнатися, що один префікс усередині тунелю означає щось інше.

Для тимчасового з'єднання або партнерської мережі, якою ви не керуєте, постійні витрати зазвичай виправдані. Для двох майданчиків, якими ви володієте і будете володіти роками, перенумерація часто є дешевшим рішенням, якщо чесно порахувати міграцію.

Доведіть обидва напрямки реальним сеансом

Перевіряйте сеанс застосунку, а не одиночний зонд. Успішний луна-запит доводить, що один напрямок одного протоколу працює, і він цілком сумісний зі зворотним шляхом, який відмовляє для всього зі станом. Використайте службу, що вмотивувала проєкт, і прочитайте її журнал на далекому кінці, щоб побачити, яку адресу джерела вона записала.

tcpdump -ni any host 10.40.9.20 and port 443
conntrack -L | grep 10.40.9.20
ip route get 10.40.9.20

Потім переконайтеся, що через зіставлення доступні лише передбачені служби. Трансляція змінює адресацію і нічого не робить для авторизації, тому політика брандмауера й далі вирішує, що дозволено. Проєкт, який покладається на неясний трансльований префікс як на контроль доступу, не має контролю доступу взагалі.

Запишіть зіставлення, перевірений сеанс і адреси, які спостерігала кожна сторона. Наступній людині, яка налагоджуватиме цей тунель, ці три факти потрібніші за файл конфігурації.

Схожі статті