我有一个 SIP 客户端设备连接到我的 ADSL 路由器,因此它位于对称 NAT 后面。我的 ISP 每 24 小时重置一次客户端的 IP,在路由器日志中如下所示:
Mar 26 12:36:56 daemon crit pppd[443]: Clear IP addresses. Connection DOWN.
Mar 26 12:36:56 daemon crit pppd[443]: Clear IP addresses. PPP connection DOWN.
Mar 26 12:37:06 daemon crit pppd[443]: PPP LCP UP.
Mar 26 12:37:07 daemon crit pppd[443]: Received valid IP address from server. Connection UP.
现在,当这种情况发生时,我的 SIP 客户端将永久失去在提供商处注册自己的能力(我怀疑它仍然缓存了旧的外部 IP)。让它重新工作的唯一方法是重新启动调制解调器(或整个路由器),这样 ADSL 链接就会关闭并再次打开;换句话说,让这种情况发生(再次登录路由器):
Jan 1 00:00:08 user crit kernel: ADSL link down
Jan 1 00:00:14 user crit kernel: xDSL G.994 training
Jan 1 00:00:25 user crit kernel: ADSL G.992 started
Jan 1 00:00:29 user crit kernel: ADSL G.992 channel analysis
Jan 1 00:00:36 user crit kernel: ADSL link up, interleaved, us=1182, ds=12444
Jan 1 00:00:37 daemon crit pppd[443]: PPP LCP UP.
Jan 1 00:00:47 daemon crit pppd[443]: PPP LCP UP.
Jan 1 00:00:47 daemon crit pppd[443]: Received valid IP address from server. Connection UP.
当然,我不能每次我的 ISP 更改我的 IP 地址时手动关闭 ADSL 链接,只是为了让 VoIP 电话正常工作。所以我的问题是,在 IP 重置后,有没有什么方法可以让 SIP 客户端正常工作?
我的配置是:
路由器:D-Link DSL-2640B
SIP 客户端:Gigaset A-510IP
我已经尝试在路由器中启用 RIP、将 gigaset 置于 DMZ、修改 gigaset 配置中的“刷新 NAT 时间”值、激活 STUN……但这些都没有帮助。
答案1
解决办法是购买另一个路由器...这样就解决了问题。不过我仍然不知道原因是什么。
答案2
为什么不在线路断线之前取消注册呢?我想说的是,问题在于您在服务器上设置的 REGISTER 超时意味着您需要特别取消注册,否则服务器将忽略您发出的不来自您已注册的会话的其他请求。
基本上,您在线路中断之前发送一个超时时间为 0 的 REGISTER(我假设它发生在夜晚的某个时间,+/- 30 分钟..),然后您可以使用新的 IP 重新注册。