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#