シスコサポートコミュニティ
キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

DHCP Static Mapping のトラブルシューティング方法

 

本ドキュメントは下記リファレンスに記載されている DHCP Static Mapping 設定時のトラブルシューティングについて記載します。

DHCP Static Mapping では、マッピングファイルを作成しておくことで静的にIPアドレスを端末に割り当てることができ、その方法としては下記のいずれかの情報をもとにマッピングを行います。

  • MACアドレス
  • DHCP Client Identifier (Option61)

使用している OS などにより、DHCP からのアドレス自動取得とした際、DHCP Client Identifier を送信するものと、送信しないものがあり、マッピングファイルを作成した際に意図したアドレス割り当てができないといったケースがあるため、それを解決する方法を解説します。

注意 : 下記は端末に Linux を想定して説明しておりますが、Linux の設定/操作についての詳細は Linux のマニュアルや解説本を参照してください。

1. 本ドキュメントのネットワーク構成

R1 : Cisco892J 15.2(4)M4

PC : CentOS 5.8

 

2.DHCP サーバ/クライアント設定

下記が 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

3. DHCP 割り当ての確認方法

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" という風にマッチングするものがなく、静的に割り当てできない結果となっています。

4. 解決方法

上記の解決方法としては、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点です。

  • Type を "id" から "1" へ変更
  • Hardware address の先頭 "01." を除き、MACアドレスのみに変更

上記ファイルの変更を反映させるため、下記方法にて一旦 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).

5. 最後に

前述の通り、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) が付与されているかどうかを確認してください。

以上

 

688
閲覧回数
10
いいね!
0
コメント