目錄
DHCP Server
今天讨论一下怎样把 Cisco 路由器设定成 DHCP Server。用以下这个网络为例,我们会把 R1 设定成 DHCP Server,而 R2 则会成为 DHCP Client,设定完成後 R2 的 e0/0 应可自动完成 IP 设定。
首先在 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 ,只要把他转回文字,就可以破解出来了!
HEX | 00 | 63 | 69 | 73 | 63 | 6f | 2d | 63 | 63 | 30 | 38 | 2e | 32 | 66 | 34 | 30 | 2e | 30 | 30 | 30 | 30 | 2d | 45 | 74 | 30 | 2f | 30 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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。
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
DHCP Snooping
由於传统 DHCP 没有提供认证,网络上可能有人自设虚假的 DHCP Server,派出不当的 IP Address,为了防止此问题发生,可以在 Host 与 Server 之间的 Switch 设定 DHCP Snooping。请看以下网络,R1 是 DHCP Client 提出 DHCP Request,R2 是受信任的 DHCP Server,而 R3 则是虚假的。
要启动 DHCP Snooping,首先在 SW 用指令 ip dhcp snooping,然後为 vlan 10 开启 dhcp snooping,指令是 ip dhcp snooping vlan 10。ip dhcp snooping 是总制,ip dhcp snooping vlan 是为个别 vlan 做 snooping 设定。
SW(config)#ip dhcp snooping SW(config)#ip dhcp snooping vlan 10
然後有一个比较特别的设定就是要关掉 Option 82。Option 82 为 DHCP Server 提供更多的资讯让 Server 判断要派出什麽 IP Address,启动 DHCP Snooping 後 Switch 会预设为 DHCP Request 加上 Option 82,然而 Cisco DHCP Server 预设无法为带有 Option 82 的 Request 派 IP Address,为方便实验进行,请把 Snooping 的 Option 82 关掉。
SW(config)#no ip dhcp snooping information option
最後,在连着合法 DHCP Server 的 Interface 上设定 Trust。
SW(config)#int fastEthernet 0/2 (config-if)#ip dhcp snooping trust
确认 FastEthernet 0/2 已开了 Trust,并且 Option 82 已经关掉。
SW#show ip dhcp snooping Switch DHCP snooping is enabled DHCP snooping is configured on following VLANs: 10 DHCP snooping is configured on the following Interfaces: Insertion of option 82 is disabled circuit-id format: vlan-mod-port remote-id format: MAC Option 82 on untrusted port is not allowed Verification of hwaddr field is enabled Interface Trusted Rate limit (pps) ------------------------ ------- ---------------- FastEthernet0/2 yes unlimited
於是 Client 从 DHCP Server 得到的 IP Address 就被记录下来了。由於 Fa0/3 是 untrust,R3 的 DHCP Reply 是会被忽略的。
SW#show ip dhcp snooping binding MacAddress IpAddress Lease(sec) Type VLAN Interface ------------------ --------------- ---------- ------------- ---- -------------------- 00:16:46:8F:C3:C1 172.16.10.3 85973 dhcp-snooping 10 GigabitEthernet1/0/1 Total number of bindings: 1
IP Source Guard
开启了 DHCP Snooping 後,我们还可以利用 DHCP Snooping Binding Table 去做一个进阶的保安设定,就是 IP Source Guard。IP Source Guard 可检查 Host 使用的 IP Address 是否之前从 DHCP 得到的 IP,如果正确才允许 Port 传送,避免 Host 手动更改 IP Address。设定指令为:
SW(config)#int fastEthernet 0/1 SW(config-if)#ip verify source
检查设定:
SW#show ip verify source Interface Filter-type Filter-mode IP-address Mac-address Vlan --------- ----------- ----------- --------------- ----------------- ---------- Fa0/1 ip active 172.16.10.3 permit-all 10
如要进一步对 Mac Address 也作出限制,则可在指令後面加上 Keyword port-security,前题是 Switch Port 必需启用了 Port Security。有关 Port Security 的设定可参考本文。
SW(config)#int fastEthernet 0/1 SW(config-if)#switchport port-security SW(config-if)#ip verify source port-security
检查设定时会见到 Filter-type 变成 ip-mac,代表正检查 IP Address 及 MAC Address。
TEST01#show ip verify source Interface Filter-type Filter-mode IP-address Mac-address Vlan --------- ----------- ----------- --------------- ----------------- ---------- Fa0/1 ip-mac active 172.16.10.3 0016.468f.c3c1 10
相關主題
Jan Ho 2021-07-22
Posted In: 网络服务 Services
发表回复