【Cisco】CCNP学習 WLC+APの検証環境構築_01_DHCPサーバ構築

CiscoIOS

はじめに

本記事は構成図内にいるDHCP01の構築を行います。DHCPサーバの構築の前にオプションについて書いたのですが、あれこれ書いているうちに長くなってしまいました。興味があれば是非お付き合いください。

なお、今回の記事は下記の記事の一部となっています。他の機器の設定については、おおもとの記事にリンクを載せているので、参照ください。

WLCとAPとDHCP オプション 43について 

CCNPを勉強していると出てくる「DHCP オプション 43」について。結論から先に言うと、はじめてネットワークに参加したAPがWLCの宛先を知るための仕組みです。なので、APをスタンドアロンではなくて、WLCで集中管理することを想定した設定です。

せっかくなので、本記事ではDHCPについても触れながら、このDHCP オプション 43について書こうと思います。

DHCPの通信のフロー

DHCPは「Dynamic Host Configuration Protocol」の略で、動的にIPを割り当ててくれる便利なプロトコルです。よくある例としては、PCをネットワークに参加させるためにL2スイッチに接続した際、PC側の設定と接続先がDHCP設定が整えておけば、PC利用者はIPアドレスの概念なんて知らなくてもPCを使えます。以下のような流れでIPアドレスを取得します。

①DHCPサーバの探索:DHCP DISCOVER (クライアントからサーバ宛にブロードキャスト
②IPアドレスの提案: DHCP OFFER (サーバからクライアントへユニキャスト
③提案に対する要求:DHCP REQUEST (クライアントからサーバ宛にブロードキャスト
④要求の承認:DHCP ACK (クライアントからサーバ宛にユニキャスト

個人的に③がブロードキャストというのは面白いなーと思いました。ユニキャストでいいじゃん?と思うのですが、DHCPサーバが複数いた時に、クライアントがどのDHCPサーバからIPアドレスをもらうかを、他のDHCPサーバに伝える意味もあるとどこかで見た気がします。奥深いね。

DHCPでネットワーク参加した後の話

では、本題。APの電源を入れるためにPoESWへ接続したときのことを考えます。APも同様に、PoESWに接続してDHCPでIPを取得できたとします。ただし、AP自体にSSIDをはじめとした設定が何も入っていないので、DHCPでIPが設定されていても、APとして機能するにはまだまだ足りないのです。

APにログインして設定しても良いですが、今回はWLCで一括管理をしようとしています。できれば「APにログイン」するといったことをいちいちすることなく、WLCと接続してくれると嬉しいわけです。

DHCP オプション 43という選択肢

WLCを見つけるためにどのような方法があるか。APがWLCを見つけるために、DNS設定(=CISCO-CAPWAP-CONTROLLER.localdomainを名前解決した結果をWLCのIPにする)を予め設定しておく方法や、スタティックに設定(=APに直接設定を入れる)する方法があります。その中に、「DHCP オプション 43」があります。DHCPサーバの設定に「WLCのIPはこれだ!」と書いて、IPアドレスの取得と同時に、WLCのIPアドレスも通知する仕組みです。どんな書きっぷりかは、実際のconfigを見てください。

※参考Catalyst 9800 WLCでのAP加入プロセスについて

Catalyst 9800 WLCでのAP加入プロセスについて
このドキュメントでは、Cisco Catalyst 9800 WLCを使用したAP加入プロセスについて詳しく説明します。

記事内の「ワイヤレスLANコントローラの検出方法」 に記載されています。

存在意義はあるのか?

とはいえ、「DHCP オプション 43」は普段使わないので、ナレッジも多くないです。また、DHCPはIPアドレスの割り当てがランダムだから、APに付与するIPアドレスをそもそも固定にしたほうが良いんじゃない?とも考えてしまいます。手動でAPのIPアドレスを設定することになれば、WLCへのIPアドレス設定もスタティックで良さそうです。実際の構築では、手堅くスタティックで入れているような気がします。

ただ、様々なシチュエーションが世の中にはあると思っていて、全国で展開していたり、現場にいつでもネットワークに明るい人がいてくれるわけでもないのです。APが遠くの現場で壊れてしまい、予備機だけがそこにあるとしましょう。ケーブルをつないで電源がONになって、何もしなくてもWLCから操作出来たら、便利ですよね。現場にいる人は何もしなくても良いですからね。そう考えると、存在意義はあるのかもいしれないです。APのIPアドレスを固定にしたければ、DHCPサーバ側で制御してあげればいいのですから。

ふと、そんなことを考えました。長くなりました。DHCPサーバ構築の話をしましょう。

構成図

構築

インストール

構築までに色々と困難はありましたが、順を追って記載します。まずはdhcpdをインストールします。「 dnf install -y dhcp-server」を実行します。Ubuntuの場合は若干違うとかあると思いますが、そこは各自で調整してください。

confの編集

インストール後、/etc/dhcp/に移動して、dhcpd.conf を編集します。※編集前のお決まりということで、元ファイルを事前にコピーしています。編集はviなど、お気に入りのエディタを使ってください。

編集後、中身を見てみます。

単純にDHCPでIPを払い出したいだけであれば、「class “CiscoAP” {….}」の部分は不要です。今回は検証ということで、「DHCP Option 43」 の設定も入れています。Option 43は、序盤に記載した通り、APにWLCへの宛先を通知するための設定です。

「subnet 10.0.0.0 netmask 255.255.255.0 {….}」の部分で10.0.0.0/24の払い出し設定を書いています。

細かい部分は記載の通りで、「range」で払い出し範囲を指定しています。
option routers」でクライアントのデフォルトゲートウェイのIPを指定し、「subnet-mask」で文字の通りサブネットマスクを指定します。
option domain-name」はドメインを指定しています。ドメイン環境であればこの設定は必須ですが、今回は全くないので、適用な文字列が入っています。
domain-name-servers」はDNSサーバを指定していて、「default-lease-time」と「max-lease-time」でリース時間を指定します。

起動

起動コマンド「systemctl start dhcpd」を実行します。

問題なく起動すれば、DHCPサーバとしてリクエストを受け入れ、IPアドレスを払い出します。

リース状況を見る

DHCPの素朴な疑問

今回のDHCPの検証で疑問に思ったことをメモしておきます。

疑問① 複数のルータがあるときのリレーはどうする?

ブロードキャストがルータを超えられないので、ルータの先にあるDHCPサーバに向けたリクエストは、RTやL3SWといったルーティング機能を持った機器が代理でDHCPサーバに問い合わせしてくれます。この代理で問い合わせを行う機器を「DHCPリレーエージェント」と呼びます。

前置きが長くなりましたが、「PC —- RT01 —- RT02 —- DHCPサーバ」という構成を考えます。このとき、RT01とRT02という二つの機器がありますね。このとき、リレー設定はどう設定するか?という疑問です。

RT01のみ?RT02のみ?RT01とRT02の両方?答えはRT01のみです。ヒントはリレーエージェントがDHCPサーバにユニキャストするんですね。なので、RT02はブロードキャストを受けないので、リレーする必要がないです。リレーの目的はブロードキャストをユニキャストに変えると考えれば、自ずと答えが出ます。

疑問② リレーしたときの払い出しIPは、何で判断するの?

上の話に付随して「リレーされたパケットから、DHCPサーバってどうやってアドレスを見分けてるんだ?」と思いました。今回の構成も、RT01が「10.0.0.0/24」と「10.0.2.0/24」のDHCPリレーエージェントとなりますが、DHCPサーバから見ると送信元のIPアドレスは10.0.1.254になるので、どちらのIPアドレス帯を払い出すのか分からない気がしました。

少し調べたところ、「giaddr (Gateway IP Address)」というDHCPのフレーム内の情報をもとにDHCPサーバは判断するようです。ブロードキャストを受けリレーエージェントが、ブロードキャストからユニキャストに変換するときに、giaddrに払い出すセグメント情報を入れることで、DHCPサーバは払い出す対象のアドレスを決定するわけです。なるほど、賢いですね。