Вопрос или проблема
У меня есть настройка, где телефоны находятся в 2 подсетях, но используется только маршрутизация между ними, а не реальный NAT.
10.4.0.40 <- Asterisk PBX
10.4.0.9 <- Телефон 1
10.1.0.66 <- Телефон 2
Телефон 1 и АТС находятся в одной сети, у Телефона 2 есть маршрут через 10.4.0.1
. Телефон 2 также имеет маршрут обратно в сеть 10.4.0.0/24
.
Есть ли смысл использовать следующее в этой настройке?
nat=force_rport,comedia
Нет, так как у вас нет NAT на этом пути. Зачем беспокоиться? Я бы даже предложил опцию nat=no
, чтобы упростить.
Ответ или решение
В данной ситуации речь идет о настройках NAT в контексте использования Asterisk PBX, где телефоны находятся в разных подсетях, но между ними настроен правильный роутинг, без использования NAT. Давайте подробно рассмотрим, в чем суть конфигурации nat=force_rport,comedia
, и действительно ли она необходима в вашем случае.
Обзор ситуации
Ваша конфигурация включает в себя:
- Asterisk PBX с IP-адресом 10.4.0.40
- Телефон 1 с IP-адресом 10.4.0.9 (в одной сети с PBX)
- Телефон 2 с IP-адресом 10.1.0.66 (в другой сети, с маршрутом через 10.4.0.1)
Таким образом, Phone 1 и Asterisk находятся в одной подсети 10.4.0.0/24, а Phone 2 может обратиться к Asterisk через маршрутизацию, имея соответствующие маршруты для возврата.
Настройки NAT
-
nat=force_rport,comedia
: Этот параметр в конфигурации SIP клиентов используется, чтобы заставить устройства правильно обрабатывать RTP-потоки в сценариях NAT.force_rport
: этот параметр указывает Asterisk использовать адреса и порты из заголовков SIP ответа, а не из инициируемого запроса. Это особенно важно для ситуаций, когда SIP-трафик может проходить через NAT-устройства.comedia
: это еще одна опция, которая говорит Asterisk не полагаться на IP и порты, указанные в заголовках SIP, а использовать подход к обработке медиапотоков, основанный на ошибках, возникающих при установлении соединения.
-
Действительно ли это нужно в вашей конфигурации?
- Учитывая, что в вашем сценарии используете роутинг между двумя подмножествами без NAT, использование этих настроек является избыточным. NAT необходим, когда устройства находятся за маршрутизаторами, выполняющими перевод адресов. В вашем случае телефоны могут напрямую общаться с Asterisk PBX без добавления сложности, связанной с NAT.
Рекомендация
В данной ситуации рекомендуется убрать параметры NAT из конфигурации и использовать просто:
nat=no
Это упростит вашу конфигурацию и избавит вас от ненужных проблем, связанных с исправлением неверной маршрутизации RTP и SIP-пакетов.
Заключение
Ваша сеть и конфигурация обеспечивают внутреннюю маршрутизацию, не требуя применения дополнительных механизмов NAT. Эта настройка nat=force_rport,comedia
не имеет смысла и может привести лишь к ненужным головным болям. Упрощение конфигурации до nat=no
будет более целесообразно и повысит надежность вашей системы без ущерба для функциональности.
Таким образом, ваше решение — убрать лишние настройки NAT — верно и оправдано.