能登地震で被災された皆様、お見舞い申し上げます。日本気象協会の地震情報への直リンクです。
PR

FreeBSD DHCP サービス IPv6 パート2

FreeBSD
記事内に広告が含まれています。

今回はちょっと忙しかったので、上司にチケットを取ってもらいました。安くなるから任せとけ ! と自慢げに言われたので気分はよくなかったのですがお任せしました。目的はアメリカアトランタにあるオフィスの引越しのヘルプということでした。この頃には e-ticket と言われる航空券が使われるようになったころで。たぶん上司も使ってみたかったのだと思います。でも後悔先に立たず。アムステルダム経由のアトランタ行きでした 🙁 そら安いやろ 🙁 なんでそんなに遠回りやねん 🙁 🙁 おまけに行きも帰りも雲ばっかりで、五里霧中状態での飛行でした。

Cisco Catalyst Switch

さて、以前に DHCPv6 のテストを行い、さらなる実験には RA の M-bit や O-bit を自由に使えるようにする必要がありましたが、ISP ルータにはその機能がありませんでした。そこで IPv6 の RA を自由に変えることができる機材はと考えていたのですが、前に使っていた Cisco の ISR ルータはヤフオクの餌食となってしまいましたし、GNS3 でルータをシミュレーションしようとも思いましたが、大昔に CCNP や CCSP とった時以来で、記憶があやふやな上に速攻でダウンロードしてきた GNS3 は簡単には動きませんでした。ふと思い出したのが、家庭内で使用している Catalyst Switch でした。走っていたのは大昔の Firmware のままでしたが、比較的新しい firmware は既にフラッシュに押し込まれており、暇があればアップデートと思ったまま記憶のかなたに消えていたのを思い出しました。走っていた IOS は V12 だったのですが、フラッシュに詰め込まれた IOS は V15 でした。これで感心したことがいくつかあります。show version でみたスイッチの稼働時間は7年以上となっていました。けなげに家庭内ネットワークを支えてくれていたのかと思うと涙がこぼれそうでした 🙂 それと日本の電源事情にも感心しました。社内のネットワークにつながっているオフィスやデータセンターを見てみると、何か月に一度はどこかで停電があります。日本のオフィスビルも電気設備の法定点検はありますが、それはそれ、予想外の停止避けるための措置なので、文句を言う気にはなれません。それ以外は全て予想外の停止です 🙁 時を戻そう!

myhome>sh ver
Cisco IOS Software, C2960 Software (C2960-LANBASEK9-M), Version 15.0(2)SE9, RELEASE SOFTWARE (fc1)

まずまずの新しさと思います 🙂 この辺りの IOS だと IPv6 は動いていたはずなので、早速 IPv6 を動かして、RA のオプションを操作して DHCPv6 を使ってみたいと思います。当然リリースノートと思いましたが、Catalyst 2960G などというスイッチは既に跡形しか cisco.com には残っていませんでした。ということで、自分で確認してみましょう。

DHCP これまでのおさらい

まずは、環境からみてゆきたいと思います。DNS が dhcp さんと pokemon さんで動いています。そして、DHCPd と問題の DHCPv6d が dhcp さんと package さんで動いています。

この状態で Windows 10 の VM を起動してみます。何も変わらず、ISP ルータから配られたプリフィックスから計算したグローバルアドレスとデフォルトゲートウェイのリンクローカルアドレスがあります。

enabling IPv6 on Catalyst switch

スイッチにログインして、管理者となります。

設定的にはごく普通で何も変わったところはありません。このスイッチも実験仲間に入ったので、別途 tacacs や radius との連携なども記事にできると思います。それと GNS3 も時間を見つけて動かせるようにしたいと思います。

IPv6 はというと、何も動いていない状況です。

そこで、教科書に従って、IPv6 を動かしてみましょう。。。と思ったのですが、コマンドがない 🙁

switch profiles

実はスイッチにはプロファイルがいくつかありますので、それを見てみましょう。

ありました 🙂 IPv4 と IPv6 Dual Stack のプロファイルに変更しましょう。このプロファイルのリストを見たときにふと疑問に思ったことがあります。IPv6 で IP phone などを使う時に IPv6 の qos を使いたいときにはどうなるのでしょう? まぁそれは置いといて、プロファイルを変更したときは再起動が必要となります。しばしお待ちを。。

再起動が完了したので、IPv6 の状況を再度見てみます。が、何も変わらずです。

気を取り直して、IPv6 を使えるようにしてみましょう。そして、メインの vlan99 インターフェースの状況を見てみましょう。

まぁ、なんとシンプルなことか 🙂 IPv6 のアドレスを ISP ルータから取得します。コマンドは IPv6 アドレスを自動取得してデフォルトゲートウェイもルーティングテーブルに入れると読みます。

さて、IPv6 の状況はというと、こんな感じです。リンクローカルアドレスとグローバルアドレスが割り当てられています。

デフォルトゲートウェイもテーブルに乗ってるはずなので、google さんの DNS へ ping してみましょう。

気持ちよくレスポンスが返ってきました 🙂

enabling IPv6 RA on Catalyst switch

この状態で、Windows 10 VM を起動してみます。ご覧のようにほぼ変わりはないですが一点、IPv6 デフォルトゲートウェイが2つになっています。RA を送出するデバイスが2つになったので、2つのルータが見えることになります。この方法はよくネットワーク機器の置き換えやネットワーク回線の取り換えをするときなどに用いられたりします。この状態で ISP ルータの RA を止めたら ( 止めることができればの話です ) タイムアウトで ISP ルータの情報が消えてなくなり、もう一方のルータ ( この場合ルータではなく、スイッチですが ) しか見えなくなり、ネットワークを止めることなく移行が完了するという仕組みです。

さて、ここからがメインの実験です。Catalyst スイッチから送り出される RA に M-bit を立ててみましょう。そのためのコマンドがこちらです。O-bit のオプションもありますが、以前に読んだ RFC から M-bit があると O-bit は参考程度にしか使用されません。ですので、M-bit だけを立てます。

DHCP v6

この状態で Windows 10 VM を起動します。あら不思議、もう一つ IPv6 アドレスが増えました。

どこから来たのか?こちらからです。コメントは無視してください。オリジナルのサンプルの設定に対してのコメントですので 🙂 こちらの dhcp さんの DHCPv6 プールから振り出されたものです。

pokemon@dhcp(132)$ tail -14 dhcpd6.conf
subnet6 2001:ce8:   :9e21::/64 {
        pool6 {
                # Two addresses available to clients
                #  (the third client should get NoAddrsAvail)
                range6 2001:ce8:   :9e21::0:1000 2001:ce8:   :9e21::0:ffff;

                # Use the whole /64 prefix for temporary addresses
                #  (i.e., direct application of RFC 4941)
                range6 2001:ce8:   :9e21:fffe::/96 temporary;

                # Some /64 prefixes available for Prefix Delegation (RFC 3633)
                prefix6 2001:ce8:   :9e21:1000:: 2001:ce8:   :9e21:1999:: /96;
        }
}
pokemon@dhcp(133)$

IPv6 DHCP の冗長性

ではついでに実験してみましょう。まず、IPv6 アドレスをプールに返しましょう。結果、こんな感じになりました。ISP ルータの RA からのアドレスはそのままで、DHCPv6 プールからのアドレスのみ返却されました。

さて、dhcp さんの DHCPv6 を止めます。そして、IPv6 アドレスを DHCPv6 から再取得してみます。元のアドレスは 2001:xxxxx:0:b633 でしたが今回は 2001:xxxxx:1:b633 となりました。

どこから来たか?こちらからです。package さんの DHCPv6 からです。

pokemon@package(131)$ tail -15 dhcpd6.conf
subnet6 2001:ce8:   :9e21::/64 {
        pool6 {
                # Two addresses available to clients
                #  (the third client should get NoAddrsAvail)
                range6 2001:ce8:   :9e21::1:1000 2001:ce8:   :9e21::1:ffff;

                # Use the whole /64 prefix for temporary addresses
                #  (i.e., direct application of RFC 4941)
                range6 2001:ce8:   :9e21:ffff::/96 temporary;

                # Some /64 prefixes available for Prefix Delegation (RFC 3633)
                prefix6 2001:ce8:   :9e21:2000:: 2001:ce8:   :9e21:2999:: /96;
        }
}

pokemon@package(132)$

DHCPv6 の冗長性も期待通りに動いているようです。ipconfig /all を見てみます。package さんの DHCPv6 から振り出された IPv6 アドレスと、ISP ルータの RA で計算されたアドレスとの大きく2つあります。ゲートウェイも ISP ルータと Catalyst Switch の2つあります。

確認のために google さんの DNS に ping してみます。

いい感じに動いています 🙂

disabling IPv6 RA on Catalyst Switch

今回は Catalyst スイッチを使用して RA と DHCPv6 の動きを実験してみましたが、このスイッチは IPv6 ルータではありませんので、家庭内でのスイッチとして使用できるように設定を変えます。アドレスは ISP ルータから取得して、ネットワークに対して RA は送出しない。RA を送出しないので、M-bit の設定は関係なくなりますが、後に間違わないように外しておきます。

これで保存すれば OK です。

確認

dhcp さんの DHCPv6 を動かして、Windows 10 VM を再起動しました。IPv6 デフォルトゲートウェイは ISP ルータだけになりましたが、DHCPv6 から払い出されたアドレスはそのまま見えます。

本来こうはなってほしくないので、IPv6 アドレスを開放した状態で再起動してみました。が、DHCPv6 から払い出されたアドレスは残っています。詳細は不明ですが、かつて使用できた DHCPv6 のことを Windows OS が覚えていてアドレスを再取得したように見えます。リース期間の情報が異なりますので。。もしかすると、別のネットワークにつないだ後戻ってくるとこの DHCPv6 のことは忘れるのかもしれませんし、忘れてくれないと困ります 🙂

因みにこの実験をする前のバックアップの VMware イメージを起動してみると、DHCPv6 は使用されていません。たぶん OS のどこかに覚えているのだと思います。人呼んで、Windows BUG ! かぁ?


まずは現地の IT 仲間と街をうろうろしていた時、ダウンタウンの書店の入り口に見慣れぬヘリコプターのような物体が売られていました。当時はまだメジャーになっていませんでしたが、ドローンでした。ちょっと大きかったのと、たぶんコントローラは SHF の電波が使われているのであろうと思うので、所持している無線のライセンスで使えるかも不明でしたし、日本への持ち込みができるかどうかもわからなかったのでそのまま見過ごしました。それに高すぎます 🙂

as always 🙂

帰りもアムステルダム経由でしたので、アトランタから北東へしばらく飛行すると、大きな街の明かりが見えました。「翼よ、あれがニューヨークの灯だ!」と、かのリンドバーグも言ったとか言わなかったとか。。。へぇ?パリの間違い?失礼しました。

湿度の高いときは悪いことばかりでもなく、この時はブロッケン現象が見えました。着陸のために高度を徐々に下げる時に機体が虹に包まれた状態でだんだん大きくなってきて最終雲の中に突入するところまで見えました。理屈を知っていればなんということもないのですが、ちょっとしたミステリーです 🙂

以下広告


コメント