|||||||||||||||||||||

なんぶ電子

- 更新: 

NDプロキシって何?

NDProxy

筆者はインターネット接続にBuffaloのルーターを使っています。このルーターにはIPv6時の利用オプションで「ND Proxy」というものがあります。これを利用すると安全性が向上するという話を聞いたことがあります。

最初はそれが何かよくわからなかったのですが、こちらのページを参考にさせていただいたり、ルーターのIPv6の設定を触っているうちにわかってきた部分がありますので、まとめておきます。筆者の環境の状況的証拠のようなものをを積み上げた結論ですので、間違っている部分もあるかもしれませんが、その際はご容赦ください。

結論を先に

ごく簡単に言ってしまうと、IPv6をささえるプロトコルの一つであるND(Neighbor Discovery)用のプロキシとなります。プロキシとは一昔前「串を差す」などと言ったHTTPプロキシのプロキシと同じです。英語の意味は「代理」ですが「中継」とイメージするとわかりやすいと思います。

筆者の利用しているBuffalo製品ではその「中継」の際に、手動で設定するIPv6フィルターや動的なファイアウォールであるステートフルインスペクションにより不正な通信を遮断することができるそうです。

ルーターの内側の端末を外部から隠すという意味でIPv6版のNATだと言われたりしますが、アドレス変換はしないのでNATではありません。

ND(Neighbor Discovery)とは

ND(Neighbor Discovery)を理解するためには、ある程度ネットワークの知識が必要です。

一般的なインターネットの世界では、同一ネットワークの通信はMACアドレス、異なるネットワーク間の通信はIPアドレスを使って通信しています。

同一ネットワーク内の通信の際、IPv4においては通信先のMACアドレスを取得するためにARPというプロトコルをつかっていましたが、それがIPv6ではND(Neighbor Discovery)にかわりました。

IPアドレスを直接使って通信するのと違って、同一ネットワーク間の通信はIPv4ではARP、IPv6ではNDというプロトコルで、IPアドレスを使ってMACアドレスを取得した後に、MACアドレスを使って通信します。

またARPやNDは基本的に同一ネットワークの外にはデータを流しません。

IPv4とIPv6の違い

IPv4でのインターネット接続はルーターに対してプロバイダがグローバルなIPアドレスを付与することで実現していました。一方、IPv6では一つの契約回線に対してグローバルなネットワークアドレスが割り振られます。そして、そこに接続されている端末には一台につき一つ(以上)グローバルIPアドレスが割り振られます。これらの違いにより接続方法が変わっています。

IPv4では一つのグローバルIPアドレスしか割り当てられないので、一つのアドレスを複数の端末で共用していました。そしてその処理はルーターが受け持っていました。

IPv6では端末はグローバルネットワークに接続されていればグローバルIPアドレスが割り当てられ、通信ができるようになります。するとルーターは不要になるどころか通信の邪魔をしている状態になります。なぜならルーターとはネットワークを分割する機器だからです。

家のPCやスマホなどと、プロバイダとの間にルーターがあったのではそれらは同じネットワークにはなりません。そのためグローバルなIPアドレスを取得できなくなってしまいます。

ならば、ルーターの内側にも与えられたネットワークアドレスと同じアドレスを割り当てれば形式上は同じになると考える人もいるかもしれません。しかし通常、ルーターの両端は違うネットワークと判断されてしまいます。そのためネットワークを越えられないNDは通信ができず、ルーターのあちらとこちらでは通信ができなくなってしまいます。(そもそも設定ミス防止の観点から両端に同じネットワークを設定できないルーターがほとんどだと思います。)

そのようなことを実現したい場合は、「IPv6パススルー」や「IPv6ブリッジ」、「ネイティブ接続」と名前がついていたりする、機能を使います。それらは基本的にルーターでなにも処理せずにIPv6のデータを通過させるだけの機能です。

ちなみにこのような機能はIPv6に限ったことではなくIPv4でも存在します。この場合は「ブリッジ」と呼ばれる場合が多いです。

背後にあるのはセキュリティの問題

ルーターがデータを素通しするようになると、プロバイダから内側がすべて一つのネットワークになり、すべての端末にグローバルなIPアドレスが割り振られるようになります。

このような仕組みのメリットにより、PCの遠隔操作アプリであるTigerVNCをDDNS等に頼ることなく家庭で使うことができるようになります。

しかし、このような利便性はセキュリティリスクと表裏一体の関係にあります。それは今までルーターで利用していたファイアウォールが使えなくなってしまうことです。

端末にファイアウォールの機能が備わっているWindows10などの端末ならまだいいですが、そうではないネットワークカメラなどは外からアクセスに対して無防備な状態になってしまいます。

その際に利用するのがNDプロキシです。素通しではなくルーターの両端を使って通信の「中継」を行います。その過程で、フィルタリングルールやステートフルインスペクションでチェックを行い許可のあるものだけを、目的の端末へ転送します。

IPv6版のプロキシARP?

先にあげた結論と同じことですが、もう少し詳しく書きます。IPv4のルーターでは、プロキシARP(ARP代理応答)というARPに応答できない端末に代わってルーターがARPに応答する機能がありました。NDがIPv6におけるARPなら、少なくとも言葉としては「NDプロキシ=IPv6版のプロキシARP」となるでしょう。

実際は、NDに応答できない端末の代わりに応答するのではなく、ルーターの内側にある端末で外部と通信してもいい端末(フィルタリングされていない端末)のND応答を代理する機能なのだと思います。ルーターの内側の端末にはNDの応答はさせないことで、RAの発信元からはフィルタリング対象の端末は存在しないことにできます。

実際にBuffaloのルーターが内側にある端末のMACアドレスを記憶して本当に代理応答するのかどうかは調べていないので予想にすぎませんが、プロキシという言葉がついているということはそのような挙動になっていると思います。(そうでなければ「IPv6ブリッジフィルター」のような名前になると思います)

PPPOE

余談ですがIPv6でPPPOE接続を使っている場合は、トップ画像のような構成にはなりません。ルーターのグローバル側にはIPアドレスがわりあてられない(IPv4におけるアンナンバード接続のような)形で、ローカルにアドレスが配布されます。この接続方法の場合はIPv6でも通常通りのルーターのファイアウォールが利用できると思います。逆に、このような構成の場合はNDプロキシは利用できません。

IPv6PPPOE接続

もしこの記事を読まれて、IPv4やIPv6の違いや、そもそもIPアドレスって何だろう?と感じた方がいましたらこちらも記事にしておりますので、よろしかったら目を通してみてください。

筆者紹介


自分の写真
がーふぁ、とか、ふぃんてっく、とか世の中すっかりハイテクになってしまいました。プログラムのコーディングに触れることもある筆者ですが、自分の作業は硯と筆で文字をかいているみたいな古臭いものだと思っています。 今やこんな風にブログを書くことすらAIにとって代わられそうなほど技術は進んでいます。 生活やビジネスでPCを活用しようとするとき、そんな第一線の技術と比べてしまうとやる気が失せてしまいがちですが、おいしいお惣菜をネットで注文できる時代でも、手作りの味はすたれていません。 提示されたもの(アプリ)に自分を合わせるのでなく、自分の活動にあったアプリを作る。それがPC活用の基本なんじゃなかと思います。 そんな意見に同調していただける方向けにLinuxのDebianOSをはじめとした基本無料のアプリの使い方を紹介できたらなと考えています。

広告