2014-06-17 09:28 AM 2019-03-22 07:05 AM 更新
本ドキュメントは下記リファレンスに記載されている DHCP Static Mapping 設定時のトラブルシューティングについて記載します。
DHCP Static Mapping では、マッピングファイルを作成しておくことで静的にIPアドレスを端末に割り当てることができ、その方法としては下記のいずれかの情報をもとにマッピングを行います。
使用している OS などにより、DHCP からのアドレス自動取得とした際、DHCP Client Identifier を送信するものと、送信しないものがあり、マッピングファイルを作成した際に意図したアドレス割り当てができないといったケースがあるため、それを解決する方法を解説します。
注意 : 下記は端末に Linux を想定して説明しておりますが、Linux の設定/操作についての詳細は Linux のマニュアルや解説本を参照してください。
R1 : Cisco892J 15.2(4)M4
PC : CentOS 5.8
下記が DHCPサーバ(R1) の設定と、クライアント(PC) の設定になります。
DHCP サーバでは flash:static-bindings をマッピングファイルとして作成しています。
R1
running-config
ip dhcp pool pool1 origin file flash:static-bindings default-router 192.168.1.1 ! interface GigabitEthernet0 ip address 192.168.1.1 255.255.255.0 duplex auto speed auto !
flash:static-bindings
*time* Jun 17 2014 07:52 AM !IP address Type Hardware address Lease expiration 192.168.1.100 id 01.0050.56a5.5d9d Infinite *end*
上記マッピングファイルでは "id" とあることから、DHCP Client Identifier を使って割り当てるように設定されています。
また、通常 DHCP Client Identifier は "01." + MAC address となります。"01" は Hardware Type を示しており、Ethernet の場合は "01" になります。詳しくは RFC2132 を参照ください。
PC
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 ONBOOT=yes BOOTPROTO=static HWADDR=00:50:56:a5:5d:9d
PC 上で ifdown/ifup を行い、 eth0 で DHCP Discover を送信します。
# ifdown eth0 # ifup eth0
R1 上で debug を有効にして、DHCP での割り当てを確認します。
R1#debug ip dhcp server packet detail DHCP server packet detail debugging is on. R1#debug ip dhcp server event DHCP server event debugging is on. Jun 17 10:06:47.385 JST: DHCPD: client's VPN is . Jun 17 10:06:47.385 JST: DHCPD: No option 125 Jun 17 10:06:47.385 JST: DHCPD: Sending notification of DISCOVER: Jun 17 10:06:47.385 JST: DHCPD: htype 1 chaddr 0050.56a5.5d9d Jun 17 10:06:47.385 JST: DHCPD: remote id 020a0000010f190f00000000 Jun 17 10:06:47.385 JST: DHCPD: circuit id 00000000 Jun 17 10:06:47.385 JST: DHCPD: DHCPDISCOVER received from client 0050.56a5.5d9d on interface GigabitEthernet0. Jun 17 10:06:47.389 JST: DHCPD: Seeing if there is an internally specified pool class: Jun 17 10:06:47.389 JST: DHCPD: htype 1 chaddr 0050.56a5.5d9d Jun 17 10:06:47.389 JST: DHCPD: remote id 020a0000010f190f00000000 Jun 17 10:06:47.389 JST: DHCPD: circuit id 00000000 Jun 17 10:06:47.389 JST: DHCPD: there is no address pool for 192.168.1.1.
上記太字の部分で "from client" に続いて PC の MACアドレス が確認できます。ここは前述の DHCP Client Identifier を送信してきている場合には、"01.0050.56a5.5d9d" と表示されるべきですが、PCから DHCP Client Identifier が送信されていないために静的に割り当てを行うことができず、最下行で見えるように "there is no address pool" という風にマッチングするものがなく、静的に割り当てできない結果となっています。
上記の解決方法としては、2つあります。
1) DHCP サーバ側のマッピングファイルを id から MAC 判別へ変更する
flash:static-bindings
*time* Jun 17 2014 07:52 AM !IP address Type Hardware address Lease expiration 192.168.1.100 1 0050.56a5.5d9d Infinite *end*
上記の通り、static-bindings ファイルの内容を変更します。変更点は下記2点です。
上記ファイルの変更を反映させるため、下記方法にて一旦 DHCP サーバを停止し、再開する必要があります。
R1#conf t Enter configuration commands, one per line. End with CNTL/Z. R1(config)#no service dhcp R1(config)#service dhcp R1(config)#end
上記ファイル変更後の debug は下記となり、静的に 192.168.1.100 を割り当てられていることが確認できる。
Jun 17 10:26:07.756 JST: DHCPD: client's VPN is . Jun 17 10:26:07.756 JST: DHCPD: No option 125 Jun 17 10:26:07.756 JST: DHCPD: Sending notification of DISCOVER: Jun 17 10:26:07.756 JST: DHCPD: htype 1 chaddr 0050.56a5.5d9d Jun 17 10:26:07.756 JST: DHCPD: remote id 020a0000010f190f00000000 Jun 17 10:26:07.756 JST: DHCPD: circuit id 00000000 Jun 17 10:26:07.756 JST: DHCPD: DHCPDISCOVER received from client 0050.56a5.5d9d on interface GigabitEthernet0. Jun 17 10:26:07.756 JST: DHCPD: Seeing if there is an internally specified pool class: Jun 17 10:26:07.756 JST: DHCPD: htype 1 chaddr 0050.56a5.5d9d Jun 17 10:26:07.756 JST: DHCPD: remote id 020a0000010f190f00000000 Jun 17 10:26:07.756 JST: DHCPD: circuit id 00000000 Jun 17 10:26:07.756 JST: DHCPD: Found Manual/Static binding Jun 17 10:26:07.756 JST: DHCPD: Sending DHCPOFFER to client 0050.56a5.5d9d (192.168.1.100). Jun 17 10:26:07.756 JST: DHCPD: no option 125 Jun 17 10:26:07.756 JST: DHCPD: creating ARP entry (192.168.1.100, 0050.56a5.5d9d, vrf default). Jun 17 10:26:07.756 JST: DHCPD: unicasting BOOTREPLY to client 0050.56a5.5d9d (192.168.1.100). Jun 17 10:26:07.756 JST: DHCPD: client's VPN is . Jun 17 10:26:07.756 JST: DHCPD: No option 125 Jun 17 10:26:07.756 JST: DHCPD: DHCPREQUEST received from client 0050.56a5.5d9d. Jun 17 10:26:07.756 JST: DHCPD: Sending notification of ASSIGNMENT: Jun 17 10:26:07.756 JST: DHCPD: address 192.168.1.100 mask 255.0.0.0 Jun 17 10:26:07.756 JST: DHCPD: htype 1 chaddr 0050.56a5.5d9d Jun 17 10:26:07.756 JST: DHCPD: lease time remaining (secs) = 4294967295 Jun 17 10:26:07.756 JST: DHCPD: Can't find any hostname to update Jun 17 10:26:07.756 JST: DHCPD: Sending DHCPACK to client 0050.56a5.5d9d (192.168.1.100). Jun 17 10:26:07.756 JST: DHCPD: no option 125 Jun 17 10:26:07.756 JST: DHCPD: ARP entry exists (192.168.1.100, 0050.56a5.5d9d). Jun 17 10:26:07.756 JST: DHCPD: unicasting BOOTREPLY to client 0050.56a5.5d9d (192.168.1.100).
2) PC から DHCP Client Identifier を送信するように設定する
PC 上で /etc/dhclient.conf に send dhcp-client-identifier を下記のように追加する。(場合によってはファイル自体が無い場合があるため、その場合はファイルを作成する)
/etc/dhclient.conf
interface "eth0" { send dhcp-client-identifier = hardware; }
PC 上で下記コマンドにより一旦アドレスをリリースし、再度取得をする。
# dhclient -r eth0 # dhclient eth0
上記 PC から DHCP Client Identifier を送信するように設定変更後の R1 での debug は下記の通りです。
Jun 17 09:05:26.238 JST: DHCPD: client's VPN is . Jun 17 09:05:26.238 JST: DHCPD: No option 125 Jun 17 09:05:26.238 JST: DHCPD: Sending notification of DISCOVER: Jun 17 09:05:26.238 JST: DHCPD: htype 1 chaddr 0050.56a5.5d9d Jun 17 09:05:26.238 JST: DHCPD: remote id 020a0000010f190f00000000 Jun 17 09:05:26.238 JST: DHCPD: circuit id 00000000 Jun 17 09:05:26.238 JST: DHCPD: DHCPDISCOVER received from client 0100.5056.a55d.9d on interface GigabitEthernet0. Jun 17 09:05:26.238 JST: DHCPD: Seeing if there is an internally specified pool class: Jun 17 09:05:26.238 JST: DHCPD: htype 1 chaddr 0050.56a5.5d9d Jun 17 09:05:26.238 JST: DHCPD: remote id 020a0000010f190f00000000 Jun 17 09:05:26.238 JST: DHCPD: circuit id 00000000 Jun 17 09:05:26.238 JST: DHCPD: Found Manual/Static binding Jun 17 09:05:26.238 JST: DHCPD: Sending DHCPOFFER to client 0100.5056.a55d.9d (192.168.1.100). Jun 17 09:05:26.238 JST: DHCPD: no option 125 Jun 17 09:05:26.238 JST: DHCPD: creating ARP entry (192.168.1.100, 0050.56a5.5d9d, vrf default). Jun 17 09:05:26.238 JST: DHCPD: unicasting BOOTREPLY to client 0050.56a5.5d9d (192.168.1.100). Jun 17 09:05:26.238 JST: DHCPD: client's VPN is . Jun 17 09:05:26.238 JST: DHCPD: No option 125 Jun 17 09:05:26.238 JST: DHCPD: DHCPREQUEST received from client 0100.5056.a55d.9d. Jun 17 09:05:26.238 JST: DHCPD: Sending notification of ASSIGNMENT: Jun 17 09:05:26.238 JST: DHCPD: address 192.168.1.00 mask 255.0.0.0 Jun 17 09:05:26.238 JST: DHCPD: htype 1 chaddr 0050.56a5.5d9d Jun 17 09:05:26.238 JST: DHCPD: lease time remaining (secs) = 4294967295 Jun 17 09:05:26.238 JST: DHCPD: Can't find any hostname to update Jun 17 09:05:26.238 JST: DHCPD: Sending DHCPACK to client 0100.5056.a55d.9d (192.168.1.100). Jun 17 09:05:26.238 JST: DHCPD: no option 125 Jun 17 09:05:26.238 JST: DHCPD: ARP entry exists (1.90.90.90, 0050.56a5.5d9d). Jun 17 09:05:26.238 JST: DHCPD: unicasting BOOTREPLY to client 0050.56a5.5d9d (192.168.1.100).
前述の通り、DHCP Static Mapping を使う場合には、端末側で DHCP Client Identifier を送信する設定になっているかどうかを事前に把握しておく必要があります。
また、DHCP Client Identifier を送信してきているか否かは、下記 debug の箇所で想定が可能です。
Jun 17 09:05:26.238 JST: DHCPD: DHCPDISCOVER received from client 0100.5056.a55d.9d on interface GigabitEthernet0.
上記太字部分のように、MAC アドレスと一致しない場合には Client Identifier を送信してきていると考えることができます。しかしながら、Client Identifier を明示的に変更することができるため、MACアドレスと全く同じ ID とした場合には、上記 debug では判断できないことに注意してください。
PC(端末)の設定が確認できないような状況では、DHCP サーバ上で受信している DHCP Discovery のパケットをキャプチャして DHCP Client Identifier (Option 61) が付与されているかどうかを確認してください。
以上
検索バーにキーワード、フレーズ、または質問を入力し、お探しのものを見つけましょう
シスコ コミュニティをいち早く使いこなしていただけるよう役立つリンクをまとめました。みなさんのジャーニーがより良いものとなるようお手伝いします
下記より関連するコンテンツにアクセスできます