CiscoルータをDHCPサーバとして利用する方法
CiscoルータやL3スイッチは、DHCPサーバの機能を持っており、PCなどのクライアントに自動的にIPアドレスを割り当てることができます。大規模な環境では専用のDHCPサーバを使うのが一般的ですが、小規模なネットワークではルータ自身にDHCPサーバの役割を持たせるケースがあります。試験でも「ルータをDHCPサーバとして動作させる設定」は頻出テーマですので、流れをしっかり覚えておきましょう。
DHCPサービスの有効化
Cisco IOSでは、DHCPサービスは基本的にデフォルトで有効化されています。もし何らかの理由で無効にしている場合は、次のコマンドで有効化します。
(config)# service dhcp
除外するIPアドレスの設定
DHCPで割り当ててはいけないアドレス(ルータのインターフェースIPやサーバの固定アドレスなど)は、除外リストに登録しておきます。
(config)# ip dhcp excluded-address 192.168.0.250 192.168.0.254
この例では、192.168.0.250 ~ 192.168.0.254 の範囲をDHCP割り当て対象外にしています。
DHCPプールの作成と設定
DHCPで配布するアドレス範囲を定義するため、まずプール名を設定します。
① プール名の定義
(config)# ip dhcp pool SALES
(dhcp-config)#
② 配布するネットワークの指定
(dhcp-config)# network 192.168.1.0 255.255.255.0
③ デフォルトゲートウェイの設定
(dhcp-config)# default-router 192.168.1.254
④ DNSサーバの設定(任意)
(dhcp-config)# dns-server 172.16.1.10 172.16.1.11
⑤ ドメイン名の設定(任意)
(dhcp-config)# domain-name infraexpert.com
⑥ リース期間の設定(任意)
(dhcp-config)# lease 7
この例では7日間有効。
無期限にする場合は lease infinite を指定します。
DHCPデータベースエージェントの設定(オプション)
DHCPの割り当て情報を外部のFTP/TFTPサーバに保存する場合には、以下のように設定します。
(config)# ip dhcp database tftp://192.168.1.100/dhcp.db
特に外部保存を行わない場合は、以下を推奨設定として入れておきます。
(config)# no ip dhcp conflict logging
DHCPサーバのステータス確認コマンド
設定後は、以下のコマンドで状況を確認できます。
show ip dhcp pool… 設定したDHCPプールの情報を表示show ip dhcp binding… 割り当てられたIPアドレスとMACアドレスの対応関係を表示show ip dhcp conflict… IPアドレスの競合が発生した場合の情報を確認debug ip dhcp server packet… DHCP関連のパケットをリアルタイムで追跡(試験ラボで有効、本番環境では非推奨)
DHCPリレーエージェントの設定
DHCPサービスの有効化について
CiscoルータやスイッチでDHCP関連の設定を行うときは、まず機器自体がDHCPサービスを扱える状態である必要があります。とはいえ、Cisco IOSでは初期状態からDHCPサービスが有効化されているため、通常は特別な操作は不要です。もし手動で再度有効にしたい場合には、グローバルコンフィグモードで service dhcp コマンドを入力します。
DHCPリレーエージェントの役割
DHCPはブロードキャスト通信を利用します。そのため、異なるネットワークに存在するDHCPサーバとは直接やり取りができません。ここで登場するのが「DHCPリレーエージェント」です。リレーエージェントは、クライアントからのDHCP要求を受け取り、目的のDHCPサーバへユニキャストで転送します。
試験対策としては、「DHCPリレーはどのインターフェースで設定するか」を正確に押さえることが重要です。クライアントが接続するインターフェースに設定する、と覚えておくと混乱しません。
ip helper-address コマンド
リレーエージェントを有効化する際には、インターフェースコンフィグモードに入り ip helper-address DHCPサーバのIPアドレス を指定します。例えば、DHCPサーバが 192.168.2.10 にある場合には以下のように設定します。
(config)# interface GigabitEthernet 0/0
(config-if)# ip helper-address 192.168.2.10
これで、ルータはクライアントからのDHCP要求をサーバへ転送できるようになります。
ip forward-protocol コマンド
実は ip helper-address で転送されるのはDHCP通信(UDP 67・68番ポート)だけではありません。Cisco IOSではデフォルトで8種類のUDPブロードキャストがユニキャストに変換され、サーバに転送されます。
| ポート番号 | プロトコル | サービス名 | 内容 |
|---|---|---|---|
| 37 | UDP | time | 時刻同期 |
| 42 | UDP | nameserver | ホスト名解決 |
| 53 | UDP | domain | DNS |
| 67 | UDP | bootps | DHCPサーバ側 |
| 68 | UDP | bootpc | DHCPクライアント側 |
| 69 | UDP | tftp | 軽量ファイル転送 |
| 137 | UDP | netbios-ns | NetBIOS名解決 |
| 138 | UDP | netbios-dgm | NetBIOSデータグラム |
もし不要なものを転送したくない場合は、no ip forward-protocol udp サービス名 を使って制限できます。逆に、新しいサービスを追加で転送したいときは ip forward-protocol udp サービス名 を入力します。
不要な転送を禁止する設定例
例えば、DHCP関連の「bootps」と「bootpc」だけを残し、他の転送をすべて無効にしたい場合には次のように設定します。
(config)# interface vlan 10
(config-if)# ip address 192.168.1.254 255.255.255.0
(config-if)# ip helper-address 192.168.2.10
(config)# no ip forward-protocol udp tftp
(config)# no ip forward-protocol udp nameserver
(config)# no ip forward-protocol udp domain
(config)# no ip forward-protocol udp time
(config)# no ip forward-protocol udp netbios-ns
(config)# no ip forward-protocol udp netbios-dgm
このようにすることで、DHCP以外の不要な転送を抑制できます。
転送対象を追加する設定例
もし「mobile-ip」というUDP通信も転送したい場合には次のように追加入力します。
(config)# interface vlan 10
(config-if)# ip address 192.168.1.254 255.255.255.0
(config-if)# ip helper-address 192.168.2.10
(config)# ip forward-protocol udp mobile-ip
DHCPクライアントの設定
CiscoルータをDHCPクライアントにするケース
通常、CiscoルータはDHCPサーバやDHCPリレーとして動作することが多く、ルータ自身がDHCPクライアントになることはほとんどありません。しかし例外として、ISP(インターネットサービスプロバイダ)からブロードバンド回線を提供される場合には、WAN側のインターフェースがDHCPでアドレスを取得することがあります。例えば、家庭用ルータがプロバイダから自動的にグローバルIPをもらう仕組みと同じイメージです。
ip address dhcp コマンド
ルータのインターフェースに ip address dhcp を設定すると、そのインターフェースはDHCPクライアントとして動作し、DHCPサーバから自動的にIPアドレスを受け取ります。このとき、DHCPメッセージに含まれるデフォルトゲートウェイ(デフォルトルート情報)も一緒に反映されるため、ルータのルーティングテーブルには自動的にデフォルトルートが追加されます。
(config-if)# ip address dhcp
ISP接続を想定した設定例
以下の例では、LAN側を 192.168.1.0/24 ネットワークに固定し、WAN側をDHCPでアドレス取得する構成を示しています。さらに、LANからインターネットへ接続できるようにNATを併用しています。
R3(config)# interface GigabitEthernet 0/0
R3(config-if)# ip address 192.168.1.254 255.255.255.0
R3(config-if)# ip nat inside
R3(config)# interface GigabitEthernet 0/1
R3(config-if)# ip address dhcp
R3(config-if)# ip nat outside
R3(config)# ip route 0.0.0.0 0.0.0.0 dhcp
R3(config)# ip nat inside source list 1 interface GigabitEthernet 0/1 overload
R3(config)# access-list 1 permit 192.168.1.0 0.0.0.255
この設定のポイントを整理すると、以下のようになります。
- GigabitEthernet0/0(LAN側)
固定IPアドレス(192.168.1.254)を設定し、NATの「内側」として指定しています。 - GigabitEthernet0/1(WAN側)
DHCPでIPアドレスを取得し、NATの「外側」として指定しています。ISPから自動的にアドレスが割り当てられる部分です。 - デフォルトルートの設定
ip route 0.0.0.0 0.0.0.0 dhcpにより、DHCPで配布されたゲートウェイに従ってデフォルトルートが自動的に張られます。 - NATの設定
LAN内のプライベートアドレスをWAN側のグローバルアドレスへ変換しています。overloadを付与することでPAT(ポート番号を使ったアドレス変換)が有効になります。
DHCPオプション
DHCPオプションとは
DHCPサーバがクライアントへ渡す情報は、単なるIPアドレスやサブネットマスクだけではありません。実際には「DHCPオプション」と呼ばれるタグ付きの項目を通じて、デフォルトゲートウェイやDNSサーバなどの追加情報も一緒に伝えられます。さらに、特定の機器に合わせた拡張設定を渡すこともできるため、企業ネットワークでは重要な役割を持っています。
イメージとしては「アパートを借りたときに、部屋の鍵だけでなくゴミ出しのルールや非常口の場所も一緒に説明される」ようなものです。IPアドレスが「鍵」だとすると、DHCPオプションは「生活に必要な補足情報」にあたります。
よく使われるDHCPオプション番号
Cisco機器で特によく登場するオプションは次の通りです。試験では番号と用途をセットで覚えておくと安心です。
| オプション番号 | 説明 |
|---|---|
| 43 | WLC(ワイヤレスLANコントローラ)のIPアドレスをCisco Aironetアクセスポイントに通知する |
| 60 | VCI(Vendor Class Identifier)を伝える |
| 150 | Cisco IP PhoneにTFTPサーバのIPアドレスを通知する |
DHCPオプションの設定方法
オプションはDHCPプール設定モードで option コード番号 [ ascii | hex | ip ] の形式で指定します。渡したい情報の種類によって、文字列(ascii)、16進数(hex)、IPアドレス(ip)を選びます。
(dhcp-config)# option code [ ascii string | hex string | ip address ]
Cisco IP Phone への配布例
Cisco製IP Phoneを利用する場合、特に「オプション150」を使ってTFTPサーバのIPアドレスを通知するのが定番です。IP Phoneは起動時にTFTPから設定ファイルをダウンロードし、CUCM(Cisco Unified Communications Manager)と通信を開始するためです。
以下の例では、IP Phoneに基本的なネットワーク情報とTFTPサーバ(172.16.10.11 と 172.16.10.12)の情報を配布しています。
(config)# no ip dhcp conflict logging
(config)# ip dhcp excluded-address 192.168.10.1 192.168.10.10
(config)# ip dhcp pool IP-Phone-Net
(dhcp-config)# network 192.168.10.0 255.255.255.0
(dhcp-config)# default-router 192.168.10.1
(dhcp-config)# domain-name infraexpert.com
(dhcp-config)# dns-server 10.1.1.11 10.1.1.12
(dhcp-config)# option 150 ip 172.16.10.11 172.16.10.12
(dhcp-config)# lease infinite
このように、Cisco製品同士の場合は比較的シンプルに設定が完了します。
Avaya IP Phone への配布例
一方、他社製のIP Phone(例:Avaya)では、より複雑なオプション設定が必要になる場合があります。Avayaの場合は「オプション242」に文字列(ascii)で複数のパラメータをまとめて渡します。
(config)# no ip dhcp conflict logging
(config)# ip dhcp excluded-address 192.168.10.1 192.168.10.10
(config)# ip dhcp pool IP-Phone-Net
(dhcp-config)# network 192.168.10.0 255.255.255.0
(dhcp-config)# default-router 192.168.10.1
(dhcp-config)# option 242 ascii MCIPADD=172.16.10.10,HTTPSRVR=172.16.10.10,HTTPDIR=tftpboot
(dhcp-config)# lease infinite
このように、Cisco以外のベンダー機器ではDHCPサーバ設定が複雑化することがあり、実務ではInfobloxなど専用のDHCPアプライアンスを利用するケースも多いです。