2014年2月9日日曜日

外部ネットからXbeeWiFiに接続できました

XbeeWiFiの使い方として、外部ネットへデータを取りに行く作例を見かけます。(=XbeeWiFiがクライアント側)
しかしその反対にXbeeWiFiへ接続しに行く(=XbeeWiFiがサーバ側)例を見かけず、かつ私が
そのような使い方をしたかったので実験してみました。

実験環境は上記の通りです。無線LANルータにてポート開放設定を行いました。

今回の実験のポイントは下記2点です
・無線LANルータとXbeeWiFi間にPCとLANコンバータを間に入れ、WIRESHARKを用いてポート9750番のパケットのモニタ環境を構築
・XbeeWiFiが受信したデータを確認すべく、X-CTUのコンソールにてXbeeWiFiのUARTをモニタ

実験内容および結果

①ポート開放確認
 まずはポート開放の確認を行いました。ポート開放のチェックに使ったサイトはこちら→https://www.cman.jp/network/support/port.html
 チェックはOKでした。WIRESHARKからもパケット確認できます。

②PCからグローバルIPに向けて通信テスト
TeraTermからグローバルIPを指定して通信テストを行いました。
ポート開放はできているのに通信できない、しかもパケットそのものがXbeeWiFiに到達していないのでここでドツボにはまりました。。。ルータのFW切っても変化せず。色々試しましたがダメでした。
ここでポート開放のパケットを眺めていてあることに気づきました。
”WANに出たパケットって送信元と送信先のIP同じだから通信できないんじゃね?”

③スマホから通信テスト
同じグローバルIPでの接続がだめなら、ということでスマホから接続テストを行いました。
スマホのアプリは「Telnet / SSH Simple Client」を使いました。 https://play.google.com/store/apps/details?id=apc.android.tool.telnet
ちょっと見づらいですがXbeeWiFiからXBBBBBの文字列、スマホからyeahhhと送れました。

と、いうことで普通にポート開放やれば難なくできました。
今まで悩んでたのはなんだったのか・・・orz