P2P打洞中遇到的問題

場景:

設備A通過一臺聯通的路由器上網,設備A通過有線連接路由器

設備B是一臺手機是移動2G

協助服務器是電信網絡

附:設備A和設備B經過ip.cn網站測試發現各自的外網地址是:

設備A: 221.4.212.2,聯通IP,相對固定

設備B: 117.136.33.128,移動IP,手機網絡經常變動

 但是通過服務器打印通信地址發現:

設備A: 113.76.153.234,電信IP

設備B: 14.215.29.119,電信IP

 貌似設備A和設備B的通信地址會全部轉換成電信的

遇到的問題:

設備A藉助外網服務器獲取到設備B的外網地址,設備B也藉助外網服務器獲取到設備A的外網地址,此時向對方設備的外網IP:Port發送數據包,雙方都收不到對方的數據包,開始完全不知道哪裏有問題


思路:

(1)開始觀察服務器對設備A和設備B的地址打印,可以發現手機的端口經常會變動,懷疑手機是對成型NAT,但是協助服務器的NAT測試結果又顯示不是的,這裏思考了很久,不得其解(後來證明確實是對稱型NAT,是NAT測試結果有問題)。

(2)此時有點懷疑移動2G是對稱型NAT,但是NAT測試結果又與懷疑相悖,後來想到了一個解決思路,就是設備B(移動2G手機)對服務器的兩個地址61.11.11.23:3478和61.11.11.23:3479通信,然後觀察服務器的對端(設備B)地址打印,發現打印的結果是,設備B的通信地址類似:110.0.0.2:3456和110.0.0.2:5678,此結果正好對應的是對稱型NAT的特徵

(3)還是不清楚到底什麼地方有問題,只能看代碼,跟蹤服務器的NAT測試代碼,結合打印發現,和服務器的主地址通信,設備B是有收到迴應的,但是,設備B跟服務器的副地址通信沒有收到迴應,問題找到。

(4)多次測試發現,原來是服務器的主網卡設置正常,副網卡沒有設置網關,不能正常通信,被服務器坑了,所以一定要確保服務器的兩個地址通信是OK的


結論:

服務器的兩個地址不能正常通信的話,移動2G網絡(設備B)的NAT類型測試失敗,之前是測試成了端口限制型NAT,後來測試的是對稱型NAT,正是因爲設備A是端口限制型NAT,設備B(手機)是對稱型NAT,所以對端發包打洞是不能通的。


下一步:

找個能打洞的場景,繼續測試,看能否打洞成功


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章