Files
NE_YuR/7_dhcp/dhcp.typ
2025-10-23 16:59:51 +08:00

231 lines
14 KiB
Typst
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.
#import "labtemplate.typ": *
#show: nudtlabpaper.with(title: "DHCP与DNS配置",
author: "程景愉",
id: "202302723005",
training_type: "无军籍",
grade: "2023",
major: "网络工程",
department: "计算机学院",
advisor: "张军",
jobtitle: "工程师",
lab: "306-707",
date: "2025.09.28",
header_str: "《网络工程》实验报告",
)
#set page(header: [
#set par(spacing: 6pt)
#align(center)[#text(size: 11pt)[《网络工程》实验报告]]
#v(-0.3em)
#line(length: 100%, stroke: (thickness: 1pt))
],)
#show heading: it => box(width: 100%)[
#v(0.50em)
#set text(font: hei)
#it.body
]
#outline(title: "目录",depth: 3, indent: 1em)
#pagebreak()
#outline(
title: [图目录],
target: figure.where(kind: image),
)
#show heading: it => box(width: 100%)[
#v(0.50em)
#set text(font: hei)
#counter(heading).display()
// #h(0.5em)
#it.body
]
#set enum(indent: 0.5em,body-indent: 0.5em,)
#pagebreak()
= 实验目的
#para[
本实验旨在配置DHCP服务器以确保客户端能够自动获取合法的IP地址、网关和DNS服务器信息避免受到非法DHCP服务器的干扰。同时通过配置DNS服务器实现IP地址与主机名称的有效映射从而提升网络管理的便捷性和安全性。
]
= 实验原理
== DHCP
#para[
DHCP即动态主机配置协议Dynamic Host Configuration Protocol是一种网络管理协议它允许主机从DHCP服务器动态获取IP地址实现“即插即用”的网络连接方式。这一特性使得网络管理更加便捷用户无需手动配置IP地址即可快速接入网络享受无缝的网络体验。
]
=== DHCP工作原理
#para[
假定DHCP 客户端进程监听的是 68 端口号DHCP 服务端进程监听的是 67 端口号主机通过下面介绍的4个步骤来获取到IP。
#figure(image("DHCP.jpg",format:"png",width: 44%),caption:"DHCP工作原理")
+ *DHCP发现*
客户端首先发起 DHCP 发现报文DHCP DISCOVER IP 数据报,由于客户端没有 IP 地址,也不知道 DHCP 服务器的地址,所以使用的是 UDP 广播通信,其使用的广播目的地址是 255.255.255.255(端口 67并且使用 0.0.0.0(端口 68作为源 IP 地址。DHCP 客户端将该 IP 数据报传递给链路层,链路层然后将帧广播到所有的网络中设备。
+ *DHCP提供*
DHCP 服务器收到 DHCP 发现报文时,用 DHCP 提供报文DHCP OFFER 向客户端做出响应。该报文仍然使用 IP 广播地址 255.255.255.255,该报文信息携带服务器提供可租约的 IP 地址、子网掩码、默认网关、DNS 服务器以及 IP 地址租用期。
+ *DHCP请求*
客户端收到一个或多个服务器的 DHCP 提供报文后,从中选择一个服务器,并向选中的服务器发送 DHCP 请求报文DHCP REQUEST进行响应回显配置的参数。
+ *DHCP确认*
最后,服务端用 DHCP ACK 报文对 DHCP 请求报文进行响应,应答所要求的参数。一旦客户端收到 DHCP ACK 后,交互便完成了,并且客户端能够在租用期内使用 DHCP 服务器分配的 IP 地址。
]
=== DHCP续约
#para[
在租用期内,客户端可以选择续约,即向 DHCP 服务器发送 DHCP REQUEST 报文,以延长租用期:
- 服务器如果同意继续租用,则用 DHCP ACK 报文进行应答,客户端就会延长租期。
- 服务器如果不同意继续租用,则用 DHCP NACK 报文,客户端就要停止使用租约的 IP 地址。
]
=== DHCP中继代理
#para[
DHCP 交互中,全程都是使用 UDP 广播通信。如果 DHCP 服务器和客户端不在同一个局域网内,加之路由器不会转发广播包,那么每个网络都需要配置一个 DHCP 服务器。为了解决这一问题,引入了 DHCP 中继代理。有了 DHCP 中继代理以后,对不同网段的 IP 地址分配也可以由一个 DHCP 服务器统一进行管理。如@dhcp_relay 所示:
#figure(image("DHCP_relay.png",format:"png",width: 52%),caption:"DHCP中继代理工作原理")<dhcp_relay>
- DHCP 客户端会向 DHCP 中继代理发送 DHCP 请求包,而 DHCP 中继代理在收到这个广播包以后,再以单播的形式发给 DHCP 服务器。
- 服务器端收到该包以后再向 DHCP 中继代理返回应答,并由 DHCP 中继代理将此包广播给 DHCP 客户端。
因此DHCP 服务器即使不在同一个链路上也可以实现统一分配和管理 IP 地址。
]
== DNS
#para[
DNS即域名系统Domain Name System是互联网中的一种命名系统用于将域名与IP地址相互映射。在互联网中每个主机都有一个唯一的IP地址但是IP地址不便于人们记忆因此需要一个更易记的域名来代替。DNS系统通过将域名映射到IP地址实现了域名与IP地址之间的转换使得用户可以通过域名访问互联网上的各种服务。
]
=== 域名的层级关系
#para[
在DNS系统中域名采用句点.进行分隔例如www.server.com句点用于标识不同层级之间的界限。域名的层级结构从右至左依次递增右侧的层级高于左侧。这种命名方式源于域名的发明者为外国人其思维方式与中国人有所不同。在描述地理位置时外国人习惯从小范围到大范围依次描述如XX街道 XX区 XX市 XX省而中国人则倾向于从大范围到小范围如XX省 XX市 XX区 XX街道
在域名体系中根域位于最顶层其下为顶级域如com再往下为二级域如server.com。这种层级关系类似于树状结构具体表现为
#figure(image("DNS_hierarchy.png",format:"png",width: 50%),caption:"域名的层级关系")<dns_hierarchy>
- 根DNS服务器
- 顶级域DNS服务器如com
- 权威DNS服务器如server.com
根域的DNS服务器信息被存储在互联网中的所有DNS服务器中。这一机制确保了任何DNS服务器都能够定位并访问根域DNS服务器。因此客户端只需能够连接到任意一台DNS服务器即可通过该服务器找到根域DNS服务器并沿着层级结构逐步查询最终定位到目标DNS服务器。
]
=== 域名解析的工作流程
#para[
浏览器在进行域名解析时首先会检查自身的缓存若未找到对应的IP地址则会查询操作系统的缓存。如果仍未找到浏览器会进一步检查本机的hosts文件。若在这些地方均未找到目标域名的IP地址浏览器将向本地DNS服务器发起查询请求。查询过程如下
#figure(image("DNS_resolution.png",format:"png",width: 100%),caption:"域名解析的工作流程")<dns_resolution>
1. 客户端首先发送一个DNS请求询问www.server.com的IP地址并将请求发送至本地DNS服务器即客户端TCP/IP设置中指定的DNS服务器地址。本地DNS服务器接收到请求后会先在其缓存中查找是否存在www.server.com的记录。若缓存中存在该记录则直接返回对应的IP地址若不存在本地DNS服务器将向根域名服务器发起查询。
2. 根域名服务器是DNS层次结构中的最高层级虽然它不直接解析域名但能够指示查询方向。根域名服务器接收到本地DNS的请求后发现域名后缀为.com因此回应“www.server.com的域名由.com区域管理你可以向.com顶级域名服务器查询。”随后根域名服务器提供.com顶级域名服务器的地址。
3. 本地DNS服务器根据根域名服务器提供的地址向.com顶级域名服务器发起请求询问www.server.com的IP地址。顶级域名服务器接收到请求后回应“www.server.com的域名由server.com区域的权威DNS服务器管理你可以向该服务器查询。”同时顶级域名服务器提供server.com权威DNS服务器的地址。
4. 本地DNS服务器根据顶级域名服务器提供的地址向server.com的权威DNS服务器发起请求询问www.server.com的IP地址。权威DNS服务器是域名解析结果的最终来源负责管理该域名的解析。权威DNS服务器查询后将对应的IP地址如X.X.X.X返回给本地DNS服务器。
5. 最后本地DNS服务器将查询到的IP地址返回给客户端客户端据此与目标服务器建立连接。
整个DNS域名解析过程类似于日常生活中向他人问路的过程通过层层指引最终找到目标地址。
]
= 实验环境
== 实验背景
#para[
网工系的学生正在学习DHCP与DNS技术需要通过实验验证DHCP服务器的配置和工作原理以及DNS服务器的配置和域名解析过程。为此需要搭建一个简单的网络拓扑包括两台路由器和两台PC通过配置DHCP服务器和DNS服务器实现客户端自动获取IP地址和域名解析的功能。
]
== 实验设备
#para[
#align(center)[#table(
columns: (auto, auto,auto),
rows:(1.5em,1.5em,2.8em),
inset: 10pt,
align: horizon+center,
table.header(
[*设备名称*], [*设备型号*], [*设备数量*]
),
"路由器", "华为AR6120-S", "2",
"PC", "联想启天M410\nWindows 10", "2",
)]
]
= 实验步骤及结果
== 实验拓扑
#para[
按实验背景,绘制拓扑图如下:
#figure(image("实验拓扑.png",format: "png",fit:"stretch",width: 44%),caption: "实验拓扑图")
]
== 按照拓扑图接线
#para[
按照拓扑图接线。
#figure(image("机柜背面连线.jpg",format: "jpg",fit:"stretch",width: 40%),caption: "机柜接线图")
]
== 配置基本网络
=== 配置PC
#para[
配置PC1、PC2为“自动获得IP地址”、“自动获得DNS服务器地址”。
]
=== 配置路由器IP地址
#para[
按照拓扑图配置路由器的IP地址。
1. 配置AR2路由器
- 接口 `GE 0/0/0` 连接到 `AR3`IP地址为 `192.168.60.2`
- 接口 `GE 0/0/1` 连接到 `PC3`IP地址为 `192.168.30.2`
#figure(image("ar2ip.png",format: "png",fit:"stretch",width: 60%),caption: "配置AR2的IP地址")
2. 配置AR3路由器
- 接口 `GE 0/0/0` 连接到 `AR2`IP地址为 `192.168.30.2/24`
- 接口 `GE 0/0/1` 连接到 `PC1`IP地址为 `192.168.3.1/24`
- 接口 `GE 0/0/2` 连接到 `PC2`IP地址为 `192.168.2.1/24`
#figure(table(
columns: (auto),
rows:(auto,auto,auto),
inset: 10pt,
align: horizon+center,
figure(image("ar3ip1.png",format: "png",fit:"stretch",width: 80%),),
figure(image("ar3ip2.png",format: "png",fit:"stretch",width: 80%),),
figure(image("ar3ip3.png",format: "png",fit:"stretch",width: 80%),),
stroke: none,
),caption: "配置AR3的IP地址",kind: image)
]
=== 配置RIP协议使互通
#para[
本次实验使用RIP协议配置路由器使得各个网络互通
#figure(image("ar2rip.png",format: "png",fit:"stretch",width: 40%),caption: "在AR2上配置RIP协议")
#figure(image("ar3rip.png",format: "png",fit:"stretch",width: 40%),caption: "在AR3上配置RIP协议")
]
== 配置DHCP服务器
#para[
配置AR2为DHCP服务器。首先使能DHCP服务并创建地址池
#figure(image("ar2enable.png",format: "png",fit:"stretch",width: 55%),caption: "使能DHCP服务并创建地址池")
然后配置DHCP服务器的参数网关、DNS服务器等。
#figure(image("ar2dhcpcfg.png",format: "png",fit:"stretch",width: 70%),caption: "配置DHCP服务器的参数")
给第二个网段创建地址池,并配置参数:
#figure(image("ar2dhcpcfg2.png",format: "png",fit:"stretch",width: 70%),caption: "配置另一个网段的参数")
]
== 配置DHCP中继
#para[
配置AR3为DHCP中继代理将DHCP请求转发到DHCP服务器。为此进入两个与PC相连的接口配置中继模式和DHCP服务器地址
#figure(image("ar3relay.png",format: "png",fit:"stretch",width: 53%),caption: "配置DHCP中继代理")
#figure(image("ar3relay2.png",format: "png",fit:"stretch",width: 53%),caption: "在另一个接口配置DHCP中继代理")
]
== 验证DHCP服务器配置
#para[
在PC1、PC2上查看IP地址、网关、DNS服务器等信息验证DHCP服务器配置是否生效。
#figure(image("2ip.png",format: "png",fit:"stretch",width: 70%),caption: "PC1的IP地址信息")<pc1ip>
#figure(image("3ip.png",format: "png",fit:"stretch",width: 70%),caption: "PC2的IP地址信息")<pc2ip>
#figure(image("2dns.png",format: "png",fit:"stretch",width: 70%),caption: "PC1的DNS服务器地址")
其中PC1的两张截图中先后IP地址不一致这是因为后来为验证DNS服务器是否分配补做了实验。图中显示PC1、PC2分别获取到了合法的IP地址、网关和DNS服务器地址。
#pagebreak()
在AR2上查看DHCP地址分配情况
#figure(image("disp2.png",format: "png",fit:"stretch",width: 70%),caption: "查看DHCP地址分配情况3.0网段)")
图中显示的已分配的IP地址`192.168.3.190`即是@pc1ip 中显示的PC1被分配到的IP地址。
#pagebreak()
另一个网段的也是如此:
#figure(image("disp1.png",format: "png",fit:"stretch",width: 70%),caption: "查看DHCP地址分配情况2.0网段)")
图中显示的已分配的IP地址`192.168.2.124`即是@pc2ip 中显示的PC2被分配到的IP地址。
以上结果表明DHCP服务器配置成功PC1、PC2能够自动获取合法的IP地址、网关和DNS服务器地址。
]
#pagebreak()
= 实验总结
#para[
本次实验通过配置DHCP服务器和DNS服务器实现了客户端自动获取IP地址和域名解析的功能。在实验过程中我们了解了DHCP和DNS的工作原理掌握了DHCP服务器和DNS服务器的配置方法提升了网络管理的便捷性和安全性。
]
#pagebreak()
#show heading: it => box(width: 100%)[
#v(0.50em)
#set text(font: hei)
// #counter(heading).display()
// #h(0.5em)
#it.body
]
#bibliography("ref.yml",full: true,title: "参考文献",style:"gb-7714-2015-numeric")