Назад | Перейти на главную страницу

netsed прозрачный прокси и сервер в одной системе

Я хочу использовать netsed для изменения входящего SIP-трафика (UDP-порт 5060) на сервере PBX, который работает в системе Linux (debian 10 stretch).

На первом этапе я просто попытался настроить телефон для подключения к UDP / 5061 и запустил netsed с помощью этой команды:

./netsed udp 5061 127.0.0.1 5060 s/profile-level-id=4280D/profile-level-id=42800D

Трафик был перехвачен, изменен и перенаправлен на порт 5060 программного обеспечения АТС.

К сожалению, протокол SIP "замечает", что порт, используемый телефоном, не соответствует УАТС (АТС использует 5060, а телефон использует 5061 из-за переадресации портов). Теперь вопрос, как это сделать с netsed.

Итак, вопрос в том, как создать прозрачный прокси в той же системе, что и АТС.

Или есть способ прослушивать netsed уже на порту 5060, но затем передать его программному обеспечению pbx на порт 5060?

Более глубокий фон - это домофоны Mobotix для исходящих вызовов, которые неправильно кодируют поле идентификатора уровня профиля (оно должно состоять из шести символов base16, но имеет длину пять символов). Моя идея заключалась в том, чтобы просто изменить идентификатор уровня профиля, как только SIP-приглашение входит в АТС.

Тот же вопрос на Переполнение стека.

Во-первых ... проблема: SIP - не ЕДИНСТВЕННЫЙ протокол, используемый для VoIP. SIP - это просто механизм дрожания рук. Его задача - обновлять статус и сообщать конечным точкам, куда отправлять / получать аудио. Это другие протоколы для передачи звука ... (например, RTP). SIP согласовывает аудиокодеки конечных точек, а также конечные точки для отправки звука. Сервер сообщает клиенту, что нужно отправить RTP на конкретный IP-адрес и порт ... и поскольку RTP - это UDP и без подключения ... клиент не имеет возможности узнать, получает ли сервер звук или нет. Даже если вы NAT все (SIP и RTP) ... сервер, вероятно, все равно будет отклонять большой трафик, потому что исходные / целевые IP-адреса и порты не соответствуют ожидаемым.

Что вам действительно нужно, так это то, что понимает NAT и протокол SIP. Существуют sip-прокси / шлюзы, которые могут правильно выполнять перевод протоколов. (siproxyd, ALG, STUN, ICE и многие другие) Большинство программного обеспечения SIP-серверов имеет механизм для обработки sip NAT. Например:

Asterisk: вы можете указать несколько глобальных переменных в conf следующим образом:

externip=x.x.x.x
localnet=y.y.y.y/m

а в конфигах одноранговых узлов можно указать nat=yes или полагаться на конечные точки, используя RFC3581 с nat=no

Freeswitch: вы можете указать "internal.xml" и "external.xml" по мере необходимости при указании

<param name="ext-sip-ip" value="x.x.x.x"/>
<param name="ext-rtp-ip" value="x.x.x.x"/>

Без дополнительной информации о том, какой у вас SIP-сервер, я могу дать лишь несколько советов.