Проблема обхода NAT

Вряд ли стоит долго объяснять, почему NAT является проблемой для голосового трафика. Достаточно уже того факта, что голосовой трафик обособлен от сигнализации и использует динамически назначенные номера портов. А IP адреса и номера портов, помещаемые находящимся за NAT пользовательским агентом в поля заголовков Contact и Via, а также в SDP-сообщение, не маршрутизируемы. Маршрутизатор с поддержкой NAT-транспортного уровня модели OSI, а SIP-заголовки формируются на уровне приложения. Следовательно, такое устройство не может проанализировать заголовки и SDP-сообщение и переопределить анонсированные там IP-адреса и номера портов, а также открыть обратный канал для маршрутизации входящего трафика к пользовательскому агенту, равно как и не может знать, к какому SIP-диалогу относится тот или иной медиа поток.

Решение проблемы обхода NAT медиа трафиком требует более сложных изменений, поскольку необходимо заменить IP-адрес и номер порта, анонсированные в SDP-сообщении, таковыми, что обеспечат доставку потоков нужному адресату за NAT.

 

Типы NAT 

Full Cone NAT
Такой NAT транслирует все запросы от одного и того же внутреннего IP-адреса в один и тот же внешний IP-адрес и один и тот же номер порта. Отправка пакетов хосту, находящемуся за NAT такого типа, извне, легко осуществима – проверяются только транспортный протокол, адрес назначения и порт на значения, а адрес и порт источника значения не имеют. Приложению нужно лишь слушать на том же IP-адресе и порту с которых оно отправляет запросы.

Restricted Cone NAT
От предыдущего типа он отличается тем, что выполняется проверка адреса источника. Иными словами, хосту, находящемуся за NAT такого типа, хост с IP-адресом X сможет отправить пакет только в том случае, если перед этим внутренний хост уже отправлял пакеты на IP-адрес X.

Port Restricted Cone NAT
В дополнение к проверке адреса источника здесь также выполняется проверка порта источника. Хост с IP адресом X, отправляющий пакеты с порта P, сможет «достучаться» до хоста за NAT такого типа только в том случае, если перед этим внутренний хост уже отправлял пакеты на IP адрес X и порт P.

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