目錄

DHCP Server
固定 IP
DHCP Relay

DHCP Server

今天討論一下怎樣把 Cisco 設定成 DHCP Server。用以下這個網絡為例,我們會把 R1 設定成 DHCP Server,而 R2 則會成為 DHCP Client,設定完成後 R2 的 e0/0 應可自動完成 IP 設定。

dhcp

首先在 R1 用 ip dhcp pool <word> 進入 DHCP Server Pool 設定模式,<word> 是為這個 Pool 定義的名字。

R1(config)#ip dhcp pool POOL_1
R1(dhcp-config)#

然後填寫各項 DHCP Server 需要的設定。

hostname R1
!
ip dhcp pool POOL_1
   network 192.168.12.0 255.255.255.0       //要派出去的 IP 範圍
   default-router 192.168.12.1              //Default Gateway
   dns-server 192.168.12.101 192.168.12.102 //DNS Server
   lease 7                                  //租用天數,預設為1天

為了保留一些 IP 不派出去,我們可以用 ip dhcp excluded-address <IP> 進行設定,第一行的意思是保留 192.168.12.1,第二行的意思是保留 192.168.12.101 至 192.168.12.102。

R1(config)#ip dhcp excluded-address 192.168.12.1
R1(config)#ip dhcp excluded-address 192.168.12.101 192.168.12.102

另外,當然要在 e0/0 設定好 IP。

hostname R1
!
interface Ethernet0/0
 ip address 192.168.12.1 255.255.255.0

然後,把 R2 的 e0/0 的 IP Address 設定成 DHCP。

hostname R2
!
interface Ethernet0/0
 ip address dhcp

R2 的 e0/0 成功取得 IP 了。

R2#show interfaces ethernet 0/0 | i Internet
  Internet address is 192.168.12.2/24

在 R1 用 show ip dhcp binding 看看現時 IP 分配情況。最難懂是 Client-ID/Hardware address/User name 一欄,那串奇怪的數字是什麼呢?

R1#show ip dhcp binding
Bindings from all pools not associated with VRF:
IP address          Client-ID/              Lease expiration        Type
                    Hardware address/
                    User name
192.168.12.2        0063.6973.636f.2d63.    Mar 08 2002 01:06 AM    Automatic
                    6330.382e.3266.3430.
                    2e30.3030.302d.4574.
                    302f.30

原來這是一串 Hex code ,只要把他轉回文字,就可以破解出來了!

HEX00636973636f2d636330382e326634302e303030302d4574302f30
String   c i s c o - c c 0 8 . 2 f 4 0 . 0 0 0 0 - E t 0 / 0

迷底解開了,那串文字是 cisco-cc08.2f40.0000-Et0/0,意思 192.168.12.2 這個 IP 是派給了一隻 Cisco 的產品,MAC address 是 cc08.2f40.0000 的 Et0/0 這個 interface 上。

固定 IP

就和一般 DHCP Server 一樣,Cisco 也可以根據不同的 Client 來設定 IP (Static IP),首先我們設定另一個 DHCP Pool,用 host <ip> <mask> 指令來設定要派的 IP,假設我們要派出的 IP 是 192.168.12.201。然後再用 client-identifier 來指定 client,把剛才看到的字串放進去就可以。

hostname R1
!
ip dhcp pool STATIC
   host 192.168.12.201 255.255.255.0
   client-identifier 0063.6973.636f.2d63.6330.382e.3266.3430.2e30.3030.302d.4574.302f.30

然後 DHCP Binding Table 就會出現了一條 Manual 的紀錄,而且 Lease Time 是 Infinite (無限)。

R1#show ip dhcp binding
Bindings from all pools not associated with VRF:
IP address          Client-ID/              Lease expiration        Type
                    Hardware address/
                    User name
192.168.12.201      0063.6973.636f.2d63.    Infinite                Manual
                    6330.382e.3266.3430.
                    2e30.3030.302d.4574.
                    302f.30

在 R2 把 e0/0 重開,得到的 IP 是 192.168.12.201,即我們剛才指定的 IP。

R2(config-if)#shutdown
R2(config-if)#no shutdown
R2(config-if)#end
R2#show interfaces ethernet 0/0 | i Internet
  Internet address is 192.168.12.201/24

DHCP Relay

由於 DHCP 是靠 broadcast 傳送的,如果 DHCP Server 與 DHCP Client 不在同一個網段,就無法連接了。這時候我們可以使用 DHCP Relay (或稱為 IP Helper),幫助 DHCP Client 的 Broadcast 送到 DHCP Server。以下圖這個網絡為例,R1 是 DHCP Server,R3 是 DHCP Client,我們要在 R2 設定 DHCP Relay。

dhcp

Step 1: 設定 IP Address

hostname R1
!
interface Ethernet0/0
 ip address 192.168.12.1 255.255.255.0
hostname R2
!
interface Ethernet0/0
 ip address 192.168.12.2 255.255.255.0
!
interface Ethernet0/1
 ip address 192.168.23.2 255.255.255.0

Step 2: R1 DHCP 設定

hostname R1
!
ip dhcp excluded-address 192.168.23.1 192.168.23.10
!
ip dhcp pool POOL_2
   network 192.168.23.0 255.255.255.0
   default-router 192.168.23.2

Step 3: Routing

IP Helper 的原理是當 R2 e0/1 收到 R3 的 DHCP broadcast 時,就會以 unicast 傳送給 R1 e0/0,因此 R2 e0/1 必需能到達 R1 e0/0,反之亦然。在這個例子中,我們簡單地用使用 Static Route 達成。

hostname R1
!
ip route 192.168.23.0 255.255.255.0 192.168.12.2

試試 PING 一下,OK了!

R2#ping 192.168.12.1 source 192.168.23.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.12.1, timeout is 2 seconds:
Packet sent with a source address of 192.168.23.2
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 16/20/28 ms

Step 4: IP Helper

主角出場,用 ip helper-address <ip>,ip 就填上 DHCP Server 的 IP。

hostname R2
!
interface Ethernet0/1
 ip address 192.168.23.2 255.255.255.0
 ip helper-address 192.168.12.1

於是 R3 成功從 DHCP 取得 IP了!

R3(config)#int ethernet 0/0
R3(config-if)#ip address dhcp
R3(config-if)#no shutdown
R3(config-if)#end
R3#show interface ethernet 0/0 | i Internet
  Internet address is 192.168.23.11/24