找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 8919|回复: 4

求教Openwrt的UDP端口映射是不是有问题?

[复制链接]
发表于 2011-10-24 19:42 | 显示全部楼层 |阅读模式
我用一台装有Asterisk的小主机跑VOIP,内网IP192.168.1.3,通过一路由ADSL接入到公网。把外网IP的5060和RTP10000-20000 UDP端口映射到内网的192.168.1.3上。

在之前用TOMATO的时候一切正常,跑了两年了,很稳定。

现在买了一台TL-WR1043,想试一下OpenWrt,我装了最新的10.03.1-RC5(之前的10.03稳定版也试过,情况类似),无线功能和USB EXROOT等都没问题,但发现它的外网映射到内网地址就是不成功。我是把原来用在TOMATO上的配置原样仿过来的,因为这很简单,按理应该不成问题。但Asterisk主机就是收不到转发过来的SIP注册联接,当然RTP数据也不成功。

另外,我还试了DD-WRT,发现也是一样的问题。而TOMATO是没有问题的。

因为它们都是用的IPTABLES防火墙,所以只能与规则的写法有关了。我已经GOOGLE了好几周了,在英文网上也看到有人有与我一样的问题,但是解答都不对。实在找不出什么原因来。难道著名的OPENWRT连这基本的功能都有问题?在此向大家求教。
发表于 2011-10-24 19:47 | 显示全部楼层
1# bsdfan


Asterisk 也可以跑在openwrt上
 楼主| 发表于 2011-10-24 19:57 | 显示全部楼层
谢谢,把ASTERISK装在路由上我也想试试,但是貌似如果不解决这个问题的话,从公网来的SIP分机也一样注册不上。
 楼主| 发表于 2011-10-27 17:13 | 显示全部楼层
本帖最后由 bsdfan 于 2011-10-27 17:17 编辑

貌似我发现了OPENWRT的一个BUG,至少10.3.1 RC5上是存在的,之前版本也很可能存在。

问题就是UDP连接的端口转发(TCP则无问题)。

假设一台在公网上的SIP ATA,向一个以OPENWRT为路由器(IP192.168.1.1)的内网主机(ASTERISK,IP为192.168.1.2,SIP注册端口为5060)发起注册请求。按常理,只需在OPENWRT上设好端口转发规则,将其WAN上的UDP5060转发至192.168.1.2的5060(因为与WAN端口相同,可省略)即可。

但若只设置 UDP 连接的外部端口(如5060),内网主机地址的端口省略,内网主机就会收不到这一连接。

若同时设置了 UDP 连接的外部端口(如5060)和转发到内网主机地址的不同端口(如5070,与外部端口不同),内网主机也会收不到这一连接(这里假设主机的服务端口改在了5070)。

若将UDP连接的外部端口和转发到内网主机的端口均设为5060的话,内网主机能正常收到连接。

进一步试验还发现,若将UDP连接的外部端口省略或设成任意端口号,而转发到内网主机的端口号保持正确(5060),内网主机都能正常收到连接

上述现象均可再现,也完全不符合有关规则。初步感觉是生成IPTABLES规则的有关程序脚本把src_dport 和 dport混淆了。

请高手验证。
发表于 2011-10-27 23:45 | 显示全部楼层
抓包研究吧...哦,试试H.323
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-6-11 13:58

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com

快速回复 返回顶部 返回列表