IKE через TCP 4500: проверьте оба конца до правила порта
Инкапсуляцию TCP согласуют оба конца, а не выдаёт правило брандмауэра. Выполните проверку слушателя, захват и четыре этапа приёмки по порядку.
Обращения в поддержку часто приходят, когда изменение брандмауэра уже согласовано, а туннель всё ещё отказывается подниматься. Это ожидаемый результат, когда функция есть только на одном конце: инкапсуляцию 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, означает, что стороны так и не договорились о запасном варианте. Захватите и на шлюзе, если можете, потому что захват со стороны клиента не может показать, что отправил дальний конец.
Принимайте в четыре отдельных этапа
Рассматривайте подъём как четыре результата. Каждый может отказать по своей причине, и один общий успех или провал скрывает, какой именно, поэтому остановитесь на первом неудачном этапе и начните заново сверху.
| Stage | What you check | What it proves |
|---|---|---|
| 1 | TCP connection established to 4500 | A listener exists and the path permits it |
| 2 | IKE_SA authenticated in the gateway log | Both peers agreed on the encapsulation |
| 3 | CHILD_SA installed, visible with ip xfrm state | Keys exist for the protected traffic |
| 4 | A new application exchange succeeds | The data path works, not just the control path |
Четвёртый этап это тот, который пропускают. Существующая сессия может продолжать работать на кэшированном состоянии, поэтому откройте новое соединение к хосту за шлюзом, прежде чем закрывать изменение. Если второй этап не проходит, а первый проходит, расхождение в предложении или в настройке инкапсуляции, а не в брандмауэре.
Откат и цена того, чтобы оставить это включённым
Спланируйте отмену до изменения: отключите опцию инкапсуляции на обоих концах и подтвердите, что туннель возвращается через UDP. Оставьте правило TCP на один цикл проверки на случай, если запасной вариант снова понадобится, затем удалите его. Неиспользуемый слушатель на 4500 это поверхность без какой-либо эксплуатационной ценности.
Следите за признаком производительности, когда он понесёт реальную работу. TCP внутри TCP добавляет слои подтверждений, которые застревают при одной потере, а потоки, делящие одно соединение, могут блокировать друг друга, поэтому измеряйте приложение, которое будет использовать туннель, а не ping.
Список приёмки
Подтвердите название и версию функции на обоих концах, слушателя на стороне ответчика, захват с завершённым рукопожатием и четыре этапа, записанные с отметками времени. Добавьте причину запасного варианта в запись об изменении, чтобы следующий инженер знал, почему здесь TCP. Отрепетируйте откат до того, как он понадобится.
Если какой-либо этап не проходит, исправляйте только этот этап. Смена набора шифров или настроек идентичности в погоне за транспортной проблемой обычно добавляет вторую, несвязанную ошибку поверх первой.