$name;

Sola's daily diary, commit logs, and all

IPv6ユニークローカルアドレスをルーターから配ってみる実験

大学の研究室にCisco 841M J Integrated Service Routerがあり、先輩曰く自由に使ってよいそうなので勉強用に活用させてもらっています。

Cisco C841M-8X-JAIS/K9 ルータ

Ciscoルーターに代表されるエンタープライズ向けのルーターは、家庭用のブロードバンドルーターと違い、コマンドライン操作で非常に自由度の高い設定ができます(とても簡単とは言えないですが)。好きなプレフィックスをRAで配ったりすることも、ブロードバンドルーターではできませんがCiscoルーターならできちゃいます。

今回の記事では、がんばってCiscoルーターを設定してIPv6で閉域ネットワークを組んでみる実験をして、IPv6ネットワークについて理解を深めてみたいと思います。

IPv6についてざっくり

次世代のインターネットプロトコルとして作られたプロトコルIPv6です。当初は普及が絶望視されていましたが、2010年代以降、個人向けのインターネット回線ではみるみるうちに普及が進んでいます。私にはとうてい全貌を説明しきれないので全体の概要はばっさり省くとして、この記事と関係のある事項について触れてみます。

IPv4との相違点の一つが、ルーターからクライアントへのアドレスの配布方法です。IPv4ではDHCP経由でクライアントにアドレスを割り当てるのが標準的ですが、IPv6ではICMPv6のRA(ルーター広告)を使ってクライアントに64ビット長のサブネットプレフィックスを通知し、残り64ビットのインターフェースIDをクライアント側で作る、SLAACという方式が標準的に使われています。

また、IPv4でのプライベートアドレスに相当するアドレスブロックとして、ユニークローカルアドレス(ULA)が用意されています。リンクローカルアドレスと違い、ルーターを超えることができ、イントラネット内で自由にルーティングできます。IPv4プライベートアドレスと同じく、インターネットに出ていくことはできません。ULAとしてはfd00::/8のアドレスブロックが自由に使えるようです。
ちなみに、IPv6ではグローバルユニキャストアドレス(GUA)を用いてNATを経由せずにインターネットと通信をするのが標準的なネットワーク構成です。インターネットとの通信においてはULAを使うのは必須ではなく、企業や学校などのイントラネットIPv6で構築する場合などに活用が検討されそうな気がします。

やりたいこと

主に次の3つのことをやりたいと思っています。私自身まだまだルーターの勉強中で一気にやるのは難しいので、ステップバイステップで少しずつやりたいと思います。

  1. ルーターからRAを通知してULAを配る
  2. ULAでネットワークを組んでスタティックルートを構成する
  3. RIPngやOSPFで経路交換

今回は1の内容をやってみます。

ルーターに設定したい情報

  • RAで配布するアドレスブロック: fd00:1:2:3::/64
  • RAのパラメータ: TTL 3600秒 / インターバル30秒
  • ルーターのULA: fd00:1:2:3::b00c:cafe/64
  • ルーターのLLA: fe80::b00c:cafe
  • 使用するルーターポート: gig0/9
    (他のポートはshutdownさせています)

上記にもとづいてルーターを設定してみます。

ルーターポートにIPv6アドレスを設定

インターフェースコンフィグレーションで設定したいポートを選択し、以下のコマンドを実行します。ここまでは簡単。

ipv6 address fd00:1:2:3::b00c:cafe/64 // ルーターポートにIPアドレス(ULA)を設定

ipv6 enable // IPv6を有効化 特に打たなくてもアドレス当てたら勝手に有効になるらしいです

ipv6 address fe80::b00c:cafe link-local // LLAを(明示的に)設定

LLAはMACアドレスを元に自動生成されるのが一般的ですが、このコマンドで人間に分かりやすいアドレスを振っておけば、ipconfigやWiresharkなどで様子を見るときに一目でルーターのLLAだと分かるので、とても便利です。

IPv6 Neighbor Discovery の設定

インターフェースコンフィギュレーションモードのままで、ICMPv6のND(Neighbor Discovery, 近隣探索)の設定をします。RAの配布にも関係する設定ですが、正直よくわかっていないのでかなり適当に設定しています。

ipv6 nd na glean // なんだろう 何?

ipv6 nd autoconfig prefix

ipv6 nd prefix fd00:1:2:3::/64 // NDで通知するサブネットプレフィックス

ipv6 nd router-preference High

ipv6 nd advertisement-interval

ipv6 nd ra lifetime 3600 // RAのTTL(秒)

ipv6 nd ra interval 30 // RAのインターバル(秒)

上記はshow runコマンドからの丸写しです。これで動いてるのでいいのかな...?
設定の詳細や、「このコマンド要らないよ!」というのがあったら教えてください。

IPv6ルーターとして動作させる

正直、上記の設定をしてもまだルーターはRAを配ってくれません。ルーター自身がIPv6ルーターとして動作してくれていないので、当然ルーター広告を出せません。(そうとは知らずに小一時間NDの設定を見直したりしてました)

グローバルコンフィギュレーションモードに入って、以下のコマンドを打ちます。

ipv6 unicast-routing

これで、IPv6のルーティングを行ってくれるようになり、ルーターからRAが届くようになります。

設定の確認をする

PCのLANポートと、上記の設定を行ったルーターポートをつなぎ、PCにULAが割り当てられるか、経路表が正しく自動設定されるかを確認します。

画像には載せませんが、きちんと自分のPCにULAが降ってきたことを確認しています。うれしい!

ICMPv6 pingで、ルーターのULAやLLAを指定して正しくエコーが返ってくるかも見てみます。

ルーターからICMPv6 エコー応答が返ってくる様子

うまく動いています。感慨深いです。
この、::b00c:cafe(book cafe)というインターフェースID、わかりやすくてお気に入りです。

まとめ

  • ルーターポートにIPv6アドレスを割り当てたよ
  • ルーターからRAを配ったよ
  • PCにULAが割り当てられ、無事に疎通した!

今度はスタティックルートを組めたらいいな。近いうちにまた記事にします