場景:
設備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,所以對端發包打洞是不能通的。
下一步:
找個能打洞的場景,繼續測試,看能否打洞成功