2018年1月28日日曜日

v6プラスでポート開放してみた

先日購入したネットワークカメラ(エレコム NCC-EWF100RWH)の映像を、外出先からでも見られるように、v6プラスで「ポート開放」してみました。


■はじめに

よく「v6プラスはポート開放が出来ない」と言われますが、これは半分間違いです。
確かに自由にポート開放出来るわけではないのですが、一部のポート番号はルーターさえ対応していれば利用可能なのです。


■ポートの制限

v6プラスでは1つのIPv4グローバルアドレスを複数人で共有している都合上、使えるポートは1契約で240個までに制限されています。
また、240個以内なら何でも使えるわけではなく、あらかじめ自分に割り当てられたポート番号しか利用できません。
たとえば80番ポートでWebサーバーを公開しようと思っても、v6プラス環境では勝手には出来ないわけです。
この辺りがよく「ポート開放出来ない」と言われてしまう理由ですね。

一方、自分に割り当てられたポート番号であればポート開放は可能です。
ルーターをきちんと設定してやることで、v6プラス環境であってもネットワークカメラやNAS装置をインターネット側から利用できるようになるでしょう。

■IPv6アドレスを確認する

それでは、今のv6プラス契約で「自分が何番のポート番号を使えるのか」を確認してみましょう。
自分が使えるポート番号は、自分のIPv6アドレスのプレフィクス(前半部分)から計算で求めることが出来ます。
(つまり、使えるポート番号は人によって変わるわけですね。)

まず最初に自分のIPv6アドレスを調べます。
IPv6アドレスは、ルーターのステータス画面などでも確認できますが、こちらのサイトを利用した方が手っ取り早いでしょう。

IPv4/IPv6接続判定ページ
http://kiriwake.jpne.co.jp/

このサイトへアクセスすると、画面上部にあなたのIPv6アドレスが表示されますので、これを控えておいてください。


あと、ここで「判定開始」を実行しておくと、試験結果にあなたのWAN側の「IPv4アドレス」が表示されるので、ついでに控えておくと良いでしょう。
(「IPv4アドレス」は外出先からカメラにアクセスする際の接続先になります)

■使えるポート番号を求める

IPv6アドレスから利用可能なポート番号を求める方法について、こちらのサイトで紹介されていました。

風柳メモ:v6プラス関連の覚え書き
http://furyu.hatenablog.com/entry/20161008/1475860031

どうやら、IPv6アドレスの一部を切り出してきて、そこからポート番号を計算するようです。
実際に以下のようなIPv6アドレスを例として、利用可能なポート番号を確認してみたいと思います。

<IPv6アドレスの例>
240b:1234:1234:7100:abcd:abcd:abcd:abcd

このIPv6アドレスを構成するコロン(:)で区切られた8つのブロックのうち、4番目のブロックの先頭2文字に注目です。
(この例だと、「 71 」になります)

利用可能ポート範囲

上記のサイトで紹介されていた法則を参考に、IPv6アドレスから抜き出したポートセットID(この例では 71 )の頭と尻に連番を付けて、4桁の16進数にすると、利用可能なポート番号は以下の範囲であることが判ります。

1710171f (16進数)
2710271f (16進数)
3710371f (16進数)
4710471f (16進数)
5710571f (16進数)
6710671f (16進数)
7710771f (16進数)
8710871f (16進数)
9710971f (16進数)
a710a71f (16進数)
b710b71f (16進数)
c710c71f (16進数)
d710d71f (16進数)
e710e71f (16進数)
f710f71f (16進数)

v6プラスで使えるポート番号は、上記のように16個の連続したポート番号の範囲が、全部で15セット。
合計で240個になります。
これを見やすく10進数に直すと以下の通り。

 5904~ 5919
10000~10015
14096~14111
18192~18207
22288~22303
26384~26399
30480~30495
34576~34591
38672~38687
42768~42783
46864~46879
50960~50975
55056~55071
59152~59167
63248~63263

240個が連続しているわけではなく、結構、細切れですね..
尚、これはほんの一例です。
先に述べたように、使えるポート番号は人によって異なりますので、かならず自分の環境で確認するようにしてください。

あと、計算が面倒だという人には、こんなサイトもあります。
http://ipv4.web.fc2.com/map-e.html

自分のIPv6アドレスを入力するだけで、使えるポート番号を算出してくれました。
便利なサイトを作ってくれた人に感謝です。

■ネットワークカメラ側の設定

さて、v6プラスで使えるポート番号が確認できたところで、実際にインターネットに公開したいデバイスを設定します。
今回は、エレコムのネットワークカメラ NCC-EWF100RWHが利用するポート番号を変更してみます。

この機種(NCC-EWF100RWH)ではWebアクセス用とストリーミング用にポート番号が2つ必要ですので、上で調べた範囲の中から実際に利用するポート番号を2つ選びます。
他に予約されている可能性のあるポート番号とバッティングしないよう、特に用途の決められていない「ダイナミックポート」と呼ばれる範囲(49152~65535)から選んでおくのが無難でしょう。
とりあえず、今回は後ろの方から適当に2つ選んで、「63250」 と 「63251」 を使うことにしました。

ブラウザでネットワークカメラの設定画面を開いて以下のように設定します。

  • 「基本設定」-「ネットワーク設定」


HTTPポートの設定を変更する
( 80 → 63250


  • 「基本設定」-「RTSP設定」


RTSPポートの設定を変更する
( 554 → 63251


■v6プラス対応ルーター側の設定

使用しているルーターは、バッファローのWXR-1900DHP3です。
ポート開放の設定方法は普通のインターネット接続(IPv4 PPPoE)の時と変わりません。

(詳細設定)
 -【セキュリティ】-【ポート変換】



  • グループ:適当な名前を設定します。
  • Internet側IPアドレス:「エアステーションのInternet側IPアドレス」
  • プロトコル:「TCP/UDP」で「任意のTCPポート」を選択し、調べたポート番号を設定しておきます。
  • LAN側IPアドレス:公開したいデバイスのLAN側IPアドレスを設定します。
  • LAN側ポート:省略。(WAN側と同じという意味になります)


同様に、もう1つのポートの設定も追加しておきます。

以上で設定完了です。

■スマホで動作確認

それではスマホでカメラからの映像を見られるようにしてみましょう。
普通のWebブラウザでも映像は確認できますが、スマホに専用の視聴アプリ「Skylink View II」が用意されているので、これを使ってみたいと思います。



アプリのインストールが完了したら、カメラの情報を登録します。


接続モードに「IP」を選択し、IP欄にはルーターWAN側のIPv4のグローバルアドレスを指定します。
Port欄には、ネットワークカメラのHTTPポート(ポート開放済み)を設定しておきます。


これで無事、ネットワークカメラの映像がスマホで確認できるようになりました。