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

Знайте, що опція насправді додає

Вбудований IPsec передає зашифровані корисні навантаження як протокол IP 50, без номера порту, який треба дозволяти. NAT traversal загортає ці пакети в UDP на порт 4500, і тому так багато правил брандмауера згадують цей порт. RFC 9329 додає подання потоку: пакети IKE і IPsec обидва йдуть усередині одного з'єднання TCP, зазвичай на порт 4500.

Потік не є вебслужбою. З'єднання TCP на 4500 нічого не каже про HTTP, TLS чи дружність до проксі, а HTTP-проксі на шляху зазвичай зламає кадрування, а не перенесе його.

Попередня перевірка перед тим, як торкатися брандмауера

Стандарт ставить TCP як запасний варіант для мереж, що відкидають шлях UDP, а не як його заміну. Отримайте два факти в кожного постачальника: точну назву функції та версію, яка реалізує RFC 9329, а не власний варіант. Позначення на кшталт IPsec over TCP використовували для незв'язаних рішень, тому просіть посилання на документ і ключ конфігурації, який її вмикає. Без обох відповідей нічого не припускайте про сумісність на дроті.

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

На боці відповідача: чи щось слухає

Почніть із сокета. ss -ltnp | grep 4500 показує, чи існує слухач TCP і який процес ним володіє. Відсутність рядка завершує розслідування на конфігурації шлюзу, а не на мережі.

Якщо сокет є, спостерігайте за рукостисканням, а не вгадуйте з боку клієнта: tcpdump -ni any 'tcp port 4500'. Завершене тристороннє рукостискання з подальшою тишею означає, що потік прийнято і обмін IKE всередині нього не вдався, тоді як SYN без відповіді вказує на фільтрування або на неправильну адресу.

Порівняйте зі шляхом UDP у тому самому вікні захоплення, щоб два не переплуталися: tcpdump -ni any 'udp port 4500 or proto 50'. Трафік за протоколом 50 або на порту UDP 4500, коли ви вважаєте, що використовується TCP, означає, що сторони так і не домовилися про запасний варіант. Захопіть і на шлюзі, якщо можете, бо захоплення з боку клієнта не може показати, що надіслав дальній кінець.

Приймайте в чотири окремі етапи

Розглядайте підйом як чотири результати. Кожен може зазнати невдачі з іншої причини, і один загальний успіх чи провал приховує, який саме, тому зупиніться на першому невдалому етапі та почніть знову згори.

StageWhat you checkWhat it proves
1TCP connection established to 4500A listener exists and the path permits it
2IKE_SA authenticated in the gateway logBoth peers agreed on the encapsulation
3CHILD_SA installed, visible with ip xfrm stateKeys exist for the protected traffic
4A new application exchange succeedsThe data path works, not just the control path

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

Відкат і ціна того, щоб залишити це ввімкненим

Сплануйте скасування до зміни: вимкніть опцію інкапсуляції на обох кінцях і підтвердьте, що тунель повертається через UDP. Залиште правило TCP на один цикл перевірки на випадок, якщо запасний варіант знову знадобиться, потім видаліть його. Невикористаний слухач на 4500 це поверхня без жодної операційної цінності.

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

Список приймання

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

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

Схожі статті