Cisco IOSはDHCPサーバとしての機能も備えています。このページではDHCPサーバの基本的な設定方法についてまとめます。
DHCP sequence
各メッセージ概要
DHCPが使用するメッセージが以下の通りです概要をまとめると以下の通りです。
メッセージ | |
---|---|
Discover | DHCP clientからDHCP serverに対してIPアドレスを割り当ててもらうよう要求します。 |
Offer | DHCP serverがDHCP clientに割り当てるIPアドレスを通知します。 |
Request | DHCP clientが実際に使用するIPアドレスをDHCP Serverに通知します。 |
ACK | DHCP serverがDHCP clientにDHCP Requestで要求されたIPアドレスが使用可能である事を通知します。 |
NACK | DHCP serverがDHCP clientにDHCP Requestで要求されたIPアドレスが使用不可である事を通知します。 |
Release | DHCP clientがDHCP serverに割り当られたIPアドレスを使用しなくなった事を通知します。 |
DHCP Discover
DHCP DiscoverはDHCP clientがDHCP serverに対してIPアドレスを割り当ててもらうよう要求するメッセージです。DHCP clientは、まだIPアドレスが割り当てられていない状態なので、broadcast宛てにメッセージを送信します。
Ethernet II, Src: cc:00:07:30:00:00 (cc:00:07:30:00:00), Dst: Broadcast (ff:ff:ff:ff:ff:ff) Internet Protocol, Src: 0.0.0.0 (0.0.0.0), Dst: 255.255.255.255 (255.255.255.255) User Datagram Protocol, Src Port: bootpc (68), Dst Port: bootps (67) Source port: bootpc (68) Destination port: bootps (67) Length: 299 Checksum: 0x3536 [validation disabled] Bootstrap Protocol Message type: Boot Request (1) Hardware type: Ethernet Hardware address length: 6 Hops: 0 Transaction ID: 0x00001866 Seconds elapsed: 0 Bootp flags: 0x8000 (Broadcast) Client IP address: 0.0.0.0 (0.0.0.0) Your (client) IP address: 0.0.0.0 (0.0.0.0) Next server IP address: 0.0.0.0 (0.0.0.0) Relay agent IP address: 0.0.0.0 (0.0.0.0) Client MAC address: cc:00:07:30:00:00 (cc:00:07:30:00:00) Client hardware address padding: 00000000000000000000 Server host name not given Boot file name not given Magic cookie: (OK) Option: (t=53,l=1) DHCP Message Type = DHCP Discover Option: (t=57,l=2) Maximum DHCP Message Size = 1152 Option: (t=61,l=27) Client identifier Option: (t=12,l=2) Host Name = "R1" Option: (t=55,l=8) Parameter Request List End Option
DHCP Offer
DHCP ServerはDiscoverに対する返答として、Offerを返します。OfferはClientに割り当てるIPアドレスやリース期間、DHCP ServerのIPアドレスなどが含まれています。
Ethernet II, Src: cc:01:07:30:00:00 (cc:01:07:30:00:00), Dst: Broadcast (ff:ff:ff:ff:ff:ff) Internet Protocol, Src: 192.168.12.2 (192.168.12.2), Dst: 255.255.255.255 (255.255.255.255) User Datagram Protocol, Src Port: bootps (67), Dst Port: bootpc (68) Source port: bootps (67) Destination port: bootpc (68) Length: 308 Checksum: 0xad60 [validation disabled] Bootstrap Protocol Message type: Boot Reply (2) Hardware type: Ethernet Hardware address length: 6 Hops: 0 Transaction ID: 0x00001866 Seconds elapsed: 0 Bootp flags: 0x8000 (Broadcast) Client IP address: 0.0.0.0 (0.0.0.0) Your (client) IP address: 192.168.12.1 (192.168.12.1) Next server IP address: 0.0.0.0 (0.0.0.0) Relay agent IP address: 0.0.0.0 (0.0.0.0) Client MAC address: cc:00:07:30:00:00 (cc:00:07:30:00:00) Client hardware address padding: 00000000000000000000 Server host name not given Boot file name not given Magic cookie: (OK) Option: (t=53,l=1) DHCP Message Type = DHCP Offer Option: (t=54,l=4) DHCP Server Identifier = 192.168.12.2 Option: (t=51,l=4) IP Address Lease Time = 1 day Option: (t=58,l=4) Renewal Time Value = 12 hours Option: (t=59,l=4) Rebinding Time Value = 21 hours Option: (t=1,l=4) Subnet Mask = 255.255.255.0 End Option Padding
DHCP Request
DHCP ServerはOfferに対する返答として、Requestを返します。
DHCP Serverが冗長化されている構成では、Clientは複数のサーバからOfferを受け取ります。ClientはどのサーバからのOfferを採用するかを通知するために、DHCP ServerのIPアドレスなどが含まれたメッセージをbroadcast宛てでDHCP Serverに返します。
Ethernet II, Src: cc:00:07:30:00:00 (cc:00:07:30:00:00), Dst: Broadcast (ff:ff:ff:ff:ff:ff) Internet Protocol, Src: 0.0.0.0 (0.0.0.0), Dst: 255.255.255.255 (255.255.255.255) User Datagram Protocol, Src Port: bootpc (68), Dst Port: bootps (67) Source port: bootpc (68) Destination port: bootps (67) Length: 317 Checksum: 0xad2f [validation disabled] Bootstrap Protocol Message type: Boot Request (1) Hardware type: Ethernet Hardware address length: 6 Hops: 0 Transaction ID: 0x00001866 Seconds elapsed: 0 Bootp flags: 0x8000 (Broadcast) Client IP address: 0.0.0.0 (0.0.0.0) Your (client) IP address: 0.0.0.0 (0.0.0.0) Next server IP address: 0.0.0.0 (0.0.0.0) Relay agent IP address: 0.0.0.0 (0.0.0.0) Client MAC address: cc:00:07:30:00:00 (cc:00:07:30:00:00) Client hardware address padding: 00000000000000000000 Server host name not given Boot file name not given Magic cookie: (OK) Option: (t=53,l=1) DHCP Message Type = DHCP Request Option: (t=57,l=2) Maximum DHCP Message Size = 1152 Option: (t=61,l=27) Client identifier Option: (t=54,l=4) DHCP Server Identifier = 192.168.12.2 Option: (t=50,l=4) Requested IP Address = 192.168.12.1 Option: (t=51,l=4) IP Address Lease Time = 1 day Option: (t=12,l=2) Host Name = "R1" Option: (t=55,l=8) Parameter Request List End Option
DHCP ACK, NACK
DHCP ServerはRequestに対する返答として、ACKまたはNACKを返します。Requestで要求されたIPアドレスが使用可能である場合はACKを、使用不能である場合はNACKを返します。
Ethernet II, Src: cc:01:07:30:00:00 (cc:01:07:30:00:00), Dst: Broadcast (ff:ff:ff:ff:ff:ff) Internet Protocol, Src: 192.168.12.2 (192.168.12.2), Dst: 255.255.255.255 (255.255.255.255) User Datagram Protocol, Src Port: bootps (67), Dst Port: bootpc (68) Source port: bootps (67) Destination port: bootpc (68) Length: 308 Checksum: 0xaa60 [validation disabled] Bootstrap Protocol Message type: Boot Reply (2) Hardware type: Ethernet Hardware address length: 6 Hops: 0 Transaction ID: 0x00001866 Seconds elapsed: 0 Bootp flags: 0x8000 (Broadcast) Client IP address: 0.0.0.0 (0.0.0.0) Your (client) IP address: 192.168.12.1 (192.168.12.1) Next server IP address: 0.0.0.0 (0.0.0.0) Relay agent IP address: 0.0.0.0 (0.0.0.0) Client MAC address: cc:00:07:30:00:00 (cc:00:07:30:00:00) Client hardware address padding: 00000000000000000000 Server host name not given Boot file name not given Magic cookie: (OK) Option: (t=53,l=1) DHCP Message Type = DHCP ACK Option: (t=54,l=4) DHCP Server Identifier = 192.168.12.2 Option: (t=51,l=4) IP Address Lease Time = 1 day Option: (t=58,l=4) Renewal Time Value = 12 hours Option: (t=59,l=4) Rebinding Time Value = 21 hours Option: (t=1,l=4) Subnet Mask = 255.255.255.0 End Option Padding
gratuitous ARP
DHCP serverによって取得したアドレスを実際に使用する前に、自身が使用する予定のIPアドレスが他のホストに使用されていないか
最終確認の意味を込めてARP requestを送信します。このARPは、gratuitous ARPと呼ばれ、自分自身のIPアドレスを宛先IPアドレスとし、ARPに対するresponseがない事によって”IPアドレスの重複がない”と判断します。
Ethernet II, Src: cc:00:07:30:00:00 (cc:00:07:30:00:00), Dst: Broadcast (ff:ff:ff:ff:ff:ff) Address Resolution Protocol (reply/gratuitous ARP) Hardware type: Ethernet (0x0001) Protocol type: IP (0x0800) Hardware size: 6 Protocol size: 4 Opcode: reply (0x0002) [Is gratuitous: True] Sender MAC address: cc:00:07:30:00:00 (cc:00:07:30:00:00) Sender IP address: 192.168.12.1 (192.168.12.1) Target MAC address: Broadcast (ff:ff:ff:ff:ff:ff) Target IP address: 192.168.12.1 (192.168.12.1)
DHCP configuration
DHCP Server 必須設定
DHCPによって割り当てるアドレスを定義します。
Router(config)# ip dhcp pool <pool> Router(dhcp-config)# network <addr> <mask>
DHCP割当アドレスの中から、除外すべきアドレスを定義します。例えばDHCPサーバやWebサーバなど固定アドレスを付与すべきサーバが除外対象として挙げられます。
Router(config)# ip dhcp exclude-address <low_addr> <high_addr>
DHCP Server 任意設定
DHCPによってIPアドレスだけではなく、デフォルトゲートウェイ・DNSサーバ・リース期間
Router(config)# ip dhcp pool <pool> Router(dhcp-config)#dns-server <primary_addr> [ <secondary_addr> ] Router(dhcp-config)#default-router <primary_addr> [ <secondary_addr> ] Router(dhcp-config)#domain-name <domain_name> Router(dhcp-config)#lease { infinity | <days> [ <hours> [ <minute> ] ] }
DHCP Client 必須設定
以下のコマンドでDHCPによるアドレス取得が可能です。client-idは別の機会に説明します。
Router(config-if)# ip address dhcp [ client-id <interface> ]
動作確認
以下の環境で動作確認を行います。R1をDHCP Clientとして、R2をDHCP Serverとして設定します。
f0/0 f0/0 +------+dhcp .2+------+ | R1 +----------+ R2 | +------+ +------+ 192.168.12.0/24
[R1] interface FastEthernet0/0 ip address dhcp [R2] ip dhcp excluded-address 192.168.12.2 ! ip dhcp pool POOL_VLAN_12 network 192.168.12.0 255.255.255.0 ! interface FastEthernet0/0 ip address 192.168.12.2 255.255.255.0
なお、設定全文は下記ファイルです。
DHCPによってIPアドレスが付与されると、以下のようなメッセージがコンソールに表示されます。
R1# *Mar 1 00:00:18.175: %DHCP-6-ADDRESS_ASSIGN: Interface FastEthernet0/0 assigned DHCP address 192.168.12.1, mask 255.255.255.0, hostname R1 R1#
付与されたIPアドレスは、show ip interface briefなどで確認する事ができます。
R1#show ip interface brief Interface IP-Address OK? Method Status Protocol FastEthernet0/0 192.168.12.1 YES DHCP up up R1#