大学の研究室にCisco 841M J Integrated Service Routerがあり、先輩曰く自由に使ってよいそうなので勉強用に活用させてもらっています。
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つのことをやりたいと思っています。私自身まだまだルーターの勉強中で一気にやるのは難しいので、ステップバイステップで少しずつやりたいと思います。
- ルーターからRAを通知してULAを配る
- ULAでネットワークを組んでスタティックルートを構成する
- 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を指定して正しくエコーが返ってくるかも見てみます。
うまく動いています。感慨深いです。
この、::b00c:cafe(book cafe)というインターフェースID、わかりやすくてお気に入りです。
まとめ
今度はスタティックルートを組めたらいいな。近いうちにまた記事にします