SIP SUBSCRIBE 请求失败

SIP SUBSCRIBE 请求失败

我遇到一个问题,我的客户端可以使用密码登录并拨打电话,但无法接听电话。当我通过 tcpdump 进行故障排除时,它告诉我这REGISTER可行,但实际上SUBSCRIBE却不行。

21:11:24.734317 IP router.48299 > fritz.box.sip: SIP: REGISTER sip:fritz.box SIP/2.0
21:11:24.739130 IP router.box.sip > router.48299: SIP: SIP/2.0 200 OK
21:11:24.769070 IP router.48299 > fritz.box.sip: SIP: SUBSCRIBE sip:[email protected] SIP/2.0
21:11:24.772725 IP router.box.sip > router.48299: SIP: SIP/2.0 401 Unauthorized

客户端:sipdroid(可通过 wlan0 访问)服务器:Fritzbox(可通过 eth0 访问)路由器:Banana Pi

中间是路由器,负责MASQUERADE处理流量:

-A POSTROUTING -o wlan0 -j MASQUERADE
-A POSTROUTING -o eth0 -p udp --dport 5060 -j MASQUERADE
-A POSTROUTING -o eth0 -p tcp --dport 5060 -j MASQUERADE
-A POSTROUTING -o eth0 -p tcp --dport 5061 -j MASQUERADE
-A FORWARD -j ACCEPT

奇怪的是,问题似乎是 voip 服务器拒绝请求SUBSCRIBE,而登录可以使用该REGISTER命令。

答案1

您需要进行一些数据包捕获,以查明 SIP 数据包中实际包含的内容。如果您不知道 SIP 是如何配置的(它是中继吗?),则很有可能它正在尝试使用内部SUBSCRIBE客户端的 IP 地址发出请求,而上游 SIP 服务器拒绝了该请求。

在 NAT 后面运行 SIP 非常困难,因此有许多支持 SIP 的网关。我不知道您在 Pi 上运行的路由软件是否在这里起作用。

我会调查您的 SIP 客户端是否支持 STUN(NAT 会话遍历实用程序)。如果支持,则将其配置为在启动任何 SIP 会话之前查询外部 STUN 服务器可能是可行的方法。

相关内容