DHCPの練習
本エントリについて
Dynagen、Dynamips、vpcs を使って、DHCP の動作を観察します。
Dynagen、Dynamips、vpcs の利用環境はすでに整っているものとします。
参考サイト
環境について
練習をする環境の基本的な構成は下記の通りです。
(Like を頂ければ、クラウドサービス等使って書き直しますが、現状はテキストで。。。)
[pc1] dhcp === (10.2.0.0/24) === .254 fa0/0 [r1] fe0/1 .254 or dhcp === (10.2.2.0/24) === .253 faf0/1 [r2] fe0/0 .254 (10.2.1.0/24)
dhcp [pc2]
Dynagen の設定ファイルの主要な部分は以下のようになります。
[[ROUTER r1]]
model = 3725
console = 2001
f0/0 = NIO_udp:30000:127.0.0.1:20000
f0/1 = sw1 1
[[ROUTER r2]]
model = 3725
console = 2002
f0/1 = sw1 2
[[ETHSW sw1]]
1 = access 1
2 = access 1
3 = access 1 NIO_udp:30001:127.0.0.1:20001
r2 基本設定
あとからDHCP サーバの機能を設定します。
conf t
hostname r2
int fa0/0
ip addr 10.2.1.254 255.255.255.0
no shut
int fa0/1
ip addr 10.2.2.253 255.255.255.0
no shut
r1 基本設定
あとからDHCP クライアントの設定をします。
その後、固定アドレスに振りなおしたあと、DHCP リレーエージェントの設定をします。
conf t
hostname r1
int fa0/0
ip addr 10.2.0.254 255.255.255.0
no shut
int fa0/1
ip addr 10.2.2.254 255.255.255.0
no shut
DHCP サーバの設定
設定
r2 をDHCPサーバとして設定します。
リース対象外としたいアドレスを ip dhcp excluded-address で指定します。
DHCPプールを作成し、リースするアドレス帯等を指定します。
service dhcp により、DHCPのサービスを起動します。
(config)# ip dhcp excluded-address 10.2.2.253 10.2.2.254
(config)# ip dhcp pool dhcp-pool
(dhcp-config)# network 10.2.2.0 255.255.255.0
(dhcp-config)# dns-server 10.2.2.254
(dhcp-config)# default-router 10.2.2.253
(config)# exit
(config)# service dhcp
設定内容を確認します。
# show ip dhcp pool
Pool dhcp-pool :
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.2.2.1 10.2.2.1 - 10.2.2.254 0
# show ip dhcp binding
Bindings from all pools not associated with VRF:
IP address Client-ID/ Lease expiration Type
Hardware address/
User name
# show ip dhcp server statistics
Memory usage 23558
Address pools 1
Database agents 0
Automatic bindings 0
Manual bindings 0
Expired bindings 0
Malformed messages 0
Secure arp entries 0
Message Received
BOOTREQUEST 0
DHCPDISCOVER 6
DHCPREQUEST 0
DHCPDECLINE 0
DHCPRELEASE 0
DHCPINFORM 0
Message Sent
BOOTREPLY 0
DHCPOFFER 0
DHCPACK 0
DHCPNAK 0
dhcp でアドレスを割り当てる
デバッグ情報を出しつつ、dhcp で vpcs にアドレスを割り当てます。
Discover → Offer → Request → Ack の流れが見て取れます。
VPCS[2]> ip dhcp -d [10/260]
Opcode: 1 (REQUEST)
Client IP Address: 0.0.0.0
Your IP Address: 0.0.0.0
Server IP Address: 0.0.0.0
Gateway IP Address: 0.0.0.0
Client MAC Address: 00:50:79:66:68:01
Option 53: Message Type = Discover
Option 12: Host Name = VPCS2
Option 61: Client Identifier = Hardware Type=Ethernet MAC Address = 00:50:79:66:68:01
Opcode: 1 (REQUEST)
Client IP Address: 0.0.0.0
Your IP Address: 0.0.0.0
Server IP Address: 0.0.0.0
Gateway IP Address: 0.0.0.0
Client MAC Address: 00:50:79:66:68:01
Option 53: Message Type = Discover
Option 12: Host Name = VPCS2
Option 61: Client Identifier = Hardware Type=Ethernet MAC Address = 00:50:79:66:68:01
Opcode: 2 (REPLY)
Client IP Address: 0.0.0.0
Your IP Address: 10.2.2.2
Server IP Address: 0.0.0.0
Gateway IP Address: 0.0.0.0
Client MAC Address: 00:50:79:66:68:01
Option 53: Message Type = Offer
Option 54: DHCP Server = 10.2.2.253
Option 51: Lease Time = 86400
Option 58: Renewal Time = 43200
Option 59: Rebinding Time = 75600
Option 1: Subnet Mask = 255.255.255.0
Option 6: DNS Server = 10.2.2.254
Option 3: Router = 10.2.2.253
Opcode: 1 (REQUEST)
Client IP Address: 10.2.2.2
Your IP Address: 0.0.0.0
Server IP Address: 0.0.0.0
Gateway IP Address: 0.0.0.0
Client MAC Address: 00:50:79:66:68:01
Option 53: Message Type = Request
Option 54: DHCP Server = 10.2.2.253
Option 50: Requested IP Address = 10.2.2.2
Option 61: Client Identifier = Hardware Type=Ethernet MAC Address = 00:50:79:66:68:01
Option 12: Host Name = VPCS2
Opcode: 2 (REPLY)
Client IP Address: 10.2.2.2
Your IP Address: 10.2.2.2
Server IP Address: 0.0.0.0
Gateway IP Address: 0.0.0.0
Client MAC Address: 00:50:79:66:68:01
Option 53: Message Type = Ack
Option 54: DHCP Server = 10.2.2.253
Option 51: Lease Time = 86400
Option 58: Renewal Time = 43200
Option 59: Rebinding Time = 75600
Option 1: Subnet Mask = 255.255.255.0
Option 6: DNS Server = 10.2.2.254
Option 3: Router = 10.2.2.253
IP 10.2.2.2/24 GW 10.2.2.253
VPCS[2]> show ip
NAME : VPCS[2]
IP/MASK : 10.2.2.2/24
GATEWAY : 10.2.2.253
DNS : 10.2.2.254
DHCP SERVER : 10.2.2.253
MAC : 00:50:79:66:68:01
LPORT : 20001
RHOST:PORT : 127.0.0.1:30001
MTU: : 1500
DHCPサーバ側のデバッグ情報です。
こちらも DHCPDISCOVER → DHCPOFFER → DHCPREQUEST → DHCPACK の流れが見て取れると思います。
# debug ip dhcp server packet
*Mar 1 00:21:56.551: DHCPD: DHCPDISCOVER received from client 0100.5079.6668.01 on interface FastEthernet0/1.
*Mar 1 00:21:56.555: DHCPD: Allocate an address without class information (10.2.2.0)
*Mar 1 00:21:57.591: %DHCPD-4-PING_CONFLICT: DHCP address conflict: server pinged 10.2.2.1.
*Mar 1 00:21:59.611: DHCPD: Sending DHCPOFFER to client 0100.5079.6668.01 (10.2.2.2).
*Mar 1 00:21:59.615: DHCPD: creating ARP entry (10.2.2.2, 0050.7966.6801, vrf 0).
*Mar 1 00:21:59.619: DHCPD: unicasting BOOTREPLY to client 0050.7966.6801 (10.2.2.2).
*Mar 1 00:21:59.627: DHCPD: DHCPDISCOVER received from client 0100.5079.6668.01 on interface FastEthernet0/1.
*Mar 1 00:21:59.627: DHCPD: Sending DHCPOFFER to client 0100.5079.6668.01 (10.2.2.2).
*Mar 1 00:21:59.627: DHCPD: creating ARP entry (10.2.2.2, 0050.7966.6801, vrf 0).
*Mar 1 00:21:59.627: DHCPD: unicasting BOOTREPLY to client 0050.7966.6801 (10.2.2.2).
*Mar 1 00:22:00.555: DHCPD: DHCPREQUEST received from client 0100.5079.6668.01.
*Mar 1 00:22:00.559: DHCPD: No default domain to append - abort update
*Mar 1 00:22:00.559: DHCPD: Sending DHCPACK to client 0100.5079.6668.01 (10.2.2.2).
*Mar 1 00:22:00.559: DHCPD: unicasting BOOTREPLY to client 0050.7966.6801 (10.2.2.2).
アドレスを一つ割り当てた後の、DHCPサーバの情報です。
# show ip dhcp pool
Pool dhcp-pool :
Utilization mark (high/low) : 100 / 0
Subnet size (first/next) : 0 / 0
Total addresses : 254
Leased addresses : 1
Pending event : none
1 subnet is currently in the pool :
Current index IP address range Leased addresses
10.2.2.3 10.2.2.1 - 10.2.2.254 1
# show ip dhcp binding
Bindings from all pools not associated with VRF:
IP address Client-ID/ Lease expiration Type
Hardware address/
User name
10.2.2.2 0100.5079.6668.01 Mar 02 2002 12:22 AM Automatic
# show ip dhcp server statistics
Memory usage 32041
Address pools 1
Database agents 0
Automatic bindings 1
Manual bindings 0
Expired bindings 0
Malformed messages 0
Secure arp entries 0
Message Received
BOOTREQUEST 0
DHCPDISCOVER 8
DHCPREQUEST 1
DHCPDECLINE 0
DHCPRELEASE 0
DHCPINFORM 0
Message Sent
BOOTREPLY 0
DHCPOFFER 2
DHCPACK 1
DHCPNAK 0
DHCP client
CiscoルータはDHCPクライアントとしても動作します。
r1 を DHCPクライアントとして設定してみます。
(config)# int fa0/1
(config-if)# ip address dhcp
*Mar 1 00:03:07.891: %DHCP-6-ADDRESS_ASSIGN: Interface FastEthernet0/1 assigned DHCP address 10.2.2.3, mask 255.255.255.0, hostname r1
# show ip int bri
Interface IP-Address OK? Method Status Protocol
FastEthernet0/0 10.2.0.254 YES NVRAM up up
FastEthernet0/1 10.2.2.3 YES DHCP up up
DHCPサーバ側のデバッグ情報です。
MACアドレスではなく、クライアントID が表示されています。
ip address dhcp
コマンドを実行するときに、MACアドレスをクライアントIDとして使用するように指定することもできるようです。
*Mar 1 00:32:46.739: DHCPD: DHCPDISCOVER received from client 0063.6973.636f.2d63.3230.302e.3034.6332.2e30.3030.312d.4661.302f.31 on interface FastEthernet0/1.
*Mar 1 00:32:46.739: DHCPD: Allocate an address without class information (10.2.2.0)
*Mar 1 00:32:48.739: DHCPD: Sending DHCPOFFER to client 0063.6973.636f.2d63.3230.302e.3034.6332.2e30.3030.312d.4661.302f.31 (10.2.2.3).
*Mar 1 00:32:48.743: DHCPD: broadcasting BOOTREPLY to client c200.04c2.0001.
*Mar 1 00:32:48.775: DHCPD: DHCPREQUEST received from client 0063.6973.636f.2d63.3230.302e.3034.6332.2e30.3030.312d.4661.302f.31.
*Mar 1 00:32:48.779: DHCPD: No default domain to append - abort update
*Mar 1 00:32:48.779: DHCPD: Sending DHCPACK to client 0063.6973.636f.2d63.3230.302e.3034.6332.2e30.3030.312d.4661.302f.31 (10.2.2.3).
*Mar 1 00:32:48.779: DHCPD: broadcasting BOOTREPLY to client c200.04c2.0001.
アドレスを割り当てた後の、DHCPサーバの情報です。
# show ip dhcp binding
Bindings from all pools not associated with VRF:
IP address Client-ID/ Lease expiration Type
Hardware address/
User name
10.2.2.2 0100.5079.6668.01 Mar 02 2002 12:22 AM Automatic
10.2.2.3 0063.6973.636f.2d63. Mar 02 2002 12:32 AM Automatic
3230.302e.3034.6332.
2e30.3030.312d.4661.
302f.31
DHCPリレーエージェント
DHCPはブロードキャストを利用するので、基本的にルータを超えることができません。
DHCPリレーエージェントの機能を利用することで、ブロードキャストを指定したアドレスへユニキャスト転送することができるようになります。
r1 をDHCPリレーエージェントとして設定します。
ルーティング設定
DHCP クライアントのセグメントと、DHCPサーバの間でのルーティングが必要です。
r1 にOSPF の設定を投入します。
# show run | section router ospf
router ospf 1
log-adjacency-changes
network 10.2.0.0 0.0.0.255 area 0
network 10.2.2.0 0.0.0.255 area 0
# show ip int bri
Interface IP-Address OK? Method Status Protocol
FastEthernet0/0 10.2.0.254 YES manual up up
FastEthernet0/1 10.2.2.254 YES manual up up
# show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route
Gateway of last resort is not set
10.0.0.0/24 is subnetted, 3 subnets
C 10.2.0.0 is directly connected, FastEthernet0/0
O 10.2.1.0 [110/20] via 10.2.2.253, 00:04:42, FastEthernet0/1
C 10.2.2.0 is directly connected, FastEthernet0/1
r2 にも OSPF の設定を投入します。
# show run | section router ospf
router ospf 1
log-adjacency-changes
network 10.2.1.0 0.0.0.255 area 0
network 10.2.2.0 0.0.0.255 area 0
# show ip int bri
Interface IP-Address OK? Method Status Protocol
FastEthernet0/0 10.2.1.254 YES NVRAM up up
FastEthernet0/1 10.2.2.253 YES NVRAM up up
# show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route
Gateway of last resort is not set
10.0.0.0/24 is subnetted, 3 subnets
O 10.2.0.0 [110/20] via 10.2.2.254, 00:05:16, FastEthernet0/1
C 10.2.1.0 is directly connected, FastEthernet0/0
C 10.2.2.0 is directly connected, FastEthernet0/1
DHCPアドレスプールを追加
r2 に、10.2.0.0/24 セグメントのための DHCPアドレスプールを追加します。
(config)# ip dhcp excluded-address 10.2.0.253 10.2.0.254
(config)# ip dhcp pool other-pool
(dhcp-config)# network 10.2.0.0 255.255.255.0
(dhcp-config)# dns-server 10.2.2.254
(dhcp-config)# default-router 10.2.0.254
作成したアドレスプールを確認します。
# show ip dhcp pool other-pool
Pool other-pool :
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.2.0.1 10.2.0.1 - 10.2.0.254 0
DHCPリレーエージェント設定
r1 にDHCPリレーエージェントとしての設定を入れます。
DHCPリレーエージェントによって、ブロードキャストがユニキャストに変換されます。
ユニキャストですので、隣接していないDHCPサーバまで転送することができます。
(config)# int fa0/0
(config-if)# ip helper-address 10.2.1.254
dhcp でアドレスを割り当てる
vpcs に dhcp でアドレスを割り当ててみます。
VPCS[1]> ip dhcp -d
Opcode: 1 (REQUEST)
Client IP Address: 0.0.0.0
Your IP Address: 0.0.0.0
Server IP Address: 0.0.0.0
Gateway IP Address: 0.0.0.0
Client MAC Address: 00:50:79:66:68:00
Option 53: Message Type = Discover
Option 12: Host Name = VPCS1
Option 61: Client Identifier = Hardware Type=Ethernet MAC Address = 00:50:79:66:68:00
Opcode: 1 (REQUEST)
Client IP Address: 0.0.0.0
Your IP Address: 0.0.0.0
Server IP Address: 0.0.0.0
Gateway IP Address: 0.0.0.0
Client MAC Address: 00:50:79:66:68:00
Option 53: Message Type = Discover
Option 12: Host Name = VPCS1
Option 61: Client Identifier = Hardware Type=Ethernet MAC Address = 00:50:79:66:68:00
Opcode: 2 (REPLY)
Client IP Address: 0.0.0.0
Your IP Address: 10.2.0.2
Server IP Address: 0.0.0.0
Gateway IP Address: 10.2.0.254
Client MAC Address: 00:50:79:66:68:00
Option 53: Message Type = Offer
Option 54: DHCP Server = 10.2.2.253
Option 51: Lease Time = 86400
Option 58: Renewal Time = 43200
Option 59: Rebinding Time = 75600
Option 1: Subnet Mask = 255.255.255.0
Option 6: DNS Server = 10.2.2.254
Option 3: Router = 10.2.0.254
Opcode: 1 (REQUEST)
Client IP Address: 10.2.0.2
Your IP Address: 0.0.0.0
Server IP Address: 0.0.0.0
Gateway IP Address: 0.0.0.0
Client MAC Address: 00:50:79:66:68:00
Option 53: Message Type = Request
Option 54: DHCP Server = 10.2.2.253
Option 50: Requested IP Address = 10.2.0.2
Option 61: Client Identifier = Hardware Type=Ethernet MAC Address = 00:50:79:66:68:00
Option 12: Host Name = VPCS1
Opcode: 2 (REPLY)
Client IP Address: 10.2.0.2
Your IP Address: 10.2.0.2
Server IP Address: 0.0.0.0
Gateway IP Address: 10.2.0.254
Client MAC Address: 00:50:79:66:68:00
Option 53: Message Type = Ack
Option 54: DHCP Server = 10.2.2.253
Option 51: Lease Time = 86400
Option 58: Renewal Time = 43200
Option 59: Rebinding Time = 75600
Option 1: Subnet Mask = 255.255.255.0
Option 6: DNS Server = 10.2.2.254
Option 3: Router = 10.2.0.254
IP 10.2.0.2/24 GW 10.2.0.254
VPCS[1]> show ip
NAME : VPCS[1]
IP/MASK : 10.2.0.2/24
GATEWAY : 10.2.0.254
DNS : 10.2.2.254
DHCP SERVER : 10.2.0.254
MAC : 00:50:79:66:68:00
LPORT : 20000
RHOST:PORT : 127.0.0.1:30000
MTU: : 1500
リレーエージェントのデバッグ情報です。
*Mar 1 00:52:31.207: DHCPD: setting giaddr to 10.2.0.254.
*Mar 1 00:52:31.211: DHCPD: BOOTREQUEST from 0100.5079.6668.00 forwarded to 10.2.1.254.
*Mar 1 00:52:32.195: DHCPD: setting giaddr to 10.2.0.254.
*Mar 1 00:52:32.199: DHCPD: BOOTREQUEST from 0100.5079.6668.00 forwarded to 10.2.1.254.
*Mar 1 00:52:33.251: DHCPD: forwarding BOOTREPLY to client 0050.7966.6800.
*Mar 1 00:52:33.251: DHCPD: creating ARP entry (10.2.0.2, 0050.7966.6800, vrf 0).
*Mar 1 00:52:33.251: DHCPD: unicasting BOOTREPLY to client 0050.7966.6800 (10.2.0.2).
*Mar 1 00:52:33.263: DHCPD: forwarding BOOTREPLY to client 0050.7966.6800.
*Mar 1 00:52:33.263: DHCPD: creating ARP entry (10.2.0.2, 0050.7966.6800, vrf 0).
*Mar 1 00:52:33.263: DHCPD: unicasting BOOTREPLY to client 0050.7966.6800 (10.2.0.2).
*Mar 1 00:52:35.195: DHCPD: Finding a relay for client 0100.5079.6668.00 on interface FastEthernet0/0.
*Mar 1 00:52:35.199: DHCPD: setting giaddr to 10.2.0.254.
*Mar 1 00:52:35.203: DHCPD: BOOTREQUEST from 0100.5079.6668.00 forwarded to 10.2.1.254.
*Mar 1 00:52:35.215: DHCPD: forwarding BOOTREPLY to client 0050.7966.6800.
*Mar 1 00:52:35.219: DHCPD: unicasting BOOTREPLY to client 0050.7966.6800 (10.2.0.2).
DHCPサーバ側のデバッグ情報です。
*Mar 1 01:22:16.183: DHCPD: DHCPDISCOVER received from client 0100.5079.6668.00 through relay 10.2.0.254.
*Mar 1 01:22:16.187: DHCPD: Allocate an address without class information (10.2.0.0)
*Mar 1 01:22:18.191: DHCPD: Sending DHCPOFFER to client 0100.5079.6668.00 (10.2.0.2).
*Mar 1 01:22:18.195: DHCPD: unicasting BOOTREPLY for client 0050.7966.6800 to relay 10.2.0.254.
*Mar 1 01:22:18.199: DHCPD: DHCPDISCOVER received from client 0100.5079.6668.00 through relay 10.2.0.254.
*Mar 1 01:22:18.203: DHCPD: Sending DHCPOFFER to client 0100.5079.6668.00 (10.2.0.2).
*Mar 1 01:22:18.207: DHCPD: unicasting BOOTREPLY for client 0050.7966.6800 to relay 10.2.0.254.
*Mar 1 01:22:20.159: DHCPD: DHCPREQUEST received from client 0100.5079.6668.00.
*Mar 1 01:22:20.163: DHCPD: No default domain to append - abort update
*Mar 1 01:22:20.163: DHCPD: Sending DHCPACK to client 0100.5079.6668.00 (10.2.0.2).
*Mar 1 01:22:20.167: DHCPD: unicasting BOOTREPLY for client 0050.7966.6800 to relay 10.2.0.254.
割り当てた後のDHCPアドレスプールの情報です。
# show ip dhcp pool other-pool
Pool other-pool :
Utilization mark (high/low) : 100 / 0
Subnet size (first/next) : 0 / 0
Total addresses : 254
Leased addresses : 1
Pending event : none
1 subnet is currently in the pool :
Current index IP address range Leased addresses
10.2.0.3 10.2.0.1 - 10.2.0.254 1
まとめ
以上、Dynagen、Dynamips、vpcs を使った DHCP設定の練習について記載しました。
show dhcp lease コマンドの出力結果を取らなかったのが心残りです。折を見て記事を書き直したいと思います。
Discussion