PR

FreeBSD DHCP サービス IPv4

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

社内のミーティングのために、マンチェスター空港へ。オフィスはここから1時間程度タクシーで走ったところにある片田舎、失礼しました、風光明媚ふうこうめいびなところにあります。周りは小高い丘ばかりで、牛とヒツジと発電用風車ばかりが目につきました。R&D チームにはよい場所に思えます 🙂

Motivation

ムムッ 🙁 また死んでる。ISP から借りているレンタルルータの DHCP サービスがしょっちゅうお亡くなりになり、アドレスを振り出してくれなくなります。何の追加設定もしていないのに、というか何の追加設定もできないのに 🙂 ということで、DHCP サービスを立ち上げる必要に差し迫られました。

使用するマシンは以前の記事でご紹介しました 32bit の骨董品の物理マシンで Windows Update により勝手に止まることはなくなると思います。dhcp さんには他のマシンと同様に最低限のパッケージと DHCP サービスとして使用したいと思っている ISC DHCP を入れておきました。お気づきかと思いますが、BIND918 も同じく ISC 製です。こんな感じです。

サービス的には1つの daemon が提供され、-6 オプションの有無で IPv4 か IPv6 のいずれかで動きます。設定的にはそれぞれのプロトコルにファイル1つが、合計2つのファイルがあるようです。

IPV4 用のサーバに dhcp.conf ファイルが、IPv6 用のサーバに dhcp6.conf が対応します。

DHCP pool for IPv4

まずは IPv4 用の設定からしてみたいと思います。dhcpd.conf ファイルを編集してみると、各種設定例が記述されています。とりあえず、簡単な単一ネットワークセグメントの設定が必要なので、全てコメントアウトします。コメントは # 以降がコメントとして取り扱われます。そのうえで、新しいネットワークを追加します。こんな感じです。

dhcpd.conf の一番最初の例とアドレスレンジが異なるだけで全く同じですので、このままではネットワークに対して何も行われません。ですので、必要な DHCP オプションを追加してゆきましょう。dhcp で配るアドレスの範囲を 192.168.0.0/24 の中に作ります。とりあえず、192.168.0.100 から 192.168.0.200 までのアドレスを配れるようにします。

これでは、アドレスのみ配ることになりますので、とりあえず必要な DNS とドメイン名とデフォルトゲートウェイを配れるようにしましょう。以前の記事でセカンダリ DNS は pokemon さんにお願いすることにしていました。

DHCP のオプションはたくさんありますが、今使用中のホームネットワークとネットサーフィンに必要な IPv4 の設定は OK のはずです。vmware player に Windows 10 をインストールしてこの DHCP サーバを使えるようにしてみましょう。Windows 10 のインストールは面白くないので割愛させていただきます m(_ _)m ( 面白くないので、別記事で iPXE を利用して F12 key一発でインストールできるようにしてみたいと思います )。まず、ホームルータの DHCP から配られたアドレスです。

FreeBSD 上の DHCP を起動し、Windows 上でこのアドレスを返却して、ホームルータの DHCP サービスを停止しする。この状態で Windows 上で IP アドレスを renew してみます。まず、DHCP サービスを起動します。

ipconfig /renew

ipconfig コマンドで現在のアドレスをホームルータの DHCP サービスに返却した後、ホームルータの DHCP サービスを停止します。その後、ipconfig /renew でアドレスを再取得してみました。

ipconfig /all の全メッセージです。

IPv4 と IPv6 が混じっていますので、IPv6 を disable してみました。ドメインに home.jf3vqb.net が指定されており、pool の range で指定した最初のアドレスが割り振られており、DNS も dhcp さんと pokemon さんがこの順番で指定されており、ゲートウェイも 192.168.0.1 となっており、リース時間も10分 ( 600 秒 ) となっており、なおかつ DHCP サーバのアドレスが dhcp さんの 192.168.0.250 となっています。すべて期待通り動いています。

DHCP pool for IPv6

次に IPv6 DHCP のテストと思っていたのですが、ISP のホームルータの DHCP を OFF にして Windows VM を再起動しても IPv6 のアドレスが残っていました。IPv6 DHCP を設定するにあたり、このホームルータからの Router Advertisement メッセージの素性を確認するまで IPv6 の DHCP のテストができない状況です。ちょっと時間がかかりそうなので、次回以降の記事での実験ということにしたいと思います。ということで、IPv4 の DHCP サービスだけを FreeBSD から提供できるようにしたいと思います。IPv4 ネットワークが止まると、家じゅうからクレームが飛んできますが、IPv6 が止まっても、最悪通常のネットサーフィンには大きな影響はないはずなので、とりあえずこれで OK としたいと思います。必要な IPv4 オプションを追加して DHCP サービスを切り替えたいと思います。とりあえずこんな感じです。

冗長性

以前の記事でお話ししたと思いますが、DHCP サービスも冗長性が欲しいところです。実は ISC DHCP はフェイルオーバー構成をサポートしています。プライマリを dhcp さん、セカンダリを package さんにお願いするとして、dhcpd.conf ファイルに fail over peer を定義して、どの pool をカバーしあうかを指定します。こんな感じです。各オプションの説明はこちらにございます。

加えて、ログが syslog の local7 に出力されるので、それなりの設定を行います。こんな感じです。

最後に、このログは増える一方なので、定期的に圧縮して、古すぎるものは削除します。勿論 package さんも同じことを行います。

まず、プライマリサーバを再起動します。

そうすると、セカンダリサーバがオンラインになるのを待つようになります。ではセカンダリを起動してみましょう。

どちらもオンラインの状態だと、”Both servers normal” とメッセージが表示され、フェイルオーバーを定義した pool の dhcp データベースは2台のサーバーで分割管理され、両方オンラインだとロードバランスで動き、どちらか一方がお亡くなりになると、生き残っているほうが pool 全体を管理します。お亡くなりになっていたサーバーが生き返ると、pool のデータベースを同期しなおして、再度ロードバランスで動き始めます。

とりあえず IPv4 の DHCP は OK となりましたが、現状の問題として、IPv6 を enable にした DHCP クライアントから DNS を使用して home.jf3vqb.net ドメイン内のマシンのアドレス解決ができない状況です。なぜなら、DNS の先頭にリストされているのが IPv6 の DNS で、ISP のレンタルルータをポイントしているからです。OS の IPv4 の優先度を上げても、ping dns.google などは IPv4 アドレスを使うようになるのですが、DNS は依然として IPv6 DNS を使っています 🙁 とりあえず、SAMBA のマスタブラウザからアドレスを得ますので、ping dhcp などとしてもワンテンポ遅く感じますが、家庭内の機器のアドレスを DNS で検索するのは私くらいなので、問題はないと思います。ISP さん ( どことは言いません :)、使用料はただではないので、何とかしてくださいよ 🙁


さて、オフィスから一番近いダウンタウンです。どこかわかります?

帰路についた時に出発便の関係で、マンチェスター空港のすぐ横の宿に泊まりました。同じ部屋に泊まったことのある人います?

この鍵がついていた丸窓です。船をイメージしたのでしょうか?空港の横にありながら。。。

さてクイズです。熱いお湯の出る蛇口と冷たい水の出る蛇口があります。どうやって温かい水で手を洗ったりうがいしたりすることができるでしょう?

もう一度言っておきたいと思います。片田舎ではありません。風光明媚ふうこうめいびな町です 🙂

次回以降に IPv6 DHCP と、大きなネットワーク環境で使えるようにお試しの DHCP 設定もしてみたいと思います。

以下広告


コメント