PR

FreeBSD DHCP サービス IPv6

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

社内トレーニングでデンマークのとある SI 会社を訪れたときの国鉄のとある途中駅の駅名票です。デンマークの駅の多くはおまけで作られたような駅舎があるだけの駅が多く、ほとんどが無人駅のようです。日本の新幹線のような列車はなくのんびりと旅ができます。日本のようなはっきりとした天気ではなく北欧独特の低く垂れ込めた雲の隙間から日がのぞく感じの車窓が続き、夏真っ盛りの時期以外には日本で言うならば冬場の北陸という感じの天気が続きます。それと、デンマークにはこれといった山はありません。最高海抜地点でも 170m 程度なので、いつまで走っても同じ車窓が続いているように見えます。物思いにふけるにはよいかもしれません。 🙂

IPv6 RA and RS

さて、前回の続きで今回は ISC DHCPv6 を動かしてみたいと思います。我が家で使用している IPv6 レンタルルータの Router Solicitation や Router Advertisement などを調べる必要があるのですが、この手の情報を調べたいときには RFC を読むのが常套手段となります。全てのベンダーはネットワーク機器を作るときには関係の RFC に準拠する必要があります。そうでなければ他のベンダの機器と相互接続できないからです。ただ、100% 確定できる表現で書かれていない場合も少なからずありますので、機能をインプリメントする人の解釈の微妙な違いで、えっ?なんで?ということが起こったりします。ということで、関係の RFC を見てみました。中でも、DHCPv6 に関係のある RA の M bit と O bit に関する RFC は RFC4861 で 4.2 節に記述があります。そちらから一部を引用しますと、

 M              1-bit "Managed address configuration" flag.  When
                     set, it indicates that addresses are available via
                     Dynamic Host Configuration Protocol [DHCPv6].

                     If the M flag is set, the O flag is redundant and
                     can be ignored because DHCPv6 will return all
                     available configuration information.
 O              1-bit "Other configuration" flag.  When set, it
                     indicates that other configuration information is
                     available via DHCPv6.  Examples of such information
                     are DNS-related information or information on other
                     servers within the network.

        Note: If neither M nor O flags are set, this indicates that no
        information is available via DHCPv6.

要は、M bit がセットされていると IPv6 アドレスは DHCPv6 から得ることができ、O bit がセットされていると、IPv6 アドレス以外の情報、例えば DNS 関連のアドレスやネットワーク内の他のサーバー関係のアドレスを DHCPv6 から得ることができるとあります。ノートとして、両方ともセットされていないと DHCPv6 は利用できず、また別のノートには M bit がセットされていると O bit は無視してもいい、なぜなら全ての必要な情報は DHCPv6 から得られるのでとも書かれています。ですので、DHCPv6 の機能をすべて使用できるようにするには少なくとも M bit がオン、文言を忠実に解釈するならば、加えて O bit もオンである必要があるようです。そこで、我が家の IPv6 ルーターの RA を Wireshark で見てみると、このようになっています。

VM ゲストの Win10 を起動中に VM ホストの Win 11 でキャプチャしました。

M bit が立っていなく、O bit が立っているので、IPv6 アドレスや IPv6 G/W アドレスは IPv6 ルータから得られた IPv6 Prefix と自分の MAC アドレスから計算して得られる IPv6 アドレスと、この情報を得た IPv6 ルータのアドレスを G/W アドレスとして使うことになります。逆の言い方をすると、DHCPv6 で IPv6 アドレスや IPv6 G/W アドレスを割り当てることはできないと読むことができます。幸運なのは問題が DNS の IPv6 アドレスにあるので、これは DHCPv6 で何とかなりそうであるということになります。では早速 DHCPv6 の設定ファイルを書いてみましょう。DHCPv6 サーバーが直接ネットワークに設置されている場合の設定例を家庭のネットワークと自分のポリシーに応じて手を加えて保存する。RFC を読む限りこのプールからアドレスが振り出されることはなさそうですが、DHCPv6 daemon が起動しなくなるので作成します。

起動スクリプトを見てみると、dhcpd_enable を YES にしろと書かれています。指定のようにセットすると、既に YES になっているようです。そうです。IPv4 の DHCP と同じのようです。

では起動してみましょう。ムッ、騙された 🙁 エラーメッセージでは dhcpd6_enable をセットする必要があるということですので、そのようにセットします。

一種のバグか?

lease database

そしておもむろに起動してみるといくつかエラーが出てきました。因みにデータベースファイルの位置は、同じ目的のファイルは同じディレクトリにあってほしいので /var/db/dhcpd6.leases から IPv4 と同じディレクトリの /var/db/dhcpd/dhcpd6.leases に変更しています。

ファイルがないと怒られました。怒りを鎮めるための処置を行います。

空ファイルを作って、所有者を dhcpd/dhcpd に変更します、さて気を取り直して立ち上げてみます。

気持ちよく動いたようです。

では、肝心の DNS 関連の情報を書き換えてみます。

IPv4 の DNS に習い、dhcp さんと pokemon さんの IPv6 アドレスを指定します。因みにリンクローカルアドレスは受け付けてくれませんでした。つまり、グローバルアドレスである必要があるようです。ついでに IPv6 の検索ドメイン名も変えておきます。というか、これくらいしか変えるところはありません。そのうえで、再起動してみます。

冗長性

IPv4 DHCP ではフェイルオーバーの機能が使えましたが、IPv6 DHCP では同じ機能は使えませんでした。マニュアルを読んでみると、dhcpv6.preference の値を変えることで冗長性を持たせることができると書かれています。何もしないとデフォルト値は 0 ですが、255 が最高のプライオリティとなります。ですので、dhcp さんの DHCPv6 サーバには 255 を使用して、package さんの DHCPv6 にはマニュアル通り 0 を使用してバックアップサーバとして起動したい思います。マニュアルレベルでは同一のアドレスレンジを使用できると書かれていますが、気持ちが悪いので異なるアドレスレンジを package さんでは指定しておきました。

さて、RA の O bit だけがオンの状況で、2台の DHCPv6 サーバを起動させて、Windows 10 クライアントでアドレスを取得してみました。

予想通り、IPv6 アドレス ( Global および Temporary )、とゲートウェイアドレスは DHCPv6 サーバの有無にかかわらず同じアドレスが使われていることが確認できます。一方、DNS アドレスは dhcp さんと pokemon さんの IPv6 アドレスになりました。一応動作確認を行っておきます。

ストレスなく家庭内ドメインの名前解決もできるようになりました。

RA の M bit と O bit の組み合わせは 11, 10, 01, 00 の4種類ありますので、RFC を読む限り DHCPv6 のアドレスプールも使用するには 1[10] である必要があるように思われます。一方、世の中の家庭用の IPv6 ルータのインプリメントの状況は 01 としてある機器が多いということです。なぜなら下手に家庭内に DHCP や DHCPv6 サーバーを立てることを想定していなく、あくまで素人向けのつなげば動く方式のルータを提供していることが多いからのようです。今回 01 の場合を実験しましたが、RFC には 00 の場合の記述があり、DHCPv6 は使用できない、つまり IPv6 アドレス関係は手動で設定する必要があるということが書かれています。最新の RA メッセージに関する RFC 8106 を見ると、DNS のアドレスも含めることができるようになっています。我が家の IPv6 ルータでも DNS のアドレスがセットされていましたので、この RFC に準拠していると思われます。つまり下手な小細工をしなければ IPv6 でネットサーフィンすることは問題なくできるということになります、機能不全さえなければ 🙁 まぁ、家庭内では十分なのでしょうが、企業としては 1[10] となるルータやファイアウォールを使用して、配布するアドレスなどの管理は IT の手中に収めておきたいところです。ちょっと時間があれば 11 と 10 の場合の実験をしてみたいと思います。勿論別記事で 🙂


こちらはコペンハーゲン中央駅から出てゆく国鉄の各駅停車の列車です。作りが重厚で、日本の JR の列車と比べたらはるかに頑丈そうに見えます。

ちょうど訪れたときはハロウィーンのお祝いの時期で、チボリ公園もかぼちゃだらけになっていました。

デンマークには何度も訪れる機会があり、最初のうちの移動はタクシーでしていましたが、そのうちに電車を使えというお達しがあり、確か最初に自販機で買った切符の写真だったと思います。後には、iPhone のアプリケーションでいつでも購入できるようになりました。電車とは関係のないことなのですが、切符の自販機はカードでも購入できるのですが、この自販機が曲者くせもので、カードを受け付けてくれないのです。手持ちの現金がなかったので、10回くらいカードを突っ込んだ記憶があります。自販機は日本製が一番と思います 🙂

コペンハーゲン中央駅以外はこのようなかわいい駅が多いです。中には駅舎のない駅で、切符も買えない駅があり、そのためにモバイルのアプリを持っていると電車に乗ってからでも購入することができます。駅で購入できない場合でも、駅の隣の、例えばパン屋さんなどで切符を買えるようになっていることがほとんどでした。

コペンハーゲンの街を散歩していると、このようにアジアの味を提供してくれる店がいくつもあります。それ自体はいいことなのですが、問題は日本人向けの味ではないということです。例えばこのお店は韓国料理と日本食を出していますが、オーナーは往々にして中国の方なのです 🙂 やれやれ。。。

2週間のビジネストリップも終了です。帰りは空港でいつものスターバックスと決めています 🙂

残念な訃報

[[[[[ この記事を書いている最中に非常に残念なニュースが飛び込んできました。私の住む大阪から山一つ隔てた奈良県で、元総理大臣の安倍晋三氏が選挙の応援演説の最中に暴漢からの銃撃に遭われ、懸命な救護および手術の末お亡くなりになったということです。好きな政治家のお一人であったので非常に残念です。心よりのご冥福をお祈りしたいと思います。]]]]]

以下広告


コメント