ccna60d/d14-DHCP-and-DNS.md
2020-11-24 08:13:36 +08:00

468 lines
23 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 第14天 DHCP及DNS
__DHCP and DNS__
___
Gitbook[ccna60d.xfoss.com](https://ccna60d.xfoss.com/)
你可以在 https://github.com/gnu4cn/ccna60d 上 fork 本项目,并提交你的修正。
本书结合了学习技巧,包括阅读、复习、背书、测试以及 hands-on 实验。
> 本书译者用其业余时间完成本书的翻译工作,并将其公布到网上,以方便你对网络技术的学习掌握,为使译者更有动力改进翻译及完成剩下章节,你可以 [捐赠译者](https://github.com/gnu4cn/buy-me-a-coffee)。
___
## 第14天任务
- 阅读今天的课文
- 复习昨天的课文
- 完成今天的实验
- 阅读ICND1记诵指南
- 花15分钟在[subnetting.org](http://www.subnetting.org)上
主机使用动态主机配置协议Dynamic Host Configuration Protocol, DHCP紧接着加电启动后收集到包括了IP地址、子网掩码及默认网关等初始配置信息。因为所有主机都需要一个IP地址以在IP网络中进行通信而DHCP就减轻了手动为每台主机配置一个IP地址的管理性负担。
域名系统Domain Name System, DNS将主机名称映射到IP地址使得你可[www.in60days.com](www.in60days.com)输入到web浏览器中而无需输入寄存该站点的服务器IP地址。
今天将学到以下内容。
- DHCP操作, DHCP operations
- 配置DHCP, configuring DHCP
- DHCP故障排除, troubleshooting DHCP issues
- DNS操作, DNS operations
- 配置DNS, configuring DNS
- DNS故障排除, troubleshooting DNS issues
本课对应了以下CCNA大纲要求。
+ 配置和验证DNSIOS路由器
- 将路由器接口配置为使用DHCP, configure router interfaces to use DHCP
- DHCP选项, DHCP options
- 排除的地址, excluded addresses
- 租期lease time
## DHCP功能
**DHCP Functionality**
### DHCP操作
**DHCP Operations**
DHCP通过在网络上给主机自动分配IP信息简化了网络管理任务。分配的信息可以包括IP地址、子网掩码及默认网关且通常实在主机启动时。
在主机第一次启动时如其已被配置为采用DHCP大多数主机都是这样的它就会发出一个询问分配IP信息的广播报文。该广播将为DHCP服务器收听到同时该信息会被中继。
> Farai指出 -- "这是假定主机和DHCP服务器实在同一子网的情形而如它们不在同一子网就看下面的`ip helper-address`命令。"
![主机请求IP配置信息](images/1401.png)
*图14.1 -- 主机请求IP配置信息*
DHCP具体使用UDP端口`67`和`68`来在网络上通信同时尽管在需要时路由器也可实现DHCP功能但通常都会使用具体服务器作为DHCP服务器。在需要时路由器同样可以配置为从DHCP服务器取得其接口IP地址但很少这样做。配置这个特性的命令如下。
`Router(config-if)#ip address dhcp`
客户端的DHCP状态如下
- 初始化initialising
- 选择selecting
- 请求requesting
- 绑定bound
- 更新renewing
- 重绑定rebinding
DHCP服务器可被配置为在一个名为租期的特定时期赋予某台主机一个IP地址。租期可以是几个小时或几天。对于那些不能在网络上分配给主机的IP地址可以也应该予以保留。这些保留的IP地址将是已被路由器接口或服务器所使用的地址。如未能保留这些地址就会看到网络上的重复IP地址告警因为DHCP服务器已将配置给路由器或服务器的地址分配给了主机。
下面的图14.2中可以看到完整的DHCP请求和分配过程。
![DHCP请求和分配过程](images/1402.png)
*图14.2 -- DHCP请求和分配过程*
1. **DHCP发现数据包**DHCP Discover packet当某台设备启动后同时其被配置为通过DHCP取得一个地址时就会发出一个自UDP端口`68`(UDP port `68`, `bootpc`到UDP端口`67`(UDP port `67`, `bootps`的广播数据包。该数据包将到达网络上的所有设备包括任何位处网络上的可能的DHCP服务器。
**DHCP提议数据包**DHCP Offer packet本地网络上的DHCP服务器看到由客户端发出的广播发现报文the broadcasted Discover message就用UDP源端口`bootps 67`及目的端口`bootpc 68`, 同样以广播地址的形式发回一个响应就是DHCP提议数据包。之所以同样以广播地址形式是因为客户端此时仍然没有IP地址而无法接收单播数据包。
2. **DHCP请求数据包**DHCP Request packet, 一旦客户端工作站收到由DHCP服务器做出的提议an offer made by the DHCP server它就会发出一个广播用于告知所有DHCP服务器它已接受了来自某台服务器的提议DHCP请求报文到某台特定的DHCP服务器并再度使用UDP源端口`bootpc 68`及目的端口`bootps 67`。**客户端可能会收到来自多台DHCP服务器的提议但它只需单独一个IP地址所以它必需选择一台DHCP服务器**(基于服务器标识),而选择通常都是按照"先到,先服务"原则完成的on a "first-come, first-served" basis
3. **DHCP确认数据包**DHCP ACK packet, 选中的那台DHCP服务器发出另一个广播报文来确认给那台特定客户端的地址分配再度用到UDP源端口`bootps 67`及目的端口`bootpc 68`。
### DHCP的预订
**DHCP Reservations**
DHCP服务器可被配置为以几种不同方式提供IP地址包括下面这些。
- 动态分配, Dynamic allocation
- 自动分配, Automatic allocation
- 静态分配, Static allocation
**动态分配**
**Dynamic allocation**
通过DHCP指派地址的一个十分常用方法就是采用动态分配过程在此过程中DHCP服务器配置为有着一个大的IP地址池且根据客户端的请求而为其分配地址池中的一个IP地址。在设备租期超时或设备离开网络时该特定IP地址就被交还给DHCP服务器之后就可被分配给另一客户端。
**自动分配**
**automatic allocation**
采用DHCP服务器分配IP地址的另一方式叫做自动分配该方式跟动态分配极为相似但采用此种方式DHCP服务器尝试维护一个所有过往分配地址清单而如有某台"旧有"客户端请求一个IP地址该客户端就会分配到一个跟以前一样的IP地址也就是说其曾于此前请求过一个IP地址。自动分配是一种较为低效的分配IP地址方式但如有着一个极大的可用IP地址池这就是一种总能确保某网络中的客户端在每次开机时获得同样IP地址的巧妙方法。
**静态分配**
**Static allocation**
DHCP服务器的IP地址静态分配是指定义出一些期望在网络上出现的MAC地址并手动为这些MAC地址都分配上一个唯一IP地址因此就管理性地建立起一张`MAC-to-IP`关联表。这通常在服务器环境中用到因为服务器必须使用可预期的IP地址以可供访问。
### DHCP范围
**DHCP Scopes**
打算配置一台DHCP服务器的网络管理员作为配置过程的一部分也需要配置DHCP范围。范围就是网络某个特殊部分的一组IP地址A scope is a grouping of IP addresses for a particular section of the network。而每个子网通常有着自己的范围。
范围也可以是可供DHCP服务器分配的一个连续地址池a contiguous pool of addresses。大多数DHCP服务器都提供了从地址池中排除一些地址的功能以避免将这些地址动态地分配给客户端。这些排除的地址就通常是那些手动分配给网络中服务器及网络设备的IP地址。
在定义的DHCP范围内部可以配置诸如下面的一些参数。
- IP地址范围, IP address range
- 子网掩码, subnet mask
- 租约持续时间lease duration
- 默认网关default gateway
- DNS服务器DNS server
- WINS服务器WINS server
依据所使用的DHCP服务器也可以使用不同参数创建出不同的范围而这通常与不同子网有关。
### DHCP租期
**DHCP Leases**
DHCP所提供的主要优势之一就是租借IP地址的能力也就是说1P地址的分配是临时的。通常当客户端离开网络时其所分配到的特定IP地址将变成可用并由DHCP服务器分配给其它设备。
DHCP租期关乎每次DHCP分配限定允许用户使用一个分配到的1P地址多长时间。通常是在DHCP范围内对该参数进行管理性配置。每当有客户端重启后它都必须再次从DHCP服务器请求一个IP地址。而DHCP服务器又通常被配置为给那台特定主机再度分配同样的地址并扩展租期。
工作站也能手动释放其IP地址比如在以下情况下。
- 设备无限期关机the device is turned off indefinitely
- 设备移至另一子网比如从有线网络移到无线网络the device moves to another subnet(e.g, to a wireless network from a wired network)
租借过程有几个相关的计时器因此可以肯定在所有网络设备上总是会有一个更新过的IP地址。下面是两个重要的DHCP计时器。
- **续借(`T1`)计时器**renewal(T1) timer, 默认是租期的一半在工作站取得一个IP地址后此计时器就开始计时当到达租期的`50%`时DHCP客户端将向来源DHCP服务器重申租约。
- **重新绑定(`T2`)计时器**rebinding(T2) timer, 默认是租期的`87.5%`这第二个计时器用在DHCP服务器未有在续借计时器超时后进行回应或确认的情形。该计数器指出如租期已过`7/8`, 那么客户端将尝试找到发出一个DHCP请求另一能够提供DHCP地址的DHCP服务器。
有了租借过程及上述有关计时器就可以肯定总是会及时拥有一个IP地址且连带不会有任何停止时间同时自动地有着一种构建于DHCP过程中的冗余机制。
图14.3中展示了`T1`及`T2`计时器与租期的关系。
![DHCP租期计时器](images/1403.png)
*图14.3 -- DHCP租期计时器*
### DHCP选项
**DHCP Options**
在DHCP中有一个特殊字段可用于帮助扩展一些自动配置过程的性能。可在此字段中放入在DHCP RFC中给出的许多不同配置选项。
> **注意:**BOOTP选项曾被称作“厂商扩展”。
DHCP提供了`256`选项值,其中仅`254`个是可用的,因为`0`是垫底选项,而`255`是最后选项0 is the pad option and 255 is the end option。许多DHCP选项都是通常所了解的经常使用到的参数包括下面这些。
- 子网掩码subnet mask
- 域名服务器domain name server
- 域名domain name
这些年来已加入一些额外的DHCP选项尤其是VoIP用途的那些选项比如下面这些。
- 选项`129`: 呼叫服务器IP地址
- 选项`135`: 话机相关应用的HTTP代理服务器
所有这些选项都是直接在DHCP服务器上配置但不是所有DHCP服务器都提供了设置DHCP选项的能力。如网络管理员要用到这些特性就应该采用一种企业级别的DHCP服务器。在将小型路由器作为家庭办公环境的DHCP服务器是就可能不会有这些功能上的益处。
## 配置DHCP
**Configuring DHCP**
### 思科路由器上的DHCP服务器
**DHCP Servers on Cisco Routers**
第一步就是在路由器上开启DHCP服务。这是通过使用`service dhcp`命令完成的如下面所示as exemplified below
```console
Router#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#service dhcp
```
下一步就是创建一个DHCP池该DHCP池定义出将分配给客户端的IP地址池。在本例中名为`SUBNET_A`的池将提供来自范围`192.168.1.0/24`的IP地址。
```console
Router(config)#ip dhcp pool SUBNET_A
Router(dhcp-config)#network 192.168.1.0 255.255.255.0
Router(dhcp-config)#default-router 192.168.1.1
Router(dhcp-config)#dns-server 8.8.8.8
Router(dhcp-config)#domain-name Network+
Router(dhcp-config)#lease 30
```
该DHCP池配置模式the DHCP Pool Configuration mode同时也是配置其它DHCP选项的地方。在上面的配置输出中配置了以下这些参数。
- 默认网关:`192.168.1.1`(指派到将该路由器作为DHCP服务器所服务网络中的路由器接口地址)
- DNS服务器`8.8.8.8`
- 域名:`Network+`
- 租期:`30`天
在需要时,也可以配置一些从`192.168.1.0/24`范围中排除的地址。我们就说要排除路由器接口IP地址`192.168.1.1`)及`192.168.1.250`到`192.168.1.255`地址范围,从该范围就可手动为网络中的服务器分配地址。这是通过下面的配置完成的。
```console
Router(config)#ip dhcp excluded-address 192.168.1.1
Router(config)#ip dhcp excluded-address 192.168.1.250 192.168.1.255
```
可使用下面的命令来查看当前由该路由器DHCP服务器所服务的客户端。
```console
Router#show ip dhcp binding
Bindings from all pools not associated with VRF:
IP address Client-ID/ Lease expiration Type Hardware address/
192.168.1.2 Mar 02 2014 12:07 AM Automatic 0063.6973.636f.2d63
```
在上面的输出中由该DHCP服务器服务的是单独一台客户端同时分到到DHCP范围的第一个非排除IP地址`192.168.1.2`。还可以看到租期超时日期及设备MAC地址。
### 思科路由器上的DHCP客户端
**DHCP Clients on Cisco Routers**
除了DHCP服务器功能思科路由器同样允许将其接口配置为DHCP客户端。这就是说接口将使用标准DHCP过程请求到一个地址而在特定子网上的任何服务器都能分配该IP地址。
将一个路由器接口配置为DHCP客户端的命令如下。
```console
Router(config)#int FastEthernet0/0
Router(config-if)#ip address dhcp
```
一旦某台DHCP服务器分配了一个IP地址在路由器控制台上就可以看到下面的通知消息该消息包含了地址和掩码
```console
*Mar 1 00:29:15.779: %DHCP-6-ADDRESS_ASSIGN: Interface FastEthernet0/0 assigned DHCP address 10.10.10.2, mask 255.255.255.0, hostname Router
```
使用命令`show ip interface brief`就可以观察到该DHCP分配方式。
```console
Router#show ip interface brief
Interface IP-Address OK? Method Status Protocol
FastEthernet0/0 10.10.10.2 YES DHCP up up
FastEthernet0/1 unassigned YES unset administratively down down
```
### DHCP数据包分析
**DHCP Packet Analysis**
为实际掌握在本模块中介绍的这些知识点将生成一些上述示例中涉及到设备的流量捕获。在配置好DHCP服务器及客户端工作站启动起来后就会发生`4`步的DHCP过程可在下面的截屏中观察到。
![DHCP 4步过程](images/1404.png)
*图14.4 -- DHCP 4步过程*
下面可以观察到DHCP发现数据包所包含的部分。
![DCHP发现数据包](images/1405.png)
*图14.5 -- DHCP发现数据包*
正如你在截屏中看到的该数据包DHCP Discover packet是由客户端发出将其广播到网络上目的地址是`255.255.255.255`。同时还看到其报文类型为“Boot Request`1`)”。
下一个数据包就是DHCP提议数据包DHCP Offer packet如下面所示。
![DHCP提议数据包](images/1406.png)
*图14.6 -- DHCP提议数据包*
该数据包是由服务器源IP`192.168.1.1`)发出到广播地址(目的地址:`255.255.255.255`,同时包含了提议的IP地址`192.168.1.2`。同时也可看到报文类型为“Boot Reply(`2`)”。
第三个数据包是DHCP请求数据包DHCP Request packet
![DHCP请求数据包](images/1407.png)
*图14.7 -- DHCP请求数据包*
DHCP请求数据包是由客户端发出到广播地址。可以看到报文类型是`Boot Request(1)`。该数据包与最初的DHCP发现数据包类似但包含了一个非常重要的字段就是`50`选项: 被请求的IP地址`192.168.1.2`a very important field, which is Option 50: Requested IP Address(192.168.1.2)。这就是在DHCP提议数据包中由DHCP服务器所提供的同一IP地址而该客户端对其进行了确认和接受。
DHCP分配过程的最后数据包就是由服务器发出的DCHP确认数据包了(the DHCP ACK packet)。
![DHCP确认选项数据包](images/1408.png)
*图14.8 -- DHCP确认选项数据包*
该数据包发自DHCP服务器并被广播到网络上其同样包含了在上面的截屏中所看到的一些额外字段。
- DHCP服务器标识该DHCP服务器的IP地址`192.168.1.1`
+ 路由器上配置的所有选项。
- 租期:`30`天(以及派生出的早前讨论的过续租时间和重新绑定时间值)
- 子网掩码:`255.255.255.0`
- 默认网关(路由器): `192.168.1.1`
- DNS服务器`8.8.8.8`
- 域名:`Network+`
## DHCP故障排除
**Troubleshooting DHCP Issues**
跟NAT一样DHCP故障基本上总是因为错误配置造成的开玩笑说就是第8层问题意思是人为疏忽jokingly referred to as Layer 8 issue, meaning somebody messed up
命令`service dhcp`默认是开启的,但有些时候其已被网络管理员因为某些原因关闭了。(作者就曾遇到过有管理员在他们的路由器上敲入`no ip routing`命令后因为紧急的路由故障打电话给思科 -- 真的!)
如在另一子网上使用一台服务器来管理DHCP配置就要允许路由器放行DHCP数据包。在地址分配过程中DHCP用到广播报文而路由器是不会转发广播报文的那么就**需要将DHCP服务器的IP地址加入到路由器以令到路由器将该广播报文作为单播数据包进行转发**。**命令`ip helper-address`**就可以实现这点。这是另一个考试喜欢的问题哦。
同样可以使用下面的`debug`命令作为排错过程中的部分。
```console
debug ip dhcp server events
debug ip dhcp server packet
```
### DNS操作
**DNS Operations**
DNS将主机名映射到IP地址而不是反过来。这就允许你在web浏览器中浏览一个网址而无需输入服务器IP地址。
在主机或路由器想要将一个域名解析到IP地址或反过来将IP地址解析到域名时DNS用到UDP `53`号端口。而在两台DNS服务器之间打算同步或分享它们的数据库时就使用TCP `53`号端口。
## 配置DNS
**Configuring DNS**
如想要容许路由器找到web上的某台DNS服务器就使用命令`ip name-server 1.1.1.1`,或是服务器相应的地址。
也可以将某个主机名设置到路由器上的一个IP地址表中来节省时间或是令到更易于记住要`ping`的或是连接到的哪台设备,如下面的输出所示。
```console
Router(config)#ip host R2 192.168.1.2
Router(config)#ip host R3 192.168.1.3
Router(config)#exit
Router#ping R2
Router#pinging 192.168.1.2
!!!!!
```
### DNS故障排除
**Troubleshooting DNS Issues**
路由器配置默认将会有一个`ip domain-lookup`命令。如此命令已被关闭则DNS将不工作。某些时候路由器管理员会因避免在输入错误命令时等待路由器执行数秒DNS查询而关闭该命令。可通过下面的命令关闭DNS查询。
`Router(config)#no ip domain-lookup`
访问控制清单access control lists, ACL常常拦阻DNS那么这是另一个故障原因。使用命令`debug domain`可在路由器上对DNS进行调试。
## 第14天问题
1. DHCP simplifies network administrative tasks by automatically assigning `_______` to hosts on a network.
2. DHCP uses UDP ports `_______` and `_______`.
3. What are the six DHCP states for clients?
4. Which command will prevent IP addresses `192.168.1.1` to `192.168.1.10` from being used in the pool?
5. Which command will set a DHCP lease of 7 days, 7 hours, and 7 minutes?
6. Which command will enable the router to forward a DHCP Broadcast as a Unicast?
7. DNS uses UDP port `_______`.
8. Which command will set a DNS server address of `192.168.1.1` on your router?
9. If the `_______` `_______`-`_______` command has been disabled on your router, then DNS wont work.
10. Which command will debug DNS packets on your router?
## 第14天问题答案
1. IP information (IP addresses).
2. 67 and 68.
3. Initialising, Selecting, Requesting, Bound, Renewing, and Rebinding.
4. The `ip dhcp excluded-address 192.168.1.1 192.168.1.10`
5. The `lease 7 7 7` command under DHCP Pool Configuration mode.
6. The `ip helper-address` command.
7. 53.
8. The `ip name-server 192.168.1.1` command.
9. `ip domain-lookup`.
10. The `debug domain` command.
## 第14天实验
### 路由器上的DHCP实验
**拓扑**
![路由器上的DHCP实验拓扑图](images/1409.png)
**实验目的**
学习可如何将路由器用作DHCP服务器。
**实验步骤**
1. 如你使用着家用电脑或笔记本电脑就将网络适配器设置为自动获取IP地址。在Packet Tracer中也可这样设置。让后使用交叉线将PC连接到路由器的以太网端口。
![网络适配器设置](images/1410.png)
2. 将IP地址`172.16.1.1 255.255.0.0`加入到路由器接口。如忘记了这个怎么配置,就请看看前面的实验。要确保`no shut`该接口。
3. 配置DHCP地址池。接着为地址配置一个`3`天`3`小时`5`分的租期。最后将`1`到`10`的地址排除在分配给主机的地址之外。假设这些地址已为其它服务器或接口使用。
```console
Router#conf t
Router(config)#ip dhcp pool 60days
Router(dhcp-config)#network 172.16.0.0 255.255.0.0
Router1(dhcp-config)#lease 3 3 5 ← command wont work on Packet Trer
Router1(dhcp-config)#exit
Router(config)#ip dhcp excluded-address 172.16.1.1 172.16.1.10
Router(config)#
```
4. 执行一个`ipconfig /all`命令查看是否有IP地址分配到PC。如旧地址仍在使用就需要执行一下`ipconfig /renew`命令。
```console
PC>ipconfig /all
Physical Address................: 0001.C7DD.CB19
IP Address......................: 172.16.0.1
Subnet Mask.....................: 255.255.0.0
Default Gateway.................: 0.0.0.0
DNS Servers.....................: 0.0.0.0
```
5. 如想要的话可回到DHCP地址池配置模式DHCP Pool Configuration mode加入一个默认网关及DNS服务器地址它们也将在主机PC上得到设置。
```console
Router(config)#ip dhcp pool 60days
Router(dhcp-config)#default-router 172.16.1.2
Router(dhcp-config)#dns-server 172.16.1.3
PC>ipconfig /renew
IP Address......................: 172.16.0.1
Subnet Mask.....................: 255.255.0.0
Default Gateway.................: 172.16.1.2
DNS Server......................: 172.16.1.3
```
### 路由器上的DNS实验
**DNS on a Router lab**
在一台有着某种到互联网连通性的路由器上完成此实验。确保该路由器可以`ping`通比如Google公司的DNS服务器`8.8.8.8`这样的公网IP地址。将该地址配置为一个名字服务器。
`ip name-server 8.8.8.8`
接着尝试解析一些公网网站名字,比如通过`ping www.cisco.com`。
请访问[www.in60days.com](http://www.in60days.com), 观看我是怎么完成这个实验的。