DHCPはbroadcastを用いるため、別セグメントのDHCPサーバを使う場合はDHCP relay agentの設定が必要となります。ここでは、DHCP relay agentとHSRPを併用する場合の注意点について考察します。
DHCP relay
設定方法
DHCP discoverなどのメッセージはbroadcast宛てに送信されます。従って、ルータを経由する事はできません。DHCP serverが直接接続されていない場合は、broadcastを転送する設定が必要になります。cisco公式ドキュメントではあまり使用されない表記ですが、このような機能は一般的にDHCP relay agentと呼ばれます。
broadcastを転送するには、以下のようなコマンドを使用し転送先のIPアドレスを設定します。
Router(config-if)# ip helper-address <addr>
上記コマンドで転送されるのは、bootpc, bootps, domainなどの一部のudpのみです。必須設定ではありませんが、転送を許可するudpをカスタマイズするには以下のコマンドを使用します。
Router(config)# ip forward-protocol udp { <port_number> | <protocol_name> }
構成概要
以下の構成で動作確認をします。R1をDHCP Clientとして、R2をDHCP relay agentとして、R4をDHCP Serverとして設定します。(R3は現時点で使用しません)
e0/0 e0/1
.2+------+.2
┌----+ R2 +----┐
+------+ │ +------+ │ +------+
| R1 +----┤ ├----+ R4 |
+------+DHCP│ +------+ │ .4+------+
e0/0 └----+ R3 +----┘ e0/1
.3+------+.3
e0/0 e0/1
192.168.123.0/24 192.168.234.0/24
[R1] interface Ethernet0/0 ip address dhcp ! [R2] interface Ethernet0/0 ip address 192.168.123.2 255.255.255.0 ip helper-address 192.168.234.4 ! interface Ethernet0/1 ip address 192.168.234.2 255.255.255.0 [R4] ip dhcp excluded-address 192.168.123.2 192.168.123.3 ! ip dhcp pool VLAN_123 network 192.168.123.0 255.255.255.0 default-router 192.168.123.254 ! interface Ethernet0/0 ip address 192.168.234.4 255.255.255.0 ! ip route 192.168.123.2 255.255.255.255 192.168.234.2
設定説明
R1から受信したbroadcast(DHCP discoverなど)をR4に転送するように、以下の設定を投入します。
[R2] interface Ethernet0/0 ip helper-address 192.168.234.4
R2はDHCPメッセージを転送する際に、自身(この場合はR2)のIPアドレスをgiaddrフィールドに記入します。これは、DHCP ServerがどのIPアドレス宛てにunicastで返信すべきかを教えるためです。
このパケットを観察すると以下のようになっています。確かに、DHCP relay agentのアドレスが書かれている事が分かります。
Ethernet II, Src: cc:01:15:1c:00:01 (cc:01:15:1c:00:01), Dst: cc:03:15:1c:00:00 (cc:03:15:1c:00:00)
Internet Protocol, Src: 192.168.123.2 (192.168.123.2), Dst: 192.168.234.4 (192.168.234.4)
User Datagram Protocol, Src Port: bootps (67), Dst Port: bootps (67)
Bootstrap Protocol
Message type: Boot Request (1)
Hardware type: Ethernet
Hardware address length: 6
Hops: 1
Transaction ID: 0x00001e5c
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: 192.168.123.2 (192.168.123.2)
Client MAC address: cc:00:15:1c:00:00 (cc:00:15:1c: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 relay agent宛てに疎通可能になるよう、適宜ルーティングを設定して下さい。
[R4] ip route 192.168.123.2 255.255.255.255 192.168.234.2
動作確認
想定通りのIPアドレスが割り当てられている事を確認します。
R1#show ip interface brief Interface IP-Address OK? Method Status Protocol Ethernet0/0 192.168.123.1 YES DHCP up up Ethernet0/1 unassigned YES NVRAM administratively down down Ethernet0/2 unassigned YES NVRAM administratively down down Ethernet0/3 unassigned YES NVRAM administratively down down R1#
DHCP relay with HSRP
設定方法
HSRPのようなデフォルトゲートウェイ冗長環境とDHCP relayを併用する場合は、注意が必要です。特に何も意識しないと、HSRPを構成している全てのルータがbroadcastを転送してしまうため、DHSP serverにdiscover messageが重複して届いてしまう問題が発生します。
このような問題を対処するために、Activeであるルータのみbroadcastを転送するように設定する事ができます。HSRP, VRRPなどに設定した
Router(config)# ip helper-address <addr> redundancy <redundancy_name>
構成概要
以下の構成で動作確認をします。前述の構成と異なり、R2, R3をHSRP構成とします。
e0/0 e0/1
.2+------+.2
┌----+ R2 +----┐
+------+ │ +------+ │ +------+
| R1 +----┤ ├----+ R4 |
+------+DHCP│ +------+ │ .4+------+
e0/0 └----+ R3 +----┘ e0/1
.3+------+.3
e0/0 e0/1
192.168.123.0/24 192.168.234.0/24
[R1] interface Ethernet0/0 ip address dhcp ! [R2] interface Ethernet0/0 ip address 192.168.123.2 255.255.255.0 ip helper-address 192.168.234.4 redundancy VLAN_123 standby ip 192.168.123.254 standby preempt standby name VLAN_123 ! interface Ethernet0/1 ip address 192.168.234.2 255.255.255.0 [R3] interface Ethernet0/0 ip address 192.168.123.3 255.255.255.0 ip helper-address 192.168.234.4 redundancy VLAN_123 standby ip 192.168.123.254 standby priority 110 standby preempt standby name VLAN_123 standby track Ethernet0/1 20 ! interface Ethernet0/1 ip address 192.168.234.3 255.255.255.0 [R4] ip dhcp excluded-address 192.168.123.2 192.168.123.3 ! ip dhcp pool VLAN_123 network 192.168.123.0 255.255.255.0 default-router 192.168.123.254 ! interface Ethernet0/0 ip address 192.168.234.4 255.255.255.0 ! ip route 192.168.123.2 255.255.255.255 192.168.234.2 ip route 192.168.123.3 255.255.255.255 192.168.234.3
設定説明
R2, R3にHSRPの設定を投入します。なお、後述の設定で使用しますので、HSRP設定に対して”VLAN_123″という名前をつけます。
[R2] interface Ethernet0/0 standby ip 192.168.123.254 standby preempt standby name VLAN_123 [R3] interface Ethernet0/0 standby ip 192.168.123.254 standby priority 110 standby preempt standby name VLAN_123 standby track Ethernet0/1 20
HSRPがActiveであるルータのみbroadcastを転送するように設定します。
[R2] interface Ethernet0/0 ip helper-address 192.168.234.4 redundancy VLAN_123 [R3] interface Ethernet0/0 ip helper-address 192.168.234.4 redundancy VLAN_123
動作確認
IPアドレスが想定通りに割り当てられている事を確認します。
R1#show ip interface brief Interface IP-Address OK? Method Status Protocol Ethernet0/0 192.168.123.1 YES DHCP up up Ethernet0/1 unassigned YES NVRAM administratively down down Ethernet0/2 unassigned YES NVRAM administratively down down Ethernet0/3 unassigned YES NVRAM administratively down down R1#
