目录

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 进入 DHCP Server Pool 设定模式, 是为这个 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 进行设定,第一行的意思是保留 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,假设我们要派出的 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 就填上 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