Технология IPsec состоит в построении туннелей на сетевом уровне, и в своей изначальной реализации она опирается на IP-адреса сторон. Но на этом же уровне работает NAT, суть которого состоит именно в изменении этих адресов. Таким образом, эти две технологии принципиально конфликтуют друг с другом. Это относится как к Source NAT на стороне клиента, так и к Destination NAT на стороне сервера. Проблема имеет две стороны:
- Если устройство находится за NAT, то адрес, под которым оно известно самому себе, не совпадает с адресом, под которым она известна удалённой стороне.
- Поскольку адрес, под которым устройство видно удалённой стороне, может быть заранее неизвестен, то она должна либо разрешать построение безопасной ассоциации (Security Association) с любыми партнёрами, либо идентифицировать данное устройство по имени, а не по IP-адресу. Первый вариант проще, но является значительно менее безопасным, поэтому требует использования более сильных средств аутентификации.
Чтобы устанавливать туннели IPsec через промежуточные узлы, осуществляющие NAT, используется стандартный механизм NAT Traversal (NAT–T). Он включает в себя:
- Процедуру проверки, позволяющую определить, находится ли та или другая сторона туннеля за NAT.
- Дополнительную инкапсуляцию IPsec-over-UDP.
- Периодическую посылку пакетов keepalive, чтобы поддерживать в NAT непрерывный поток UDP во всё время существования туннеля и, таким образом, возобновлять существующую запись в таблице NAT.
Для успешной работы этот механизм должен поддерживаться на обеих сторонах туннеля.
Обратно в узел ipsec
или .ip.nat
...