dhcp & acl report initialzied
This commit is contained in:
231
7_dhcp/dhcp.typ
Normal file
231
7_dhcp/dhcp.typ
Normal file
@ -0,0 +1,231 @@
|
||||
#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")
|
||||
Reference in New Issue
Block a user