この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、ももんが大好きのトランです。みなさんいかがお過ごしでしょうか?
きょうは、Cisco IOSでDHCPサーバを構成する方法についてご紹介したいと思います。
目標
ここに、単一のインターネット接続を複数のクライアントで共有するために設置したCisco IOSルータがあります。このルータは、以下のようにEthernet0からプロバイダへ接続して、DHCPでIPアドレスを取得し、そのIPアドレスでマスカレードするためにPer-session NAT (PAT)を実行しています。よくあるブロードバンドルータです。
今回は、このネットワークへ接続したクライアントでプラグアンドプレイのIP設定を実現するためにDHCPサーバを構成する方法についてご紹介します。
(注意: 既に運用中のネットワークで勝手にDHCPサーバを置くと大変なことになります。必ず物理的に隔離されたネットワークで試すようにしてください。)
設定内容
早速やってみましょう。DHCPサーバを構成する前に、必要に応じてプールから除外したいIPアドレスを登録します。ルータ自身のIPアドレスは自動的に除外されるため、この設定は一部のIPアドレスを他のネットワークアプライアンスで使用したい場合などに行います。
ip-10-132-146-1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
ip-10-132-146-1(config)#ip dhcp ?
excluded-address Prevent DHCP from assigning certain addresses
ip-10-132-146-1(config)#ip dhcp excluded-address 10.0.0.1 10.0.0.31
クライアントID (DHCP Option 61) やMACアドレスを使った静的なアドレス割り当てを構成したい場合は、以下のページでConfiguring DHCP Static Mappingを参照します。
続いて以下の要領でDHCPプールを作成しますが、DHCPサーバを実行するためのインターフェイスを特に指定していないことに注目してください。Cisco IOSでは、リクエストを受け取ったインターフェイスのIPアドレスとサブネットをもとに使用するDHCPプールを決定します。
ip-10-132-146-1(config)#ip dhcp pool ?
LINE Pool name
ip-10-132-146-1(config)#ip dhcp pool 10-0-0-0
ip-10-132-146-1(dhcp-config)#?
DHCP pool configuration commands:
import Programatically importing DHCP option parameters
ip-10-132-146-1(dhcp-config)#import ?
all all DHCP options
ip-10-132-146-1(dhcp-config)#import all
ip-10-132-146-1(dhcp-config)#network 10.0.0.0 255.255.255.0
ip-10-132-146-1(dhcp-config)#default-router 10.0.0.1
ip-10-132-146-1(dhcp-config)#exit
ip-10-132-146-1(config)#do show ip dhcp pool
Pool 10-0-0-0 :
Utilization mark (high/low) : 100 / 0
Subnet size (first/next) : 0 / 0
Total addresses : 254
Leased addresses : 0
Pending event : none
1 subnet is currently in the pool :
Current index IP address range Leased addresses
10.0.0.1 10.0.0.1 - 10.0.0.254 0
単一のDHCPプールをサービスするための設定は以上ですが、import allというコマンドに注目してください。import allは、ルータ自身がDHCPクライアントとして取得したDHCPオプション (DNSサーバやTFTPサーバなど) をそのDHCPプールで流用するための機能です。ここでは、ルータ自身がISPのDHCPサーバから取得したDNSアドレスが«インポート»されています。
ip-10-132-146-1(config)#do show ip dhcp import
Address Pool Name: 10-0-0-0
Domain Name Server(s): 198.51.100.79 198.51.100.151
ip-10-132-146-1(config)#do show dhcp ?
lease Show DHCP Addresses leased from a server
server Show DHCP Servers we know about
ip-10-132-146-1(config)#do show dhcp server
DHCP server: ANY (255.255.255.255)
Leases: 136
Offers: 1 Requests: 68 Acks : 68 Naks: 0
Declines: 0 Releases: 0 Query: 0 Bad: 0
Forcerenews: 0 Failures: 0
DNS0: 198.51.100.79, DNS1: 198.51.100.151
Subnet: 255.255.255.0
作成したDHCPプールで異なるDNSサーバを通知したい場合、以下の要領で登録します。この場合、import allでインポートされたDNSサーバは無視されます。
ip-10-132-146-1(config)#ip dhcp pool 10-0-0-0
ip-10-132-146-1(dhcp-config)#?
DHCP pool configuration commands:
dns-server DNS servers
ip-10-132-146-1(dhcp-config)#dns-server 64.6.64.6 64.6.65.6
ip-10-132-146-1(dhcp-config)#exit
以上でDHCPサーバが構成できました。クライアントのIP設定をDHCPに変更して、正しい設定が適用されることを確認しましょう!
余談
ところで、現代のOSはDHCPオプションを通して得られたリソース (今回はDNSサーバ) が実際に使用可能であるか確認してからシステムに反映させるよう作られているようです (macOS Sierraで確認)。以上の設定が正しく行われていても、ルーティングなど他の設定に不備がある場合はDHCPクライアントでDNSサーバが反映されないことがある点に注意してください。
おわりに
いかがでしたか? 今回は、Cisco IOSでDHCPサーバを構成する方法についてご紹介しました。次回はCBAC (コンテキストベース アクセス制御) を構成してみたいと思います。お楽しみに!
したっけまた?