@wintonk

Как sip софтфон узнает ip-адрес устройства, на котором установлен?

Здравствуйте.
Для маршрутизации sip-телефонии используют сервер регистрации/определения местоположения, на котором клиенту(софтфон, например) небоходимо периодичеки регистрировать совой ip-адрес, чтоб быть доступным для входящих вызовов.
Вопрос:
1) Как софтфон узнает ip устройства, на котором установлен? Т.е. это что-то типа "ipconfig/ifconfig" и отправка инфы серверу или софтфон вообще сам не выполняет запросов на определение ip, а сервер его берет из поступившего пакета регистрации?
2) Если на устройстве несколько интерфейсов с разными ip(все статические), то будет ли сервер регистрации/опред. местоположения знать их оба, в случае, если трафик будет идти только через один из интерфейсов, а на другом будет запрещен фаерволом?
  • Вопрос задан
  • 747 просмотров
Решения вопроса 1
@Gansterito
> или софтфон вообще сам не выполняет запросов на определение ip
Софтфон должен знать свой IP. Если не считать IP-адреса в заголовке IP-пакета, то еще он встречается в заголовке Contact и в SDP. Что касается IP-пакета, тут все просто - пакет идет с тем source ip, какой висит на исходящем интерфейсе в сторону сервера регистрации, если жестко не задан другой адрес. Адрес в Contact - тут сложней. В справочнике сказано - "Агент пользователя не должен передавать новых сообщений регистрации (запросов, содержащих новых сообщений в заголовке Contact), пока не получит окончательный ответ от сервера регистрации на предыдущий запрос...". Еще: "Запрос Register может включать в себя заголовок Contact, содержащий ноль или более контактых адресов.".
Какие тут могут быть варианты:
1) SIP-клиент шлет несколько REGISTER-пакетов с разными адресами в Contact, пока не пройдет регистрация.
2) SIP-клиент шлет один REGISTER-пакет с несколькими адресами в заголовке Contact.
Видимо, зависит от реализации клиента.

Если на пути между клиентом и сервером стоит NAT с функционалом SIP ALG, то заголовок Contact будет подвержен изменению в соответствии с логикой работы этого самого SIP ALG.

Для определения адреса за NAT (а также тип NAT) SIP-клиент может использовать STUN-сервер (SIP ALG в этом случае уже не нужен и даже может мешать). В этом случае заголовок Contact будет сформирован без локального адреса, а сразу с публичным IP-адресом и портом.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы