我想使用 netsed 更改在 Linux 系统(debian 10stretch)上运行的 PBX 服务器上的传入 SIP 流量(UDP 端口 5060)。
在第一步中,我只是尝试将手机设置为连接到 UDP/5061 并使用该命令启动 netsed:
./netsed udp 5061 127.0.0.1 5060 s/profile-level-id=4280D/profile-level-id=42800D
流量被拦截、更改并转发到PBX软件的5060端口。
不幸的是,SIP 协议(protocol)“注意到”电话使用的端口与 PBX 不匹配(由于端口转发,PBX 使用 5060,电话使用 5061)。现在的问题是如何使用 netsed 来做到这一点。
所以问题是如何在与 pbx 相同的系统上创建透明代理。
或者有没有办法在端口 5060 上使用 netsed 进行监听,然后将其传递到端口 5060 上的 pbx 软件?
更深层的背景是用于拨出调用的 Mobotix 门电话未正确编码配置文件级别 ID 字段(它应该是 6 个 base16 字符长,但实际上是 5 个字符长)。我的想法是在 SIP-Invite 进入 PBX 后立即更改配置文件级别 ID。
同样的问题StackExchange .
最佳答案
如果我没有误解你的想法;我觉得一件很有趣的事;您正在尝试使用 netsed
设置透明应用程序 IP 代理。从该实验来看,简单的解决方案并不适用,因为 SIP 协议(protocol)“通知”“netsed”正在改变数据路径。
需要注意的几点:
SIP 本身不能通过 NAPT 作为传输数据 包含 IP 地址和端口号。
此外,除了 TLS 之外,SIP 与传输协议(protocol)无关 表示 SIP session 被授权同时使用 UDP 和 TCP 同一时间。
我建议您看看SIP代理、SBC、B2BUA和STUN,以便对所有这些问题有一个正确的理解,似乎是一条艰难的道路,但很有值(value)。
或者您可以从 SIP 代理中汲取灵感,并在 netsed
中实现最小的 SIP 代理功能。这很有趣,但并不那么容易。
但是,如果您放弃了“基本”代理的最初想法,那么您可以使用 SIP 工具箱,例如 [kamalio][1]
。这是进行 SIP 相关管道的已知方法,但显然与您最初的目标相去甚远。
希望这有帮助。
关于linux - Netsed 透明代理和服务器位于同一系统上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58720592/