..
Вначале эту публикацию хотел отнести к разделу Asterisk PBX, но это не совсем соответствует действительности, т.к. здесь мною будет представлено больше режимов маршрутизации, чем реализовано в Asterisk PBX.
Так или иначе, режимы маршрутизации отражают то, следовать ли сигнальным сообщениям при принятии решении о маршрутизации или возможностью прохождения NAT.
Протокол SIP (Session Initiation Protocol - Протокол Инициации Сессий) представляет собой "прикладной управляющий протокол, который может устанавливать, изменять и завершать мультимедийные сессии и конференции, такие как телефонные звонки через интернет". SIP широко используется в Asterisk PBX и в телефонных сетях поверх IP и является способом телефонной аудио- и видеосвязи № 1 в IP сетях в настоящее время в принципе.
В настоящее время SIP широко используется как при подключении оконечных IP телефонов так и при организации магистральных транковых групп между узловыми серверами телефонии в IP сетях.
..
Ниже мною будут рассмотрены все возможные режимы маршрутизации. Все эти режимы маршрутизации подойдут на все случаи жизни в сложных сетях, при конфигурировании sip-устройств и транков.
Все нижеперечисленные режимы маршрутизации мои, и задокументированы мной ранее. В конце этой публикации стоит мой копирайт, это мои авторские права. Несмотря на то что в Asterisk PBX есть свои варианты маршрутизации, здесь будут представлены мои, с моими авторскими правами. У меня в этом плане с Asterisk PBX нет ничего общего.
..
VIA
..
Режим "via". NAT по умолчанию не используется, сообщения маршрутизируются согласно sip-заголовкам "Via". Но, согласно RFC 3581 NAT включается, если в запросах от удалённой стороны в самом верхнем заголовке "Via" указывается параметр "rport" (без значения) что побуждает получателя добавить адрес и порт получения чтобы направить ответ на эти адрес и порт NAT (sip-расширение SRR, RFC 3581).
Этот режим маршрутизации является режимом по умолчанию и соответствует всем стандартам.
В Asterisk PBX в "sip.conf" этому режиму соответствует значение параметра "nat=no".
..
NAT
..
Режим "nat". Это двусторонний NAT. При использовании NAT, в SIP запросах в самом верхнем заголовке "Via" указывается параметр "rport" (без значения), в результате, согласно стандартам, получатели запросов ДОЛЖНЫ добавить видимый адрес и порт получения с тем чтобы направить ответ на эти указанные адрес и порт для успешного прохождения NAT (sip-расширение SRR, RFC 3581). Также, при использовании NAT, ответы отправляются всегда туда откуда были получены запросы, если от удалённой стороны получен "rport", то см. обработку как и в "VIA".
В Asterisk PBX в "sip.conf" этому режиму соответствует значение параметра "nat=force_rport" (в старых версиях вроде был "nat=yes"). Для сравнения ниже на скриншоте приведены возможные значения параметра "nat" и соответственно маршрутизации для Asterisk PBX v.18.
Тут ещё есть параметр "comedia", это "nat" для медианагрузки, смешали всё в кучу, грешное с праведным, я же рассматриваю только сигнализацию.
..
NAT-ROUTE
..
Режим "nat-route". Односторонний NAT, локальной стороной используется, а у удалённой стороны "NAT" не запрашивается. Полезен для исходящих запросов. Он заключается в том что для отправки запросов удалённой стороне NAT используется (т.е. для связи используется "видимый" адрес, а не из сообщений), но параметр "rport" не указывается в запросах, что приводит к тому что удалённая сторона не будет принудительно по принуждению использовать NAT (хотя может это делать на своё усмотрение, например, если на удалённой стороне включен NAT), а локальной стороной в этом случае NAT используется. Таким образом получается односторонний NAT.
Для отправки исходящих запросов разницы между "nat" и "nat-route" нет.
..
NAT-NEVER
..
Режим "nat-never". Никогда не использовать NAT. NAT по умолчанию не используется, сообщения маршрутизируются согласно sip-заголовкам "Via". Но даже если согласно RFC 3581 от удалённой стороны в самом верхнем заголовке "Via" указывается параметр "rport", он игнорируется и NAT также не используется.
Этот режим нарушает использование стандартов и является вынужденной мерой. Иногда для правильной работы нужно использовать именно его.
..
STRICT
..
Режим "strict", строгая маршрутизация. Этот режим аналогичен "nat-never", плюс ко всему отбрасываются ответные сообщения не c тех тр. адресов, которые указываются в заголовке "Via".
Может использоваться когда от удалённой стороны сигнализация идёт не тем маршрутом, а нужна строгая маршрутизация, например, при использовании VPN.
..
@ Ярошенко О. Ю. 2024