Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

IPSEC_NATT_ESP_DROP Сетевое оборудование и VPN

Траблшутинг IPsec за NAT: настройка NAT-Traversal (NAT-T RFC 3948)

Обновлено: 25.08.2026 · Официальная документация ↗
  • IKE Phase 1 (ISAKMP) успешно согласовывается по UDP 500, но Phase 2 (IPsec SA) завершается ошибкой или трафик внутри туннеля полностью отсутствует (0 bytes RX).
  • Пакеты протокола ESP (IP протокол 50) блокируются промежуточными провайдерскими NAT-маршрутизаторами (CGNAT) или офисными фаерволами.
  • Обрыв туннеля ровно через 30–60 секунд после установления из-за закрытия сессии в таблице трансляций NAT (State Table Timeout).
  • Ошибка в логах strongSwan/Cisco/MikroTik: NAT-T payload not detected или peer behind NAT but NAT-T disabled.

1. Архитектура и принцип работы NAT-Traversal

Классический протокол ESP (IP protocol 50) не содержит портов L4 (TCP/UDP), поэтому стандартный NAPT/PAT не может мультиплексировать несколько туннелей за одним внешним IP-адресом. Технология NAT-T (RFC 3948) обнаруживает наличие трансляции адресов во время IKE Phase 1 (через вендорские Vendor ID или NAT-Detection payloads) и динамически переключает обмен и передачу зашифрованных данных на UDP-порт 4500, добавляя 4-байтный заголовок Non-ESP Marker перед зашифрованной полезной нагрузкой.

2. Открытие портов на межсетевых экранах (iptables / nftables)

Убедитесь, что разрешены как обмен ключами, так и инкапсулированный трафик данных:

# Разрешение IKE и NAT-T в iptables
iptables -A INPUT -p udp --dport 500 -j ACCEPT
iptables -A INPUT -p udp --dport 4500 -j ACCEPT
iptables -A INPUT -p esp -j ACCEPT

# Для nftables
nft add rule inet filter input udp dport { 500, 4500 } accept
nft add rule inet filter input ip protocol esp accept

3. Конфигурация strongSwan (Linux)

В файле /etc/ipsec.conf (или swanctl.conf) принудительно включите или настройте автоматическое определение NAT-T:

conn Site-To-Site-NATT
    left=192.168.1.100
    leftsubnet=10.10.0.0/24
    leftid=@gw1.corp.internal
    right=203.0.113.10
    rightsubnet=10.20.0.0/24
    rightid=@gw2.corp.internal
    authby=secret
    auto=start
    ike=aes256-sha256-modp2048!
    esp=aes256-sha256!
    # Активация инкапсуляции NAT-T
    nat_traversal=yes
    forceencaps=yes
    # Защита от сброса NAT State сессии оператором
    dpdaction=restart
    dpddelay=15s
    dpdtimeout=60s

4. Конфигурация Cisco IOS-XE

! Включение детекции NAT-T в политике IKEv2 / ISAKMP
crypto ikev2 nat keepalive 15

! Проверка статуса инкапсуляции в криптосессии
Router# show crypto ipsec sa | include (inbound|outbound) esp sas
! Поле "encapsulation" должно содержать "transport/tunnel (UDP 4500)"

5. Настройка на MikroTik RouterOS v7

/ip ipsec peer profile
set [ find default=yes ] nat-traversal=yes dpd-interval=15s dpd-maximum-failures=4

/ip ipsec identity
add peer=Peer-Remote auth-method=pre-shared-key secret="SecretKeyStrong2026"

# Если клиент находится за жестким Symmetric NAT, принудительно включите UDP инкапсуляцию:
/ip ipsec proposal
set [ find default=yes ] enc-algorithms=aes-256-cbc auth-algorithms=sha256

6. Захват пакетов для верификации

tcpdump -nn -vv -i eth0 port 4500
💡 Практика специалистов: Если клиент находится за Symmetric NAT (где внешний порт трансляции постоянно меняется для каждого нового сокета назначения), классический IPsec IKEv1 часто дает сбои. Переходите на IKEv2 с поддержкой расширения MOBIKE (RFC 4555).

Частые вопросы (FAQ)

Почему соединение разрывается каждые 30 секунд при включенном NAT-T?

Большинство промежуточных SOHO-роутеров и операторских CGNAT имеют жесткий таймаут неактивных UDP-сессий в 30–60 секунд. Для предотвращения закрытия трансляции необходимо настроить постоянную отправку keepalive/DPD пакетов с интервалом 10–15 секунд (параметры dpddelay или nat keepalive).

Что такое Non-ESP Marker и зачем он нужен?

Это 4 нулевых байта (0x00000000), помещаемые сразу за заголовком UDP-порта 4500. Они служат маркером для мультиплексора ядра, позволяя отличить пакеты согласования IKE от пакетов зашифрованных данных ESP, идущих на тот же самый UDP-порт.

Можно ли запустить несколько клиентов IPsec за одним NAT, если сервер не поддерживает NAT-T?

Нет. Без NAT-T чистый протокол ESP не содержит номеров портов, поэтому NAT-маршрутизатор не может сопоставить входящий обратный трафик конкретному внутреннему IP-адресу клиента.

Влияет ли NAT-T на производительность и MTU?

Да, добавление заголовка UDP (8 байт) снижает эффективный MTU/MSS туннеля. Также возрастают накладные расходы на обработку, если сетевые карты не поддерживают аппаратный оффлоад UDP-инкапсулированного ESP (IPsec crypto offload).

Полезные материалы
Рекомендуем