Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

История изменений [назад]

нажмите, чтобы скрыть/показать версии 1
изначальная версия
редактировать

спросил 2015-03-05 13:10:18 +0400

surae Gravatar surae

кто знает алгоритм определения source IP исходящих пакетов SIP у asterisk на linux

хотелось бы узнать алгоритм определения source IP исходящих пакетов SIP у asterisk на linux

пока удалось выяснить опытным путём что исх. IP зависит от маршрута до клиента (сейчас маршрут по умолчанию через eth0 и шлюз там 10.66.66.8, а для VoIP-трафика есть vlan-интерфейс там шлюз 172.16.66.8 и SIP-соединения приходят из инета на 172.16.66.4 через DNAT)

так вот asterisk получает входящие пакеты на 172.16.66.4 (vlan0), а отвечает пакетами с 10.66.66.7 (eth0), ответные пакеты до клиента не доходят

но если добавить индивидуальный маршут до клиента через шлюз 172.16.66.8 то asterisk уже отвечает с 172.16.66.4 (vlan0) и всё работает норм.

вопрос, как можно повлиять на asterisk чтобы он всегда отвечал с того же IP на который пришёл вх. пакет SIP-соеднинения? или это от настройки сети в ядре linux зависит?

(вариант bindaddr=172.16.66.4 понятен и работат, но тут он не подходит; externip=/localnet= также не рассматривается ибо SIP-ALG включен на маршрутизаторе)

кто знает алгоритм определения source IP исходящих пакетов SIP у asterisk на linux

хотелось бы узнать алгоритм определения source IP исходящих пакетов SIP у asterisk на linux

пока удалось выяснить опытным путём что исх. IP зависит от маршрута до клиента (сейчас маршрут по умолчанию через eth0 и шлюз там 10.66.66.8, а для VoIP-трафика есть vlan-интерфейс там шлюз 172.16.66.8 и SIP-соединения приходят из инета на 172.16.66.4 через DNAT)

так вот asterisk получает входящие пакеты на 172.16.66.4 (vlan0), а отвечает пакетами с 10.66.66.7 (eth0), ответные пакеты до клиента не доходят

но если добавить индивидуальный маршут до клиента через шлюз 172.16.66.8 то asterisk уже отвечает с 172.16.66.4 (vlan0) и всё работает норм.

вопрос, как можно повлиять на asterisk чтобы он всегда отвечал с того же IP на который пришёл вх. пакет SIP-соеднинения? или это от настройки сети в ядре linux зависит?

(вариант bindaddr=172.16.66.4 понятен и работат, но тут он не подходит; externip=/localnet= также не рассматривается ибо SIP-ALG включен на маршрутизаторе)

вот как это выглядит через tcpdump:

14:12:11.606668 IP 212.57.180.157.24027 > 172.16.66.4.5060: SIP, length: 551 14:12:11.607370 IP 10.66.66.7.5060 > 212.57.180.157.24027: SIP, length: 590

кто знает алгоритм определения source IP исходящих пакетов SIP у asterisk на linux

хотелось бы узнать алгоритм определения source IP исходящих пакетов SIP у asterisk на linux

пока удалось выяснить опытным путём что исх. IP зависит от маршрута до клиента (сейчас маршрут по умолчанию через eth0 и шлюз там 10.66.66.8, а для VoIP-трафика есть vlan-интерфейс там шлюз 172.16.66.8 и SIP-соединения приходят из инета на 172.16.66.4 через DNAT)

так вот asterisk получает входящие пакеты на 172.16.66.4 (vlan0), а отвечает пакетами с 10.66.66.7 (eth0), ответные пакеты до клиента не доходят

но если добавить индивидуальный маршут до клиента через шлюз 172.16.66.8 то asterisk уже отвечает с 172.16.66.4 (vlan0) и всё работает норм.

вопрос, как можно повлиять на asterisk чтобы он всегда отвечал с того же IP на который пришёл вх. пакет SIP-соеднинения? или это от настройки сети в ядре linux зависит?

(вариант bindaddr=172.16.66.4 понятен и работат, но тут он не подходит; externip=/localnet= также не рассматривается ибо SIP-ALG включен на маршрутизаторе)

вот как это выглядит через tcpdump:

14:12:11.606668 IP 212.57.180.157.24027 > 172.16.66.4.5060: SIP, length: 551 551

14:12:11.607370 IP 10.66.66.7.5060 > 212.57.180.157.24027: SIP, length: 590 590

кто знает алгоритм определения source IP исходящих пакетов SIP у asterisk на linux

хотелось бы узнать алгоритм определения source IP исходящих пакетов SIP у asterisk на linux

пока удалось выяснить опытным путём что исх. IP зависит от маршрута до клиента (сейчас маршрут по умолчанию через eth0 и шлюз там 10.66.66.8, а для VoIP-трафика есть vlan-интерфейс там шлюз 172.16.66.8 и SIP-соединения приходят из инета на 172.16.66.4 через DNAT)

так вот asterisk получает входящие пакеты на 172.16.66.4 (vlan0), а отвечает пакетами с 10.66.66.7 (eth0), ответные пакеты до клиента не доходят

но если добавить индивидуальный маршут до клиента через шлюз 172.16.66.8 то asterisk уже отвечает с 172.16.66.4 (vlan0) и всё работает норм.

вопрос, как можно повлиять на asterisk чтобы он всегда отвечал с того же IP на который пришёл вх. пакет SIP-соеднинения? или это от настройки сети в ядре linux зависит?

(вариант bindaddr=172.16.66.4 понятен и работат, но тут он не подходит; externip=/localnet= также не рассматривается ибо SIP-ALG включен на маршрутизаторе)

вот как это выглядит через tcpdump:

14:12:11.606668 IP 212.57.180.157.24027 > 172.16.66.4.5060: SIP, length: 551

14:12:11.607370 IP 10.66.66.7.5060 > 212.57.180.157.24027: SIP, length: 590

590

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.