У меня есть сервер Asterisk Linux, который находится за брандмауэром. Межсетевой экран имеет три интерфейса:
Если я оставлю все как есть, Asterisk без проблем подключится к магистрали SIP. Он будет маршрутизироваться по маршруту по умолчанию через eth2. eth2 ЗАМАСАН.
Если я определю статический маршрут к моему провайдеру SIP через eth3 (ip route add sip.provider.ip via gateway.ip dev eth3
), Я могу пинговать провайвер SIP. Брандмауэр разрешает все, что связано с моим SIP-провайдером. Но Asterisk откажется подключаться (одноранговый узел станет недоступен) ...
Я использовал iptables TRACE, чтобы посмотреть пакеты, и они определенно выходят через eth3. Но я не вижу, чтобы пакет вернулся. eth3 также имеет правило MASQUERADE ...
Удаление статического маршрута через eth3 восстанавливает подключение.
Я ищу советы и подсказки, которые помогут устранить проблему.
Я подозреваю, что ваш сервер asterisk настроен на использование UDP без установления соединения, поэтому исходящий SIP-запрос может содержать обратный IP-адрес, который конечный пользователь должен использовать для обратного подключения к вам.
Проверить externip
настройка в ваших файлах конфигурации sip:
Также обратите внимание на следующее, в котором есть много хороших вещей http://www.asteriskguru.com/tutorials/sip_nat_oneway_or_no_audio_asterisk.html
Получение сетевой трассировки с помощью wirehark или tcpdump как для eth2, так и для eth3 также прольет больше света на проблему.