IPv6通信にNDプロキシを指定すると安全になるとはどういうことか


2020-07-02 追記

微妙に放置気味で申し訳ありません。安全かどうかという点については、小川晃通さんの解説記事がとても参考になります。
https://www.geekpage.jp/blog/?id=2020-6-25-1

また、無料でIPv6本も公開されていますので、そちらも参照ください。
https://www.geekpage.jp/blog/?id=2018-7-4-1
https://www.geekpage.jp/blog/?id=2020-1-22-1
ちなみにこの本、物理で買ってサーバ横に置いておくことで不具合を抑える縁起物となっております(効果には個人差があります)。

# TL;DR

「NDプロキシ」は、バッファロー製ルータの設定項目。
設定としては「IPv6パススルー」か「NDプロキシ」選べるんだけど、

- 「IPv6パススルー」はIPv6パケットをブリッジするだけなので超危険。
- 「NDプロキシ」だと、IPv6ブリッジをやめて、IPv6ルータとして機能。
   そうするとネットワーク層フィルタを通るようになる製品仕様なので安心。
   その際、ND proxy(RFC4389)も行うので、「NDプロキシ」って名前が付いている。はず。

# ことの発端

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">NATの内側という心理的安全性。<br>やっぱIPv6にも欲しい</p>&mdash; sumo (@sumomoneko) <a href="https://twitter.com/sumomoneko/status/954519991486828544?ref_src=twsrc%5Etfw">2018年1月20日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">NDプロキシという機能を持つブロードバンドルーターだとIPv6でもファイヤウォールというか不要な通信はフィルターしてくれるらしいです。 <a href="https://t.co/fnaqeIjQat">https://t.co/fnaqeIjQat</a></p>&mdash; まーくん@金沢 (@markun891) <a href="https://twitter.com/markun891/status/954543754932703233?ref_src=twsrc%5Etfw">2018年1月20日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

NDプロキシ、そんな機能追加されたん？

# 規格にあたる

ND proxy は [RFC4389](https://tools.ietf.org/html/rfc4389) で説明されています。

>Bridging multiple links into a single entity has several operational
>advantages.  A single subnet prefix is sufficient to support multiple
>physical links.  There is no need to allocate subnet numbers to the
>different networks, simplifying management.  Bridging some types of
>media requires network-layer support, however.  This document
>describes these cases and specifies the IP-layer support that enables
>bridging under these circumstances.
>
>(意訳)
>
>複数のリンクを一緒に扱うことができれば、何かと便利です。単一のサブネットプリフィックスで、それらのリンクを扱うことができます。別々のネットワークに別々のサブネットを割り当てる必要がなく、管理が簡単になります。
>しかしながら、ネットワーク層のサポートがないと、ブリッジ出来ないメディアも存在しますよね。
>本ドキュメントでは、このような場合のネットワーク層でのサポート方法について定義します。

なんかセキュリティ関係ないような...


もうひとつ、 [RFC7084](https://tools.ietf.org/html/rfc7084) とそこから参照される[RFC6092](https://tools.ietf.org/html/rfc6092)に、セキュリティに関する要求があるんでフィルタするんでは、という指摘もいただきました。
ざっと確認すると、

 __カスタマ構内設備としてのルータたるもの、パケットフィルタは実装せよ(SHOULD)__

という話でした。ND proxyとの関係までは読みきれず...


## ググる

やっぱりマーケ用語じゃないのかとあたりをつけ、さらにググりました。
バッファロー製ルータの[更新履歴](http://buffalo.jp/download/driver/lan/rireki/wxr-1900dhp_fw-win.txt)に「NDプロキシ」の内容説明がありました。

```
●Ver.2.32 → Ver.2.33 [2015.4.16]
  :
  :
【機能追加】
・IPv6機能において、「NDプロキシ」機能を追加しました。
　IPv6サービスをご利用の場合、本機能を使用する事で、
　従来のIPv6パススルー機能よりもセキュリティーの高いIPv6通信をご利用頂けます。
　本機能は[Internet]-[IPv6]-「IPv6接続方法」より設定できます。

　NDプロキシ機能は以下の動作を行います:
　 - 「IPv6パススルー」機能同様にWAN側/LAN側のIPv6アドレスを同一プレフィクスで利用できます。
　 - WAN側ポートとLAN側ポートの間での通信に対し、ルーターと同様の設定でフィルター動作を行う事で、
　   セキュリティーを確保する事が可能となります。

　NDプロキシ機能の追加に伴って、仕様が以下のとおりに変更されます:
　 - [Internet]-[IPv6]-「IPv6接続方法」において、「Internet@Start」選択時に
　   従来「IPv6端末モード」が選択される回線にて、「NDプロキシ」が選択されるよう変更しました。
　   尚、同項目の「パススルーを許可する」にチェックをつけている場合は
　   従来通り「IPv6パススルー」機能が選択されます。
```

なるほど。

ちなみに他の会社はといいますと、

http://akogare.hatenablog.com/entry/ipv6-passthrough

>- バッファロー：NDプロキシ機能（Neighbor Discovery Proxy）
>- IODATA：IPv6 SPI機能（IPv6 Stateful Packet Inspection）

という状況のようです。


# おわりに

これで安心して「NDプロキシ」という言葉を使えるようになりました。

というか平成も終わろうとするいま、一般ご家庭向け製品なのにIPv6パススルーってそれ、YBB! ADSL初期の「ひとんちのパソコン名見えるよ！」レベルの設定存在するってどうなの...