清水理史の「イニシャルB」
IPv6ならネットから直接アクセスできる? 試して確かめよう
2019年1月15日 06:00
「v6プラス」や「transix」など、IPoE IPv6を利用したインターネット接続サービスでは、どのようにセキュリティが確保されているのだろうか? 外部からのアクセスが、どこでどう遮断されているのかを確認してみよう。
IPv4と違い、IPv6ではNATが使われない
従来のIPv4のネットワークでは、いわゆる「NAT」によって、グローバルな世界とプライベートな世界が分割されてきた。環境による違いはあるが、簡単に図にすると右のようなイメージだ。
インターネットに直接接続するには、インターネット上で使われているグローバルIPアドレスが必要だが、このアドレスには数に限りがある。このため、通常はルーターのWANポートに1つのみ動的に割り当てられ、家庭内のネットワークではプライベートIPアドレスを利用する。
このプライベートIPアドレスとグローバルIPアドレスを変換する仕組みがNATだ。厳密には、アドレスだけでなくポートも変換されるので、「NAPT」や「IPマスカレード」と呼ぶべきだが、ここでは大きくNATとしておく。
NATは、IPv4の枯渇に対応するための技術だが、この仕組みによってある程度のセキュリティも確保されてきた。具体的には、内部から外部への通信と、それに対する返信を変換する一方で、外部から内部へのアクセスは通常は変換しないようにすることで、外部と内部のネットワークを分離していた。
このため、従来はNASへのアクセスを許可したり、ゲームでの対戦用の通信を許可するために、ポートフォワードなどの設定が必要だった(機種によってはIPv4のフィルタ設定も必要)。
これに対して、IPv6を使ったインターネット接続環境では、→の図のように、基本的にすべてのアドレスが「グローバル」の扱いとなる。
実際、家庭内のネットワークに接続された端末のアドレスを調べてみると、グローバルなアドレスであることが分かる。IPv6では、範囲によってアドレスの用途が決められているが、ざっくり「2」から始まっていればグローバルのアドレスと考えて差し支えない。
インターネット上からLAN上のPCへアクセスできるのか?
さて、ここでひとつ疑問が沸いてくる。
インターネット上から、LAN上のPCに割り当てられたグローバルなIPv6アドレスに対してアクセスしたら、どうなるのだろうか?
早速、実験してみよう。
別の回線で接続したPCから、先に調べたIPv6アドレスに対してPingを実行してみると、次のようになる。
当然と言えば当然なのだが、タイムアウトになり、アクセスできない。これは、経路上で外部からのアクセスがフィルタによって遮断されているためだ(IPv4にもフィルタ機能はあるが、市販の家庭用ルーターではあまり意識しなくてよかった)。
では、通信がどこでどうフィルタされたのかを順番に確認していこう。
と、その前に、今回テストしたネットワーク構成を右に示す。筆者宅は、ひかり電話契約ありのフレッツ光回線なので、回線にホームゲートウェイ(PR-500KI)が接続され、その配下にAterm WG2600HP3が接続されている。回線はDS-Lite方式のtransix(IIJ)だが、今回はIPv6の話なので、transixでも、v6プラスでも話は同じだ。
なお、本コラムでは、不用意にフィルタを無効化したり、安易にフィルタを通過させるよう設定を行うことの危険性の解説を目的としている。以後の設定は、セキュリティ上のリスクにつながる可能性があるため、試す場合は自己責任でお願いしたい。
ホームゲートウェイでフィルタを設定
まずは、最も上流にあるホームゲートウェイからチェックしていこう。筆者宅のホームゲートウェイはPR-500KIという機種だが、この製品では、詳細設定の「IPv6パケットフィルタ設定(IPoE)」の画面で、「IPv6ファイアウォール」が既定で有効に設定され、外部からのパケットが遮断されていることが分かる。
さらに、画面に赤字で書かれているが、セキュリティレベルが既定で「標準」で設定されている。これは、フレッツ光ネクストの網内での折り返しを許可し、インターネット側からのそのほかのIPv6通信を遮断する設定だ(網内も許可しないなら「高度」を推奨)。
第1段階として、ここで通信が遮断されているので、試しにpingのみ通過するようにフィルタを追加した上で、再びpingを実行してみよう。
この状態でも、まだLAN内のPCにはアクセスできない。インターネットからのアクセスでの第1の関門はホームゲートウェイのフィルタだが、ここを許可するだけでは、まだLAN上のPCには通信できないことになる。
ただし、ホームゲートウェイにフィルタを追加する設定をすると、ホームゲートウェイ直下の端末には、インターネット側からアクセスできるようになる(pingが通る)ので注意してほしい。市販のルーターを使わず、ホームゲートウェイのみでインターネット接続をしている場合は、特に要注意だ。
Aterm WG2600HP3の「ND Proxy」で遮断
続いて、間に設置しているWi-Fiルーターの設定をチェックしていこう。
今回、利用したAterm WG2600HP3には、「ND Proxy」という機能が搭載されており、接続モードにv6プラスやtransixを選択した場合、「ND Proxy」が有効に固定され、変更できない仕様になっている。
ND Proxyは、IPv6のパケットを、ルーターを介して通信するモードだ。これにより、IPv6ファイアウォール(ステートフルパケットインスペクション)やIPv6パケットフィルタリングが有効になる。
何も考えずに標準設定で使っている場合は、これらの機能によって、外部からのIPv6通信が遮断されるようになっている。
このため、ここでも試しに「IPv6パケットフィルタ設定」へICMPv6を通過させるエントリを追加し、もう一度、pingをチェックする。
この状態でも、PCに対しては、まだpingは通らない。第2の関門も通過したはずだが、まだ壁があるわけだ。
ただし、ここまで設定すれば、ルーター配下の端末、つまりLAN上の機器に対して、インターネット上からアクセスできることになる。PCからまだアクセスできない理由は後述するが、ゲーム機、ネットワーク家電、IoT機器など、ファイアウォール機能を備えない機器は、この時点でアクセス可能になるので注意したい。
IPv6の通信もフィルタで守られている
このように、IPv6では、LAN上のPCに対して、グローバルなアドレスが割り当てられる。このアドレスは、インターネット上のサーバーと同様に、世界中のネットワークからアクセス先として指定可能なものだ。
ただし、実際には、通信機器のフィルタなどによって、インターネット側からLAN内部に対しての通信が遮断されるようになっているため、グローバルなアドレスと言っても、基本的には外部からアクセスすることはできない。
今回のテスト環境では、ホームゲートウェイ、ルーター、Windows Defenderファイアウォールの3つで遮断されていたが、環境によってはホームゲートウェイとWindows Defenderの2つ、端末上での保護がないIoT機器などであれば、ホームゲートウェイのフィルタ1つのみで保護されることになる。
つまり、フィルタが命綱となるわけだ。
一方、外部からのアクセスを受け付けたい場合、IPv4ではポートフォワードを利用したが、IPv6ではNATは使われないため、フィルタを通過させる設定が必要になる。フィルタの機能そのものを無効にしたり、今回の例のように特定の通信のみを許可するルールを追加すれば、こうした機器などのフィルタを通過させることができる。
NASへのアクセスや、ゲームでの通信など、限定された用途では設定が必要になるが、設定方法次第では、配下の端末にインターネット上からアクセスできてしまうことになるので、厳重な注意が必要だ。どうしても、通信を許可しなければならないときは、特定のポート、かつ特定の端末に対してのみ通信を許可すべきで、フィルタ自体を無効化したり、宛先anyでルールを追加するようなことは避けるべきだ。くれぐれも慎重に設定してほしい。
よく分からなければ、IPv6関連のファイアウォールやND Proxyを無効にしたり、不用意に通過ルールを追加したりしないことが大切だ。
【お詫びと訂正 1月16日 15:36】
記事初出時、テスト環境に用いているWi-Fiルーターの型番の一部が誤っておりました。お詫びして訂正いたします。
誤:Aterm WG2600HP2
正:Aterm WG2600HP3