この広告は、90日以上更新していないブログに表示しています。
IPv6 に慣れてしまえば、IPv6 用語を使った方がより正しい表現になるのは分かっていても、IPv4 で慣れ親しんだ用語を使わないと、なかなかイメージしづらい事が多いです。今回、意図的にIPv6 用語を最小限にした書き方にしたのも、自分自身でIPv6 用語が身についていない、というのもあります。
ということで、ちょっと用語を比較してみます。
IPv4 のプライベートアドレスに関しては、ULA*1が該当します。これは今回書いた内容にも多用しています。
若干違うのは、ULA は最初から、「保証はできないけど Unique であるように」という事を意識して、アドレスの決め方を用意している点です。IPv4 のプライベートアドレスで、「192.168.1.0/24」とかが選ばれがちで、そういうときに企業合併などで内部ネットワークをマージしなきゃいけなくなった時に面倒な事になる、という話があったのですが、ULA をきちんと計算して決めると、アドレスが衝突する事はほとんど無くなります。
一方、グローバルアドレスに関しては、GUA(Global Unicast Address)という用語が使われます。
アドレスでネットワークを表す部分とホストを表す部分は、IPv6 ではプレフィックスとインタフェース ID になります。ただし、プレフィックスが必ずしもネットワークという概念と結びつかないケースもあります。
例えば、サイトプレフィックスと呼ばれる 48bit 長のプレフィックスがあって、これは組織単位に割り当てられる、という意味合いになっています。ULA のプレフィックスの決め方も、このサイトプレフィックスの 48bit を決めるもので、このプレフィクスを分割して、通常は 64 bit のプレフィックス長でネットワークアドレスを作る、ということになります。
一方、ホスト部はインタフェース ID と呼ばれ、通常は下位 64 bit のアドレスの事を言います。正直、この「インタフェース ID」という用語は、なかなか身につかないです。
用語、というよりは、仕組みそのものが違うのですが、イーサネット上のIPv4 で、MAC アドレスと IP アドレスの関係を解決するためにARP というプロトコルがありましたが、IPv6 ではARP は使いません。その代わり、ICMPv6 の一つとして実装される、ND(Neighbor Discovery: 近隣探索)という仕組みを使います。
なので、IP アドレスとMAC アドレスの関係を確認するために「arp -a」などとコマンドを打っても、IPv6 アドレスは出てきません。Windows では netsh で、Linux では ip コマンドで、ND キャッシュの状態を表示する事ができます*2。
| IPv4 | IPv6 | |
|---|---|---|
| Windows | arp -a | netsh interfaceipv6 show neighbors |
| Linux | arp -a | ip -6 neigh |
Linux の ip コマンドの場合、「-6」を付けずに「ip neigh」とすれば、IPv4 に関してはARP キャッシュ、IPv6 に関しては ND キャッシュの両方が表示されます。
NAT が無いのは最初にも書きました。原理的にできないことはないですが、CentOS Ver.6 の ip6tables では nat テーブルが使えません*3。NAPT、いわゆる、IP マスカレードも使えません*4。ルータでもIPv6 の NAT をサポートしているものは少ないでしょう。現時点では NAT は無いと考えた方がよいです。
IPv4 では当たり前のように NAPT をしていて、それが結果的に「意図的な設定をしなければ、インターネット側からはアクセスできない」という状態を作りだし、セキュリティに貢献していた事は事実です*5。
NAT / NAPT が無いということは、普通にルータに繋いだパソコンもグローバルアドレスを持ち、インターネット側からアクセスできる事を意味します。実際、その2で紹介しているフレッツ光ネクストでの接続設定だと、インターネット側からアクセス可能です*6。なので、一般的なIPv6 対応ルータの場合、インターネット側から内部への接続は落とすようなフィルタをデフォルトで有効になっている、という事になっています。
個人でISP と契約して、64 bit のプレフィックスが与えられることから、「少ないアドレスを分け合うための NAPT」という役割は終わったと言えます。あるとすれば、セキュリティ面からの要望で、IPv4 の時のように、ULA のみ端末からインターネットを利用できるようにしたい、ということはあるかもしれません。その場合の NAT は NAPT のような「1 対 N」ではなく、「N 対 M」で、動的に GUA と ULA をマッピングするようなものになるかもしれません。
ただ、実際につながる環境ができてしまうと、グローバルなアドレスが直接ホストに割り当てられるのは、シンプルで良い感じがします。端末側から見ると、私みたいに ULA を使おうとすると、一つのインタフェースに複数のアドレスが付与されて、なんだか面倒な感じになりますが、インターネット側からアクセスできるかどうかは、純粋にルータフィルタで穴が空いているかどうか、になり、IPv4 の NAPT を使っている環境で、「このプロトコルは大丈夫だけど、これはダメで...」みたいな事はずっと少なくなるはずです。
我が家のIPv6 導入顛末は、これでひとまず終わりです。まぁ、IPv6 が使えるようになったと言っても、「おぉ、Google にIPv6 でつながっている!。気持ち、レスポンス良いかも」という程度で、実益は何もありませんが、でも、こうして実際に苦労してみると、「勘所」がIPv4 とIPv6 で違うのを実感しました。
もっとも、「おうち LAN にIPv6」なんて事をしなければ、今以上に「ルータを繋ぐだけ」ですが(^^;。
*1:Unique Local Address かと思うと、RFC 的には Unique LocalIPv6 Unicast Address
*2:厳密には、キャッシュだけじゃなくて、固定でマッピングしているものがあれば、それらも表示されます。
*3:kernel 3.7.0 から使えるようになったらしいです。
*4:少なくとも kernel 3.9.0 からは使えるらしいです。
*5:それが油断を生んでいた側面もあるとは思いますが、一般の人が電気屋さんで買ってきたルータを使うことで、直接攻撃から回避できる、というのは、セキュリティ的には都合が良かったと思います。
*6:Web インタフェースでIPv6 の設定をすると、フィルタを使う/使わないの設定があって、簡単に「外からはつながらない」フィルタを設定する事が可能です。もっとも、それに気づかずに半月ぐらい放置していても、IPv6 でのSSH に対するブルートフォースアタックはゼロでした。IPv6 アドレスのアドレス空間が広大なので、仮にプローブしても、相手となるホストがほとんど見つからなくて、効率が悪そうですが。
引用をストックしました
引用するにはまずログインしてください
引用をストックできませんでした。再度お試しください
限定公開記事のため引用できません。