Opened 3 years ago

Closed 3 years ago

Last modified 3 years ago

#390 closed задача (fixed)

Добавить опцию Маскарадинг Invite для Sip-пользователей

Reported by: san Owned by: alx
Priority: высокий Milestone: 1 очередь
Component: any Keywords:
Cc:

Description

Для обеспечения стыковки плат VE-01, VE-02 с некоторыми сторонними АТС в режиме так называемого "SIP транка" нужно кроме опции Маскарадинг Invite(#384), которая относится к вызовам от окончаний платы добавить аналогичную опцию для вызовов от Sip-пользователей зарегистрированных на плате.
Реализовать это предлагаю единообразно с Маскарадингом для окончаний, т.е при включенной опции в поле Contact исходящего запроса INVITE от Sip-пользователя зарегистрированного на плате должны указываться внешние адрес и порт платы.

Change History (7)

in reply to:  description comment:1 by alx, 3 years ago

Replying to san:

Реализовать это предлагаю единообразно с Маскарадингом для окончаний, т.е при включенной опции в поле Contact исходящего запроса INVITE от Sip-пользователя зарегистрированного на плате должны указываться внешние адрес и порт платы.

Здесь я вижу некоторое противоречие, так как описанное предложение не аналогично реализации маскарадинга для канальных окончаний - канальные окончания не регистрируются на плате VE-01.

Поэтому для единообразия реализации предлагаю в данном случае также не учитывать регистрацию UA на плате. Предлагаю следующее условие маскарадинга:

  • хост/порт в URI поля From соответствуют домену/порту прокси-сервера платы;
  • и хост/порт URI поля Contact не равны 127.0.0.1:6060 (то есть это не контакт шлюза).

Дополнительно отмечю, что и это не совсем единообразно, так как маскарадинг контакта канальных окончаний шлюза не учитывает домен/порт поля From, то есть не зависит от того, зарегистрировано канальное окончание на каком-то сервере или нет...

in reply to:  description comment:2 by alx, 3 years ago

Replying to san:

при включенной опции в поле Contact исходящего запроса INVITE от Sip-пользователя должны указываться внешние адрес и порт платы.

Какой именно адрес? Внешних адресов может быть несколько...

В тикете #384 говорится, что "проблемная" АТС требует совпадения имени хоста в полях From и Contact. Поэтому предлагаю заменять хост и порт в поле Copntact соответствующими значениями из поля From.

comment:3 by san, 3 years ago

Предлагаю следующее условие маскарадинга:

  • хост/порт в URI поля From соответствуют домену/порту прокси-сервера платы;
  • и хост/порт URI поля Contact не равны 127.0.0.1:6060 (то есть это не контакт шлюза).

Согласен

В тикете #384 говорится, что "проблемная" АТС требует совпадения имени хоста в полях From и Contact. Поэтому предлагаю заменять хост и порт в поле Copntact соответствующими значениями из поля From.

Учитывая предлагаемое тобой условие, с этим предложением тоже согласен

comment:4 by alx, 3 years ago

В свете написанного выше о том, что реализация не до конца единообразна, возможно, имеет смысл сделать более трех вариантов маскарадинга:

  1. ничего не маскарадим:
  2. маскарадим все INVITE от шлюза;
  3. маскарадим INVITE от шлюза только если наш домен в поле From;
  4. маскарадим все кроме INVITE от шлюза если наш домен в поле From;
  5. маскарадим вообще все если наш домен в поле From (то есть комбинация п. 3 и 4);
  6. комбинация п. 2 и 4;
  7. что-то еще?

Пункт 2 (как сделано сейчас) мы вынуждены оставить для совместимости, хотя более правильно было бы использовать п. 3. Не знаю, нужна ли, в таком случае, комбинация п. 2 и п. 4...

comment:5 by alx, 3 years ago

Отсутствие ответов расцениваю как ответ "На твое усмотрение". :)

Я подумал и решил, что делать много разных вариантов - это плохо, так как пользователям будет трудно во всей этой лабуде разобраться. Излишняя сложность не стоит потенциальной пользы от этой функции. Поэтому я решил сделать только два конфигурационных флага: один для маскарадинга INVITE от шлюза, другой - для маскарадинга INVITE от всех остальных "наших" UA. Под "нашими" UA понимаются такие UA, в поле From которых указан наш домен (домен, известный прокси-серверу как свой).

Для простоты понимания и реализации маскарадинг будет выполняться в одном месте (в прокси-сервере) и единообразно - как п. 3 и п. 4 предыдущего комментария. Пункт 2 я решил для совместимости не оставлять, так как, как пояснялось в #384, маскарадинг используется для незарегистрированных на станции канальных окончаний, и в этом случае принципиальной разницы с п. 3 нет.

comment:6 by alx, 3 years ago

Resolution: fixed
Status: newclosed

In 2054/sip_ua:

Маскарадинг INVITE перенесен из шлюза в прокси-сервер.
Конфигурационный флаг маскарадинга разделен на два:

  • маскарадинг INVITE от канальных окончаний шлюза;
  • маскарадинг INVITE от внешних UA.

Дополнительно принадлежность отправителя сообщения к
"нашим" пользователям теперь проверяется методом isMyUri()
прокси-севрера. Closes #390.

in reply to:  5 comment:7 by san, 3 years ago

Replying to alx:

Отсутствие ответов расцениваю как ответ "На твое усмотрение". :)

Ой, я хотел устно обсудить, но разговор ушёл не туда :) но выбранный вариант меня устраивает.

Note: See TracTickets for help on using tickets.