STUNサーバーをつくりながら、NATの構成を推測する方法を解説していきます。
※ 制限のあるNAT配下で、通信をできるようにする方法については、後回しにします。
気になる方は「udp hole punching」とかで検索してください。
○もっとも厄介な制限
もっとも、厄介な制限はなんでしょうか? それは、UDPの使用に制限がかかっている場合です。
まずは、UDPの使用をできる事を確認してみましょう。
○サーバーに問い合わせて確認する
UDPの使用に制限があるかはアプリからは判断できません。なぜならば、 制限を加えているのは、主にルータだからです。なので、実際に外部のUDPサーバーと通信してみるより方法がありません。
外部のUDPサーバーに アクセスしてみて返答があれば、UDPが使える。返答がなければUDPが使えない。として判定できます。
○ 作った見よう
本書では、NAT越えをじょじょ広げていき、Stunにサーバーもどきを作っていきます。ただ、UDPが使用可能かのチェックをするのに必要な最小のこ構成は、「外部に返答を返すUDPサーバーを用意する」だけです。
早速用意してみました。
やった事
- Serversman で、vpsを借りる。
stunを実現するには、ipアドレスが2つ必要です。Standardプラン以降のものを準備する必要があるでしょう。もちろん、P2Pアプリとして実現するのであれば、Entryプランを2つ取得しても良いでしょう。http://kyorohiro.blogspot.jp/2013/07/blog-post.html
- 確認用に作成したコード
サーバーから見えているクライアントのアドレスとポートを返すだけのアプリです。 https://github.com/kyorohiro/Hetimatan/blob/master/Hetimatan/src_nat/net/hetimatan/net/stun/HtunServer.java
○ 次回
Stunもどきの判定能力をじょじょにあげていたいと思います。次回はフルコーンNATかを判定してみる予定です。
0 件のコメント:
コメントを投稿