如题!

解决方案 »

  1.   

    一般这种情况都是需要转发的,不管是TURN还是SPAN.
      

  2.   

    http://www.moon-soft.com/doc/44949.htm
      

  3.   

    A NAT -- 简称AN
    B NAT -- 简称BN
    S 服务器A 192.168.0.2 AN 218.133.155.190:3000 <--------+
                                                   |--------> S 61.21.160.18:8000
    B 192.168.0.2 BN 218.133.155.200:4000 <--------+假若A要连接B,A首先向S发出一个请求,S通知B要求向A发出一个打洞的包,AN收到BN这个打洞包肯定会丢掉,因为在AN的记录中找不到与BN连接过的session,虽然AN没有理会BN发过来的那个包,但BN那里已打开一个新的session(218.133.155.200:4001--218.133.155.190:3000)4001这个端口只是猜测的,许多NAT都是不规则分配的.好了这时再由AN向BN发一个打洞包,当然BN也不会理AN发过这来的这个包.在这里AN也分配了一个新的session(218.133.155.190:3001--218.133.155.200:4000)3001也是猜测的,当然这次连接就没有成功.我来分析一下:
    BN新分配的session(218.133.155.200:4001)向AN(218.133.155.190:3000)打洞
    AN新分配的session(218.133.155.190:3001)向BN(218.133.155.200:4001)打洞BN(218.133.155.200:4001) ------> AN(218.133.155.190:3000)
    BN(218.133.155.200:4000) <------ AN(218.133.155.190:3001)刚好是阴差阳错,两个人都无法碰面.我的问题是在这里有没有办法遇测得到对方NAT将要分配的新端口,如果是用猜测端口的话成功率几乎是很低的,或是用线性搜索(就是用穷举)这种暴力方法成功率也不高.--------------大家有没有什么好的方法,或是谈谈自已的看法,谢谢!!!
      

  4.   

    修改:
    -----------------------------------------------
    我来分析一下:
    BN新分配的session(218.133.155.200:4001)向AN(218.133.155.190:3000)打洞
    AN新分配的session(218.133.155.190:3001)向BN(218.133.155.200:4000)打洞
      

  5.   

    TO:DentistryDoctor(MVP称号也不能顶上缺失的文凭(厚积薄发)) ( )
    -------------------------------------------------------------
    不知道你说的转发是什么意思,到底能不能穿透?
      

  6.   

    www.sourceforge.net 好像有专门的P2P技术之NAT穿透防活墙技术的资料哦
      

  7.   

    如果有一方是SNAPT那可就麻烦了,端口要猜测,成功的几率太小了,
      

  8.   

    Symmetric NAT 现在还是很多,我现用的就是一部对称的NAT,不晓得其它软件如QQ,QQ直播,BT等软件是怎样解决这个问题的,我想如果通过服务器中转只是简单的文本聊天的一些数据,像视频流这些东西不可能用服务器中转吧,这样的话服务器压力太大了.
      

  9.   

    现在不谈TCP怎么穿透,先把Symmetric NAT穿透搞定再说.
      

  10.   

    BT是开源的:
    http://sourceforge.net/projects/bittorrent
      

  11.   

    TO:laiyiling(【陌生人】) ( ) 信誉:527 
    谢谢,可是下不了!有的开源项目并没有把它关键的技术开源,所以有时看别人写的代码也很难理解
      

  12.   

    TO:ximenying(西门) ( ) 信誉:100 
    你能穿透对称NAT吗?
      

  13.   

    TO:ximenying(西门) ( ) 信誉:100 
    --------------------------------------
    那么多资料有穿透对称NAT的吗?TO:HuangRG(.....) ( ) 信誉:94 
    ---------------------------------------
    可有的NAT不是按规律性来分配端口
      

  14.   

    我来说一说我的方法,我觉得可以:
    BN新分配的session(218.133.155.200:4001)向S,S记住session(218.133.155.200:4001)并告诉AN
    AN新分配的session(218.133.155.190:3001)向S,S记住session(218.133.155.190:3001)并告诉
    BNBN(218.133.155.200:4001)向AN(218.133.155.190:3001)打洞
    AN(218.133.155.190:3001)向BN(218.133.155.200:4001)打洞不知道我的方法可不可以。
      

  15.   

    coolhunter() ( ) 信誉:100 
    ------------------------------------
    Symmetric 类型的NAT不行!
      

  16.   

    mynamelj(风之羽翼) ( ) 信誉:105 
    ------------------------------------
    Symmetric 类型的NAT是什么样的,为什么不行,那要怎样做?
      

  17.   

    大家不要老盯着穿越Symmetric 类型的NAT不放,对这种穿越困难的最好的办法就是不穿越它,直接转发,很多人可能觉得这样的话服务器承受不了,那你就考虑分布式转发,这个才是目前来说的终极解决方案
      

  18.   

    这个分不好拿啊,可惜是VC俺不行,C#或VB也许可以回答下。
      

  19.   

    TO:ximenying(西门) ( ) 信誉:100 
    ----------------------------------------------
    如果实在不行,我会考虑你的意见的,谢谢!TO:yespie(yespie) ( ) 信誉:100 
    ---------------------------------------------
    这跟VC没啥关系!
    欢迎大家继续讨论这个问题,相信也有很多人想被这个问题所困绕着...
      

  20.   

    帮定,我连TCP穿透都不会呢,哈哈
    是这样的,A B ,要与C服务器相连,但C通过 传输层 验证(修改TCP定义,增加了一部份头字节)A与C已经连接上了,但是B为通过验证,因此希望能够通过A代理与C连接,但是,代理的时候,这部分头字节没有了,因此无法通过C的验证,怎么办?
      

  21.   

    也想知道怎么穿透对称的NAT网络,严重关注此贴!
      

  22.   

    想了想感觉理论上好像不怎么行得通,除非在打洞得同事,引发nat设备将自身
    情况也发送到对方,但是对方同样会拒绝得呀~~
    没折了,期待达人出现指点!
      

  23.   

    我有想法,不知道这个想法行不行得通.就是A-->B打洞时,希望A能够得自已NAT设备分配的新端口,不知道怎样才能获得这个新分配的端口,如果能够获得的话,我们穿透Symmetric NAT就有望了!!!
      

  24.   

    请问下那怎么判断自己的NAT是否为对称或非对称NAT呢,谢谢
      

  25.   

    个人觉得你说的这样肯定不行,我主要考虑了以下几点:1、防火墙类型不一样,NAT转换时不一定给你应答,只是丢弃掉,甚至你PING都不通
    2、如果可能,必须使用地址欺骗,也就是你伪造B的请求应答包,这样BN才能将此包放行穿越BN
    3、如果你仅仅只能控制A,那么AN你无法控制发出欺骗包
    4、根据路由协议,你用暴力方法获得SESSION肯定是不可行的,因为BN上注册的SESSION和你的这个很难应对,而且会不定时更新。
      

  26.   

    tomcat_jb(老猫) ( ) 信誉:98 
    -------------------------------------------
    非常感谢你的回答,再次感谢!!我也曾想过用地址欺骗,但是有个问题你在NAT后面做手脚是没用的,NAT转换后的这个地址还是还是你原来的地址.
    能留个MSN,QQ吗?
      

  27.   

    客气了,以前做过防火墙相关开发所以对这个比较熟悉。NAT是应用比较广泛的一种技术,基本上可以防止大部分的非法连接。公司研发环境不能上外网,我是通过公司公共代理出来的,工作时间不能上MSN QQ 呵呵。
      

  28.   

    To:mynamelj(风之羽翼)  我刚开始研究这个,希望能够得到你的指导,呵呵,我msn:sandpiper112 @  hotmail.com
      

  29.   

    我在测试shootingstar的UDP打洞的程序时,出现一些问题,经过分析,
    怀疑有一边为对称NAT,所以通讯没有成功,只是现在不知道怎么判断对称NAT
      

  30.   

    skype都是转发的,对于对称的NAT
      

  31.   

    TO:renkunpong(大灰很) ( ) 信誉:100 
    -----------------------------------------
    谢谢!难道连语音也是转发的吗?
    vivimimi(asm_asm) ( ) 信誉:100 
    -----------------------------------------
    谢谢!你那个跟本无穿透对称NAT.
      

  32.   

    对称NAT可以用TCP穿透把!~
    我对这个了解不多,不过网上有篇文章(只有摘要),可以不能看全文,要钱哦
    http://www.wanfangdata.com.cn/qikan/Periodical.Articles/njydxyxb/njyd2006/0601/060117.htm
      

  33.   

    我对这个了解不多,不过网上有篇文章(只有摘要),可以不能看全文,要钱哦
    http://www.wanfangdata.com.cn/qikan/Periodical.Articles/njydxyxb/njyd2006/0601/060117.htm
    ------------------------------------------------------------------------------------
    fuck这种人,国外一些人写的技术文章比他们牛多了都是大家可以免费学习的,他们还来
    这套,垃圾!
    其实穿透对称NAT设备的难点就是怎么知道对方的端口,也就是怎么可以让对方
    知道你打的洞在什么地方,这样P2P有效会话才可以建立起来,要是能够知道对称
    NAT设备分配端口的策略,根据以前的情况也许可以建立合适的算法进行尝试的吧。
    我感觉问题是要知道对称NAT设备怎么为每个会话分配端口的
    知道的都来讨论,不要不回贴,肯定会有结果的!
      

  34.   

    http://www.moon-soft.com/doc/44949.htm 我也要鄙视这几个抄袭的高校垃圾!
    原文连接:http://www.it46.se/wsis/show_entry.php?id=31
      

  35.   

    现在所有UDP穿孔都是通过服务器转发一次,就可以相互连接了,中间要服务器当一个中间人,让双方连接,然后断开,不知这个技术是不是你想要的....
      

  36.   

    关注一下
    以前做过对称NAT穿透的简单分析,一直没有解决思路就放弃了
    希望楼主能够尽快找到方法
      

  37.   

    正在研究这个问题,关注ing
      

  38.   

    晕,楼上发错了。
    能不能通过收到的包解析出新的端口呢?
    我的想法是这样的,先讨论一个sym一个cone的情况:
    client b(cone)向client a(sym)发包,这样a的包b就能够接受了,所以这个时候client a用新的端口发出的包client b就能够就受到,解析出该包的a新端口可以不?
      

  39.   

    还没讨论出来结果啊?呵呵,我想起来,可以通过VPN的模式,建立加密隧道实现穿越防火墙。
      

  40.   

    Cone NAT 可以 但Symmetric 貌似不行啊,因为大家都不知道对方新的Port了。
    楼主不能用Cone NAT吗?
      

  41.   

    TO:tomcat_jb(老猫) ( ) 信誉:98 
    --------------
    可以说详细点吗?saince(搜猫) ( ) 信誉:100 
    --------------
    我也想用Cone NAT啊,不可能所有的用户都是Cone NAT吧!
      

  42.   

    每必要把,你在连接时避免 IP Restrict 与 Symmetric, Symmetric与Symmetric的连接就可以了,
    通过STUN协议就可以搞定。
      

  43.   

    http://www.linuxforum.net/docnew/showflat.php?Board=new&Number=727
      

  44.   

    需要服务器帮助知道是哪个端口在监听或者UDP的哪个端口在向外发数据,然后根据各自的网络类型来判断如何穿透.
      

  45.   

    楼主的建议了解一下Symmetric NAT.
      

  46.   

    具体算法我也不太清楚,只是了解这个产品,能够实现你需要的功能,估计其中必然有类似的算法可以实现穿越。你可以在网上搜索一下vpn的介绍,特别是SSL VPN的。
      

  47.   

    1。服务器中转
    2。UPNP影射能解决一部分内网互连
    3。一般的NAT可使用STUN协议,进行UDP PUNCH HOLE。。
      

  48.   

    看的书说,symentic napt,由于重分配的端口不能确定,所以,直接的互相发送消息来打洞,不能成功的.
      

  49.   

    为什么一定要解决Symmetric与Symmetric的连接问题?现在的开源的P2P软件,还没有哪个实现了。就算费那么大劲,去扫描端口,运气好可能连上,但这个代价值得吗?Symmetric可以跟IP Restrict 与 Symmetric外的连接上,通过第三方(客户端)来中转就可以了,服务器的负担并没有变大。Symmetric与 Symmetric穿透,有什么非解决不可的理由吗?
      

  50.   

    TO:fastxyf(迅影) ( ) 信誉:95    Blog 
    --------------
    你说得有道理我接受,我只是想证实一下道底能不能穿透.
      

  51.   

    呵呵,如果端口扫描,应该是有可能通的吧!
    如A要跟B通:
    A->B B连服务器的端品为20000,如果NAT之后开的端口映射是递增的,那可以这样
    分别给B的20000 - 20200发打洞包.
    如 A本地端口   B端端口  A端NAT端口
       2000         20001    30001
       2000         20002    30002
       2000         20003    30003
       2000         20004    30004
              ....同样 B->A A连服务器的端品为30000,
    分别给B的30000 - 30200发打洞包.
    如 B本地端口   A端端口  B端NAT端口
       5000         30001    20001
       5000         30002    20002
       5000         30003    20003
       5000         30004    20004
        ....
    这样来回扫描几次的话,运气好有可能会碰上吧.如果NAT的映射是没有规律的,那基本上就没有办法了