详解 私网穿越技术在软交换体系中的应用( 三 )




软交换在收到INVITE消息并做相应处理后 , 预备将其转发给B , 由于B也是通过NAT/FW Proxy代理注册到软交换的 , 因此发送的消息如图8所示 , 由NAT/FW PROXY接收并做代理转换后 , 发送给B外层的路由器或防火墙 , 转换结果如图9所示 。

防火墙通过查询自己维护的连接列表 , 就可以把这条信令消息正确的发送给终端B了 。呼叫接续流程的其它信令消息 , 转接方式与INVITE类似 。
4. 用NAT/FW Proxy实现媒体流的代理连接
以图5中终端A呼叫终端C为例 , 当A发出INVITE消息并到达NAT/FW Proxy后 , NAT/FW Proxy会为A分配两个RTP代理端口 , 一个是呼出代理端口 , 记为A1 , 另一个是呼入代理端口 , 记为A2 。NAT/FW Proxy使用A2的端口信息替换原INVITE消息中SDP包中对RTP端口的描述 , 并发给软交换 。当软交换发回终端C的SDP信息时 , NAT/FW Proxy记录终端C的实际RTP端口 , 并用A1的端口信息进行替换 , 发给终端A 。当呼叫建立后 , 终端A一旦开始发送RTP包 , 就会在私网设备上建立一个临时的RTP“窗口” , 只要媒体流不断在发送(在没有话音时终端也应该发送舒适噪声的RTP包) , 这个“窗口”就一直打开 。由于设备A得到的对端RTP端口实际是NAT/FW Proxy上的呼出代理端口A1 , 因此RTP包会发向NAT/FW Proxy , NAT/FW Proxy将RTP包再发给终端C真正的RTP端口 。同样 , 终端C得到的A的RTP端口实际是NAT/FW Proxy上的代理端口A2 , 所以RTP包会发向A2 , 然后由NAT/FW Proxy通过私网设备上的临时RTP“窗口”将RTP包转发给终端A 。
当两个设备分别在两个防火墙内 , 且都注册到一个NAT/FW Proxy上时 , 如图5中终端A呼叫终端B的情况 , 由于NAT/FW Proxy可以知道两个设备都是注册在自己上面的 , 因此并不需要为每个终端都分配两个代理端口 , 而只用分配一对端口 。如A1和B1 , 其中A1既作为终端A的呼出端口 , 也做为终端B的呼入端口 , 而B1既做为终端B的呼出端口 , 也做为终端A的呼入端口 。假如终端A和终端B还是处于同一个私网网关设备之下 , NAT/FW Proxy完全可以不为它们分配任何代理端口 , 而是让它们在私网内部直接建立RTP流的连接 。
5. 其它问题的考虑
以上对于使用NAT/FW Proxy来实现私网穿越的方法的描述 , 都是基于使用SIP协议的终端 , 但实际上这种方法并不仅限于SIP终端 , 当终端使用H.248 , MGCP等协议时 , 只要有对应的NAT/FW Proxy支持 , 也同样可以实现私网穿越 。
从构架上看 , 需要进行私网穿越代理的设备非常多 , 一台NAT/FW Proxy无法处理时 , 完全可以部署多个NAT/FW Proxy , 并让这些设备注册到不同的NAT/FW Proxy上 。如配置一台NAT/FW Proxy处理SIP终端的私网穿越 , 配置两台NAT/FW Proxy来处理MGCP终端的私网穿越等 。
四、在软交换体系中的扩展应用
使用NAT/FW Proxy的构架 , 除了能够实现私网穿越的功能外 , 只要稍加扩展 , 还可以为软交换体系带来其他一些意外收获 。
1.可以保护软交换设备免遭攻击
在正常的配置情况下 , 软交换设备的地址对于所有用户都是可见的 , 这时假如有人恶意的对软交换发起某些攻击 , 比如DoS攻击 , 是比较难以防范的 。但是假如要求所有终端都注册到NAT/FW Proxy设备上 , 通过NAT/FW Proxy的代理与软交换发生联系 , 那么软交换地址对外就完全是不可见的了 , 并且由于NAT/FW Proxy设备的成本相对低廉 , 可以配置多个 , 即使遭到攻击 , 只要让终端上更换一个NAT/FW Proxy进行注册就可以了 。
2.防止通信欺诈行为
一般情况下 , 一旦软交换为双方建立起呼叫 , 那么双方终端的地址、端口、媒体能力等就完全向对方透明化了 , 这时假如有人使用一些支持点对点连接的终端 , 绕过软交换而直接向对方发起连接 , 则软交换就无法进行计费 , 也就会出现通信欺诈行为了 。假如按照1中所述 , 把所有终端都注册到NAT/FW Proxy上 , 那么终端只能通过NAT/FW Proxy上的代理端口进行交互 , 终端之间透明的只有对方的号码 , 这样可以在很大程度上避免欺诈行为的发生 。

推荐阅读