Я хочу использовать 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-сервер, я могу дать лишь несколько советов.