文章目录
-
-
-
- 一、FTP服务
-
- 1、FTP定义
- 2、工作原理
-
- [(1)、控制连接(Control Connection)](#(1)、控制连接(Control Connection))
- [(2)、数据连接(Data Connection)](#(2)、数据连接(Data Connection))
- 3、工作模式
-
- [(1)、主动模式(Active Mode)](#(1)、主动模式(Active Mode))
- [(2)、被动模式(Passive Mode, PASV)](#(2)、被动模式(Passive Mode, PASV))
- 4、安全性问题与演进
-
- [(1)、FTPS(FTP Secure)](#(1)、FTPS(FTP Secure))
- 5、FTP的优缺点
- 6、应用场景
- 7、配置命令
- 二、Telnet服务
- 三、DHCP服务
-
- 1、DHCP定义
- 2、工作原理
-
- (1)、Discover(发现)
- (2)、Offer(提供)
- (3)、Request(请求)
- [(4)、 ACK(确认)](#(4)、 ACK(确认))
- 3、租约机制
-
- [4、DHCP 中继代理(Relay Agent)](#4、DHCP 中继代理(Relay Agent))
- 5、安全问题与防护
- 6、应用场景
- 7、手动配置IP与DHCP配置对比
- 8、配置命令
- 四、DNS服务
- 五、NPT服务
-
- 1、NTP定义
- 2、什么需要NTP?
- 3、工作原理
-
- (1)、层次化结构:Stratum(阶层)
- [(2)、时间同步算法(客户端 ↔ 服务器交互)](#(2)、时间同步算法(客户端 ↔ 服务器交互))
- (3)、时钟调整方式
- 4、NTP架构模式
- 5、常用公共NTP服务器
- 6、NTP安全问题与防护
- 7、NTPD与Chrony对比
- 六、实验
-
-
一、FTP服务
1、FTP定义
**FTP(File Transfer Protocol,文件传输协议)**是互联网上最早用于在网络中传输文件的标准协议之一。它基于客户端-服务器架构,允许用户在本地计算机和远程服务器之间上传、下载和管理文件。
FTP 是一种应用层协议,工作在 OSI 模型的第 7 层(应用层),使用 TCP 作为传输层协议,确保数据的可靠传输。其主要目的是提供一种标准化的方法来在不同主机之间进行文件传输,尤其适用于需要频繁上传或下载文件的场景。
标准端口:
- 控制连接端口:21
- 数据连接端口:20(主动模式下)或动态端口(被动模式下)
2、工作原理
FTP 使用双通道通信机制:一个控制连接 + 一个数据连接。
(1)、控制连接(Control Connection)
- 使用 TCP 端口 21。
- 用于发送命令(如登录、列出目录、上传/下载请求等)和接收响应。
- 整个会话期间保持打开状态。
(2)、数据连接(Data Connection)
- 专门用于传输实际的文件内容或目录列表。
- 每次需要传输数据时建立一次新的连接。
- 使用端口 20(主动模式)或由服务器指定的临时端口(被动模式)。
3、工作模式
(1)、主动模式(Active Mode)

流程如下:
- 客户端连接服务器的 21 端口,建立控制连接。
- 客户端告知服务器:"我打开了一个端口 P,你从你的 20 端口连接我这个 P 端口来传数据。"
- 服务器从自己的 20 端口主动连接客户端的 P 端口进行数据传输。
缺点:如果客户端有防火墙,可能会阻止来自外部服务器的入站连接,导致失败。
(2)、被动模式(Passive Mode, PASV)

流程如下:
- 客户端通过控制连接连接服务器。
- 客户端发送
PASV命令。 - 服务器回应:"我在 IP 地址 X 上打开了一个随机高端口 P,请你来连接我这个端口。"
- 客户端主动连接服务器的 P 端口进行数据传输。
优点:适合客户端位于 NAT 或防火墙后的情况,因为所有连接都由客户端发起。
4、安全性问题与演进
原始 FTP 存在严重安全缺陷:
- 所有通信(包括用户名、密码、文件内容)均以明文传输 → 易被嗅探。
- 不支持加密。
为此,发展出更安全的替代方案:
(1)、FTPS(FTP Secure)
- 在 FTP 基础上加入 SSL/TLS 加密。
- 支持显式(FTPS-Explicit)和隐式(FTPS-Implicit)加密。
- 兼容传统 FTP,但需配置证书。
(2)、SFTP(SSH File Transfer Protocol)
- 注意:不是 FTP over SSH,而是完全不同的协议。
- 工作在 SSH 协议之上(默认端口 22)。
- 更安全、功能更强(支持断点续传、权限管理等)。
- 推荐现代系统优先使用 SFTP 而非 FTP。
5、FTP的优缺点
| 优点 | 缺点 |
|---|---|
| 协议成熟,兼容性好 | 明文传输,不安全 |
| 支持大文件传输 | 配置复杂(尤其是防火墙/NAT) |
| 可自动化脚本操作 | 双连接机制增加复杂度 |
| 广泛支持各种操作系统和工具 | 正逐渐被 SFTP/HTTP 替代 |
6、应用场景
- 网站维护人员上传网页文件到 Web 服务器。
- 企业内部共享大型数据文件。
- 自动化备份系统中的文件同步。
- 软件发布站点提供下载服务(如旧版 Linux 发行版镜像)。
7、配置命令
(1)、开启FTP服务端功能
python
[Huawei]ftp [ ipv6 ] server enable
(2)、配置FTP本地用户
python
[Huawei]aaa
[Huawei]local-user user-name password irreversible-cipher password
[Huawei]local-user user-name privilege level level
[Huawei]local-user user-name service-type ftp
[Huawei]local-user user-name ftp-directory directory
二、Telnet服务
1、Telnet定义
Telnet(Teletype Network)是一种在互联网上实现远程终端连接的网络协议,它允许用户通过一个主机(客户端)登录到另一台主机(服务器),并像直接操作该主机一样执行命令。它是早期互联网中最常用的远程管理工具之一。
Telnet 是一种应用层协议,工作在 OSI 模型的第 7 层(应用层),使用 TCP 协议 进行可靠的数据传输,默认端口为 23。
其核心功能是:
- 提供双向、面向文本的通信。
- 允许用户远程登录并控制目标主机的操作系统命令行界面(CLI)。
- 支持跨平台设备间的终端模拟。
📌 注意:Telnet 不等于"远程桌面"或图形化操作,而是基于字符界面的远程命令行交互。
2、工作原理
(1)、基本架构:客户端-服务器模式
- Telnet 客户端 :运行在本地计算机上的程序(如 Windows 自带
telnet命令、PuTTY 等)。 - Telnet 服务器:运行在远程主机上的服务进程,监听 TCP 23 端口,等待连接请求。
(2)、连接建立过程
- 客户端向服务器发起 TCP 连接(目标地址 + 端口 23)。
- 成功建立连接后,服务器通常会发送欢迎信息(banner)。
- 客户端输入用户名和密码进行身份验证(明文传输!)。
- 验证通过后,客户端获得远程 shell 权限,可以执行操作系统命令。
(3)、数据传输机制
- 所有数据(包括键盘输入、屏幕输出)都以 ASCII 文本形式在网络上传输。
- 使用 NVT(Network Virtual Terminal,网络虚拟终端) 抽象模型来屏蔽不同终端之间的差异。
- 发送方将本地终端格式转换为 NVT 格式。
- 接收方再从 NVT 转换成本地可显示的格式。
(4)、协议协商机制(选项协商)
Telnet 支持丰富的选项扩展(如回显、流控、窗口大小等),通过以下特殊控制码实现:
IAC(Interpret As Command):值为255,表示接下来是一个命令。- 常见命令:
WILL (251):我愿意启用某项功能。WONT (252):我不愿启用。DO (253):请你启用。DONT (254):请你不要启用。
3、安全性问题与局限性
| 问题 | 说明 |
|---|---|
| 明文传输 | 用户名、密码、所有命令和响应均未加密 → 易被嗅探 |
| 无身份认证强度保障 | 不支持公钥认证、双因素认证等高级机制 |
| 易受中间人攻击(MITM) | 攻击者可劫持会话 |
| 缺乏完整性校验 | 数据可能被篡改而不自知 |
⚠️ 因此,在现代生产环境中 强烈不推荐使用 Telnet 进行远程管理。
4、安全替代方案:SSH
为了克服 Telnet 的安全缺陷,SSH(Secure Shell) 应运而生:
| 对比项 | Telnet | SSH |
|---|---|---|
| 加密 | ❌ 否 | ✅ 是(AES、RSA 等) |
| 安全性 | 极低 | 高 |
| 默认端口 | 23 | 22 |
| 协议层次 | 应用层 | 应用层(基于 TLS/SSL) |
| 认证方式 | 明文账号密码 | 密码、密钥对、证书等 |
| 数据完整性 | 无 | HMAC 校验 |
| 功能扩展 | 文件传输需配合 FTP | 内建 SFTP、端口转发等 |
| 适用场景 | 内网调试、协议测试 | 所有远程管理场景 |
| 是否推荐 | ❌ 已淘汰 | ✅ 推荐使用 |
✅ 推荐:用 SSH 替代 Telnet 实现远程登录
5、应用场景
| 应用场景 | 描述 |
|---|---|
| 远程服务器管理 | 在没有 SSH 的年代广泛用于 Unix/Linux 系统维护 |
| 网络设备调试 | 思科、华为等路由器/交换机支持 Telnet 配置 |
| 协议测试 | 测试 SMTP、HTTP、FTP 等服务的手动交互(如 telnet smtp.gmail.com 587) |
| 嵌入式系统开发 | 调试单片机、工控设备等 |
6、配置命令
(1)、开启Telnet服务器端功能
python
[Huawei] telnet server enable
(2)、进入用户视图
python
[Huawei] user-interface vty first-ui-number [ last-ui-number ]
(3)、配置VTY用户界面支持的协议
python
[Huawei-ui-vty0-4]] protocol inbound { all | telnet }
(4)、配置认证方式以及密码认证方式下的认证密码
python
[Huawei-ui-vty0-4] authentication-mode {aaa | none | password}
[Huawei-ui-vty0-4] set authentication password cipher
三、DHCP服务
1、DHCP定义
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是网络中用于自动分配 IP 地址和其他网络配置参数的核心协议之一。它极大地简化了网络管理,避免了手动配置 IP 的繁琐和错误。
DHCP 是一种应用层协议,基于客户端-服务器模型,工作在 OSI 模型的 应用层,使用 UDP 协议进行通信。
主要功能:
- 自动为客户端分配 IPv4 地址(IPv6 使用 DHCPv6 或 SLAAC)。
- 分配子网掩码、默认网关、DNS 服务器、租期等网络参数。
- 支持即插即用(Plug-and-Play),适用于家庭、企业、校园等各种规模网络。
✅ 常见设备都支持 DHCP 客户端:PC、手机、路由器、打印机、IoT 设备等。
2、工作原理
DHCP 的核心是经典的"DORA"流程,共四个阶段:

(1)、Discover(发现)
- 客户端刚接入网络时没有 IP 地址。
- 发送一个 广播包 (目标地址
255.255.255.255)到局域网内所有设备:- "我是新来的,请问有 DHCP 服务器吗?能给我一个 IP 吗?"
- 使用 UDP 端口:客户端 68 → 服务器 67
(2)、Offer(提供)
- DHCP 服务器收到 Discover 包后,从地址池中选择一个可用 IP。
- 回复一个 Offer 报文 (仍为广播或单播,取决于实现):
- "我可以给你 IP 192.168.1.100,子网掩码 255.255.255.0,租期 24 小时。"
- 如果存在多个 DHCP 服务器,可能收到多个 Offer,客户端通常选择第一个到达的。
(3)、Request(请求)
- 客户端广播发送 Request 报文:
- "我决定接受来自 Server A 的 Offer!"
- 目的是通知所有其他服务器该 IP 已被占用,防止冲突。
(4)、 ACK(确认)
- 被选中的 DHCP 服务器发送 ACK 报文:
- "已确认,IP 192.168.1.100 正式分配给你。"
- 客户端完成 TCP/IP 配置,可以正常上网。
⚠️ 若服务器无法满足请求(如 IP 已失效),则返回 NAK(Negative Acknowledgment),客户端重新开始 DORA 流程。
3、租约机制

- 每次分配的 IP 地址都有一个租期(Lease Time),常见为几小时到几天。
- 客户端在租期过半时会尝试续租 (Rebinding):
- 向原服务器发送 Request 请求延长租期。
- 成功 → 续约成功;失败 → 尝试与其他服务器通信。
- 租期到期仍未续约 → 客户端必须释放 IP 并重新获取。
🔁 这种机制保证了 IP 地址资源的有效回收和再利用。
4、DHCP 中继代理(Relay Agent)
当 DHCP 服务器不在本地子网时,广播报文无法跨越路由器。
解决方案:DHCP Relay Agent
- 部署在路由器或三层交换机上。
- 接收客户端的广播 Discover 报文。
- 将其封装成单播报文转发给远程 DHCP 服务器。
- 服务器回复后,中继再将结果转回客户端。
🧩 实现跨子网统一 IP 分配,常用于大型企业网络。
5、安全问题与防护
(1)、常见攻击方式
| 攻击类型 | 描述 |
|---|---|
| DHCP 欺骗(Rogue DHCP Server) | 攻击者架设恶意 DHCP 服务器,分配错误网关/DNS,实施中间人攻击 |
| DHCP 耗尽攻击 | 快速发送大量 Discover 请求,耗尽合法地址池,导致拒绝服务 |
(2)、防护措施
- 在交换机上启用 DHCP Snooping:只允许信任端口发送 DHCP Offer。
- 绑定 MAC + IP + 端口(静态绑定)。
- 启用 DAI(Dynamic ARP Inspection) 防止 ARP 欺骗联动攻击。
- 使用 802.1X 认证接入控制。
6、应用场景
| 家庭路由器 | 内建 DHCP 服务,默认分配 192.168.1.x 地址 |
|---|---|
| 企业网络 | 使用专用服务器(如 Windows Server DHCP 或 Linux ISC DHCP)集中管理 |
| 数据中心 | 结合 IPAM(IP Address Management)系统实现自动化分配 |
| 无线网络 | AP 触发客户端通过 DHCP 获取地址并接入互联网 |
7、手动配置IP与DHCP配置对比
| 特性 | 手动配置 IP | DHCP |
|---|---|---|
| 配置复杂度 | 高 | 低 |
| 出错率 | 高(易重复/无效) | 低 |
| 可维护性 | 差 | 好 |
| 适用场景 | 少量固定设备 | 大规模动态网络 |
| 是否推荐 | ❌ 不推荐 | ✅ 强烈推荐 |
8、配置命令
(1)、开启DHCP功能
python
[Huawei] dhcp enable
(2)、开启接口采用接口地址池的DHCP服务器端功能
python
[Huawei-Gigabitthernet0/0/0]dhcp select interface
(3)、指定接口地址池下的DNS服务器地址
python
[Huawei-Gigabitthernet0/0/0]dhcp server dns-list ip-address
(4)、配置接口地址池中不参与自动分配的IP地址范围
python
[Huawei-Gigabitthernet0/0/0]dhcp server excluded-ip-address start-ip-address [ end-ip-address ]
(5)、配置DHCP服务器接口地址池中IP地址的租用有效期限功能
python
[Huawei-Gigabitthernet0/0/0]dhcp server lease { day day [ hour hour [ minute minute ] ] | unlimited }
(6)、创建全局地址池
python
[Huawei]ip pool ip-pool-name
(7)、配置全局地址池可动态分配的IP地址范围
python
[Huawei-ip-pool-2]network ip-address [ mask { mask | mask-length } ]
(8)、配置DHCP客户端的网关地址
python
[Huawei-ip-pool-2]gateway-list ip-address
(9)、配置DHCP客户端使用的DNS服务器的IP地址
python
[Huawei-ip-pool-2]dns-list ip-address
(10)、配置IP地址租期
python
[Huawei-ip-pool-2] lease { day day [ hour hour [ minute minute ] ] | unlimited }
(11)、使能接口的DHCP服务器功能
python
[Huawei-Gigabitthernet0/0/0]dhcp select global
(12)、配置DHCP客户端DHCP中继模式(Relay模式)
python
[Huawei-GigabitEthernet0/0/]dhcp select relay
(13)、指定DHCP服务器的IP的地址
python
[Huawei-GigabitEthernet0/0/1.30]dhcp relay server-ip [ server-ip ]
四、DNS服务
1、DNS定义
DNS(Domain Name System ,域名系统)是互联网的核心基础设施之一,它将人类可读的域名(如 www.baidu.com)转换为机器可识别的 IP 地址(如 14.215.177.38),从而实现网络资源的定位与访问。
DNS 是一种分布式、层次化的命名系统,工作在 OSI 模型的 应用层 ,基于客户端-服务器架构,使用 UDP 和 TCP 协议,默认端口为 53。
✅ 简单理解:DNS 就像"互联网的电话簿"或"地址翻译官",把名字(域名)翻译成号码(IP 地址)。
2、为什么需要DNS?
- IP 地址难以记忆(如
202.96.128.86) - 域名更直观、易记(如
www.qq.com) - 同一个域名可以对应多个 IP(负载均衡)
- IP 可能变化,但域名不变 → 提高灵活性和可维护性
3、工作原理
当用户在浏览器输入 www.example.com 时,DNS 解析流程如下:
步骤 1:本地缓存检查
- 操作系统先查看本地 DNS 缓存是否已有该域名的记录。
- 浏览器也可能有自己的缓存。
- 若存在且未过期 → 直接返回结果。
步骤 2:向本地 DNS 服务器发送请求(递归查询)
- 客户端向配置的 本地 DNS 服务器(通常由 ISP 或公共 DNS 提供,如 8.8.8.8)发起查询。
- 客户端要求:"请帮我找出
www.example.com的 IP。" - 本地 DNS 承诺必须给出答案 → 称为 递归查询(Recursive Query)
步骤 3:本地 DNS 开始迭代查询
如果本地 DNS 没有缓存,则开始以下 迭代查询(Iterative Query):
(1)查询根域名服务器(Root Server)
-
本地 DNS 问根服务器:"你知道
www.example.com吗?" -
根服务器不直接回答 IP,而是说:
"我不知道,但
.com的权威服务器是a.gtld-servers.net,你去问他。"
🌐 全球共有 13 组根服务器(A 到 M),实际通过任播技术部署在全球数百个节点。
(2)查询顶级域(TLD)服务器
-
本地 DNS 转向
.comTLD 服务器提问。 -
TLD 服务器回复:
"
example.com的权威服务器是ns1.example.com,它的 IP 是93.184.216.34。"
(3)查询权威域名服务器(Authoritative DNS Server)
-
本地 DNS 最后向
ns1.example.com查询:"
www.example.com的 IP 是多少?" -
权威服务器返回最终答案:
"IP 是
93.184.216.34"
(4)将结果返回给客户端
- 本地 DNS 把 IP 返回给客户端,并缓存一段时间(根据 TTL 设置)。
4、DNS层次结构
| 层级 | 示例 | 说明 |
|---|---|---|
| 根域 | .(隐式) |
所有域名的起点 |
| 顶级域 | .com, .org, .net, .cn, .edu |
通用或国家代码 |
| 二级域 | baidu.com, qq.com |
用户注册的域名 |
| 子域/主机 | www.baidu.com, mail.qq.com |
具体服务 |
5、DNS记录类型
| 类型 | 名称 | 用途 |
|---|---|---|
| A | Address Record | 将域名映射到 IPv4 地址 |
| AAAA | IPv6 Address Record | 映射到 IPv6 地址 |
| CNAME | Canonical Name | 别名记录,指向另一个域名 |
| MX | Mail Exchange | 邮件服务器地址,用于邮件投递 |
| NS | Name Server | 指定负责该域的权威 DNS 服务器 |
| TXT | Text Record | 存储文本信息,常用于 SPF、DKIM 验证 |
| PTR | Pointer Record | 用于反向 DNS 查询(IP → 域名) |
| SRV | Service Record | 定义特定服务的位置(如 SIP、XMPP) |
| SOA | Start of Authority | 区域起始记录,包含主 NS、序列号等元数据 |
6、DNS查询方式对比
| 类型 | 描述 | 使用者 |
|---|---|---|
| 递归查询(Recursive Query) | 客户端要求服务器必须返回最终答案 | 客户端 → 本地 DNS |
| 迭代查询(Iterative Query) | 服务器返回已知的最佳线索(如下一个服务器地址) | 本地 DNS → 根/TLD/权威服务器 |
| 非递归查询 | 服务器只查自己管辖范围,有就回,没有就回空 | 任意之间 |
7、DNS缓存机制
为了提升性能、减少网络流量,DNS 支持多级缓存:
| 缓存位置 | 说明 |
|---|---|
| 浏览器缓存 | Chrome/Firefox 自带短时间缓存 |
| 操作系统缓存 | Windows: dnscache 服务;Linux: systemd-resolved |
| 路由器缓存 | 家庭路由器可能缓存常用域名 |
| 本地 DNS 服务器缓存 | 如运营商 DNS 或 8.8.8.8 大量缓存热门网站 |
⏳ 缓存有效期由每条记录的 TTL(Time To Live) 决定,单位为秒。例如 TTL=3600 表示缓存 1 小时。
8、公共DNS服务器推荐
| DNS 服务商 | IP 地址 | 特点 |
|---|---|---|
| Google Public DNS | 8.8.8.8, 8.8.4.4 |
全球覆盖,速度快 |
| Cloudflare DNS | 1.1.1.1, 1.0.0.1 |
注重隐私,无日志 |
| 阿里云 DNS | 223.5.5.5, 223.6.6.6 |
国内优化,响应快 |
| 百度 DNS | 180.76.76.76 |
中文企业支持 |
| CNNIC DNS | 1.2.4.8 |
国家级项目,安全可信 |
9、DNS安全问题与防护
(1)、常见攻击方式
| 攻击类型 | 描述 |
|---|---|
| DNS 欺骗 / 缓存投毒(Cache Poisoning) | 向 DNS 缓存注入虚假记录,使用户访问钓鱼网站 |
| DNS 劫持 | 运营商或恶意软件篡改 DNS 响应 |
| DDoS 攻击(如 DNS Amplification) | 利用开放 DNS 服务器发起反射攻击 |
| 中间人攻击(MITM) | 在局域网中伪造 DNS 响应 |
(2)、防护措施
| 技术 | 说明 |
|---|---|
| DNSSEC | 数字签名验证响应真实性,防止伪造 |
| DNS over HTTPS (DoH) | 加密 DNS 查询(如 Firefox 使用 1.1.1.1/dns-query) |
| DNS over TLS (DoT) | 基于 TLS 加密传输 |
| 限制递归查询 | 仅对内部用户开放递归服务,避免被滥用 |
| 使用可信 DNS 服务 | 如 Cloudflare、Google DNS |
10、传统DNS与DoH/DoT对比
| 特性 | 传统 DNS | DoH / DoT |
|---|---|---|
| 是否加密 | ❌ 否 | ✅ 是 |
| 隐私保护 | 差(ISP 可窥探) | 好 |
| 性能 | 快 | 略慢(加密开销) |
| 部署难度 | 简单 | 需要客户端/服务器支持 |
| 推荐场景 | 普通上网 | 敏感环境、防监控 |
五、NPT服务
1、NTP定义
NTP(Network Time Protocol,网络时间协议) 是互联网中用于同步计算机系统时钟的核心协议之一。它通过高精度的时间校准,确保分布式网络中的设备拥有统一、准确的时间基准。
NTP 是一种应用层协议(OSI 模型第7层),工作在 UDP 协议 上,端口号为 123 。
其目标是将网络中所有设备的时钟同步到一个共同的时间源,通常精确到 毫秒级甚至微秒级。
✅ 简单理解:NTP 就像"网络世界的原子钟广播员",让所有联网设备知道"现在到底几点"。
2、什么需要NTP?
- 日志审计:跨服务器排查问题时,必须依赖统一时间戳。
- 安全认证:Kerberos、TLS/SSL 证书验证等机制对时间敏感,时间偏差过大将导致认证失败。
- 金融交易:股票交易、区块链记账等场景要求极高时间一致性。
- 自动化任务:定时任务(如 cron)、备份、监控告警都依赖准确时间。
- 防止数据混乱:数据库复制、分布式系统协调(如 Raft、Paxos)需要逻辑时钟或物理时钟同步。
⚠️ 若两台服务器时间相差几分钟,可能导致:
- SSL 连接失败(证书"尚未生效"或"已过期")
- 邮件被标记为垃圾邮件
- 安全日志无法关联分析
3、工作原理
(1)、层次化结构:Stratum(阶层)
NTP 使用分层树状结构来组织时间源,称为 Stratum Model:
| Stratum | 名称 | 描述 |
|---|---|---|
| 0 | 参考时钟(Refclock) | 原子钟、GPS、无线电时钟等,不直接接入网络 |
| 1 | 主时间服务器(Primary Server) | 直接连接 Stratum 0 设备,提供最精确时间 |
| 2 | 次级服务器 | 同步于 Stratum 1,也可为下级服务 |
| 3~15 | 更多层级 | 每向下一层,精度略有下降 |
| 16+ | 无效 | 表示不同步状态 |
(2)、时间同步算法(客户端 ↔ 服务器交互)
四个关键时间戳:
- T1:客户端发送请求的本地时间
- T2:服务器收到请求的时间(来自服务器时钟)
- T3:服务器发送响应的时间
- T4:客户端收到响应的本地时间
(3)、时钟调整方式
NTP 不会简单地"设置时间",而是智能调节:
| 方式 | 说明 |
|---|---|
| 渐进式调整(Slewing) | 缓慢加快或减慢时钟频率,避免时间跳跃 → 推荐方式 |
| 步进调整(Stepping) | 当偏移过大(如 > 128ms)时,直接跳转时间 |
🔁 客户端通常每 64~1024 秒 自动同步一次。
4、NTP架构模式
| 模式 | 描述 | 适用场景 |
|---|---|---|
| Client/Server | 客户端主动查询服务器 | 最常见,适用于大多数终端 |
| Peer-to-Peer (Symmetric) | 两个 NTP 实体互为客户端和服务端,用于高可用集群 | 数据中心内部 |
| Broadcast/Multicast | 服务器周期性广播时间,客户端被动接收 | 局域网内大量设备同步 |
| Manycast | 客户端向一组潜在服务器发送请求,选择最佳响应者 | 动态环境,提高可靠性 |
5、常用公共NTP服务器
| 组织 | NTP 地址 | 特点 |
|---|---|---|
| 阿里云 | ntp.aliyun.com |
国内访问快,推荐 |
| 腾讯云 | time.pool.tencentyun.com |
高并发支持 |
time.google.com |
支持 NTPv4,精度高 | |
| Cloudflare | time.cloudflare.com |
注重隐私,全球部署 |
| 中国国家授时中心 | ntp.ntsc.ac.cn |
官方权威时间源 |
6、NTP安全问题与防护
(1)、常见攻击方式
| 攻击类型 | 描述 |
|---|---|
| NTP 放大攻击(Amplification DDoS) | 利用 monlist 命令返回大量数据,伪造源 IP 发起反射攻击 |
| 中间人攻击(MITM) | 篡改 NTP 响应,使客户端时间错乱 |
| 拒绝服务(DoS) | 泛洪 NTP 请求耗尽服务器资源 |
(2)、防护措施
| 措施 | 说明 |
|---|---|
| 禁用 monlist 命令 | 在配置文件中添加 disable monitor |
| 启用 NTP 认证(Autokey / symmetric keys) | 使用密钥验证服务器身份 |
| 限制访问控制列表(ACL) | 只允许受信任的客户端查询 |
| 使用 Chrony 替代传统 ntpd | 更现代、更安全、更适合虚拟机 |
| 防火墙过滤 UDP 123 端口 | 控制进出流量 |
7、NTPD与Chrony对比
| 特性 | ntpd | chrony |
|---|---|---|
| 启动速度 | 慢(需长时间学习频率误差) | 快(适合频繁重启设备) |
| 虚拟机支持 | 差 | 优秀(能应对时钟漂移) |
| 网络波动适应性 | 一般 | 强(断网后恢复更快) |
| 配置复杂度 | 较高 | 简洁 |
| 安全性 | 支持 Autokey | 支持密钥认证 |
| 推荐程度 | 逐渐淘汰 | ✅ 推荐新系统使用 |
六、实验
1、配置FTP服务
(1)、拓扑图

(2)、AR1配置
python
<Huawei>system-view
# 进入系统视图模式,这是进行大多数配置操作的前提。
# 用户视图下只能执行基本查看命令,要配置设备必须进入 system-view。
Enter system view, return user view with Ctrl+Z.
# 提示信息:进入系统视图后,可以通过 Ctrl+Z 快速退回到用户视图。
[Huawei]sysname AR1
# 将设备的主机名从默认的 "Huawei" 修改为 "AR1",便于在网络中识别该设备。
[AR1]interface GigabitEthernet 0/0/0
# 进入千兆以太网接口 GigabitEthernet0/0/0 的接口视图,准备配置该接口的参数。
[AR1-GigabitEthernet0/0/0]ip address 12.1.1.1 24
# 为该接口配置 IPv4 地址 12.1.1.1,子网掩码为 255.255.255.0(即 /24 网络前缀)。
# 这使得该接口可以作为网络中的一个 IP 节点参与通信。
[AR1-GigabitEthernet0/0/0]quit
# 退出当前接口视图,返回到系统视图。
[AR1]aaa
# 进入 AAA(Authentication, Authorization, and Accounting)视图。
# AAA 是用于管理用户访问控制的安全框架,常用于远程登录、用户权限等管理。
[AR1-aaa]local-user huawei password cipher huawei
# 创建一个名为 "huawei" 的本地用户,并设置其密码为 "huawei"。
# "cipher" 表示密码将以加密形式存储在配置文件中(虽然这里明文写出来,但实际保存时会加密)。
[AR1-aaa]local-user huawei idle-timeout 5 0
# 设置该用户的空闲超时时间为 5 分钟 0 秒。
# 如果用户在 5 分钟内没有任何操作,系统将自动断开连接。
[AR1-aaa]local-user huawei privilege level 3
# 设置该用户的权限等级为 3(范围通常是 0-15,数字越大权限越高)。
# 等级 3 允许执行大多数常规配置命令,高于普通用户(level 0~2),低于管理员(level 15)。
[AR1-aaa]local-user huawei ftp-directory flash:
# 指定该用户使用 FTP 登录时的根目录为设备的 flash 存储目录。
# flash: 通常是设备上存放系统文件和配置的存储区域,用户可通过 FTP 访问此目录下的文件。
[AR1-aaa]local-user huawei service-type ftp
# 指定该用户的服务类型为 FTP,表示该用户只能通过 FTP 协议访问设备。
# 若不开启其他服务类型(如 telnet、ssh),则无法通过这些方式登录。
[AR1-aaa]quit
# 退出 AAA 配置视图,返回系统视图。
[AR1]quit
# 退出系统视图,返回用户视图。
(3)、AR2配置
python
<Huawei>system-view
# 进入系统视图模式。在用户视图下输入此命令后,可以开始对设备进行全局配置。
# 提示:按 Ctrl+Z 可随时退出到用户视图。
Enter system view, return user view with Ctrl+Z.
# 系统提示信息,表示当前已进入系统视图,可通过 Ctrl+Z 返回用户视图。
[Huawei]sysname AR2
# 将设备的主机名从默认的 "Huawei" 修改为 "AR2"。
# 便于在网络环境中识别该设备,尤其在多台设备调试时非常有用。
[AR2]interface GigabitEthernet 0/0/0
# 进入接口 GigabitEthernet0/0/0 的配置视图。
# 这是一个千兆以太网物理接口,通常用于连接其他网络设备或主机。
[AR2-GigabitEthernet0/0/0]ip address 12.1.1.2 24
# 为该接口配置 IPv4 地址 12.1.1.2,子网掩码为 255.255.255.0(即 /24)。
# 此地址与另一台设备 AR1 的接口地址 12.1.1.1 在同一网段,可用于直连通信。
[AR2-GigabitEthernet0/0/0]quit
# 退出当前接口视图,返回到系统视图。
2、配置DHCP服务(接口地址)
(1)、拓扑图

(2)、AR1配置
python
<Huawei>system-view
# 进入系统视图模式,允许进行全局设备配置。
# 用户视图下只能执行查看命令,大多数配置必须在此模式下完成。
Enter system view, return user view with Ctrl+Z.
# 提示信息:进入系统视图后,可通过快捷键 Ctrl+Z 直接返回用户视图。
[Huawei]sysname AR1
# 将设备的主机名从默认的 "Huawei" 修改为 "AR1",便于在网络中识别该设备。
[AR1]dhcp enable
# 全局启用 DHCP 服务。
# 华为设备默认可能关闭 DHCP 功能,即使配置了相关参数也不会生效,因此必须先开启此功能。
[AR1]interface GigabitEthernet 0/0/0
# 进入千兆以太网接口 GigabitEthernet0/0/0 的配置视图。
# 该接口将作为连接内网(如PC、终端等)的网关接口。
[AR1-GigabitEthernet0/0/0]ip address 192.168.1.1 24
# 配置该接口的 IP 地址为 192.168.1.1,子网掩码为 255.255.255.0(即 /24)。
# 这意味着该接口所在的局域网网段是 192.168.1.0/24,它将成为该网段的默认网关。
[AR1-GigabitEthernet0/0/0]dhcp select interface
# 在该接口上启用基于接口的 DHCP 服务器模式(也称为接口地址池模式)。
# 客户端从此接口接入时,DHCP 服务器会自动使用该接口所在网段(192.168.1.0/24)作为地址池来分配 IP 地址。
# 分配的地址范围是:除保留和排除外的所有可用地址(如 192.168.1.2 ~ 192.168.1.254)。
[AR1-GigabitEthernet0/0/0]dhcp server excluded-ip-address 192.168.1.100 192.168.1.199
# 设置 DHCP 地址池中的排除地址范围:从 192.168.1.100 到 192.168.1.199 不参与自动分配。
# 常用于预留某些 IP 给服务器、打印机或静态 IP 设备,防止被动态分配出去。
[AR1-GigabitEthernet0/0/0]dhcp server lease day 2 hour 0 minute 0
# 设置 DHCP 分配的 IP 地址租期为 2 天(48小时)。
# 租期到期前,客户端需重新请求续租;若未续租,则地址可被回收并分配给其他设备。
[AR1-GigabitEthernet0/0/0]dhcp server dns-list 8.8.8.8
# 指定 DHCP 向客户端分发的 DNS 服务器地址为 8.8.8.8(Google 公共 DNS)。
# 客户端获取 IP 的同时也会获得该 DNS 地址,从而实现域名解析功能。
# 可配置多个 DNS,例如:`dns-list 8.8.8.8 114.114.114.114`
[AR1-GigabitEthernet0/0/0]quit
# 退出当前接口配置视图,返回到系统视图。
3、配置DHCP服务(中继)
(1)、拓扑图

(2)、SW1配置
python
<Huawei>system-view
# 进入系统视图模式,允许进行全局配置。
# 用户视图下只能执行查看类命令,大部分配置需在此模式下完成。
Enter system view, return user view with Ctrl+Z.
# 提示信息:当前已进入系统视图,可通过 Ctrl+Z 快速返回用户视图。
[Huawei]sysname SW1
# 将设备主机名从默认的 "Huawei" 修改为 "SW1"。
# 便于在网络中识别该交换机,尤其在多台设备环境中非常重要。
[SW1]vlan batch 20 30
# 批量创建 VLAN 20 和 VLAN 30。
# 使用 `batch` 关键字可以一次性创建多个 VLAN,避免重复输入。
# 创建后,VLAN 20 和 VLAN 30 即可在交换机上用于端口划分和数据转发。
[SW1]interface GigabitEthernet 0/0/2
# 进入接口 GigabitEthernet0/0/2 的配置视图。
# 此接口将连接属于 VLAN 20 的终端设备(如PC、打印机等)。
[SW1-GigabitEthernet0/0/2]port link-type access
# 设置该端口为接入模式(Access 模式)。
# Access 端口用于连接终端设备,只能属于一个 VLAN,且不带标签传输数据。
[SW1-GigabitEthernet0/0/2]port default vlan 20
# 将该 Access 端口划入 VLAN 20。
# 所有从此端口接入的设备都将被视为 VLAN 20 的成员,其流量将在 VLAN 20 内转发。
[SW1-GigabitEthernet0/0/2]quit
# 退出当前接口视图,返回系统视图。
[SW1]interface GigabitEthernet 0/0/3
# 进入接口 GigabitEthernet0/0/3 的配置视图。
# 此接口将连接属于 VLAN 30 的终端设备。
[SW1-GigabitEthernet0/0/3]port link-type access
# 设置该端口为 Access 模式。
[SW1-GigabitEthernet0/0/3]port default vlan 30
# 将该端口划入 VLAN 30。
# 接入此端口的设备将属于 VLAN 30。
[SW1-GigabitEthernet0/0/3]quit
# 退出当前接口视图。
[SW1]interface GigabitEthernet 0/0/1
# 进入接口 GigabitEthernet0/0/1 的配置视图。
# 此接口通常用于连接另一台交换机或路由器,作为主干链路使用。
[SW1-GigabitEthernet0/0/1]port link-type trunk
# 设置该端口为 Trunk 模式。
# Trunk 端口允许多个 VLAN 的数据帧通过,并携带 802.1Q 标签进行传输,常用于交换机之间的互联。
[SW1-GigabitEthernet0/0/1]port trunk allow-pass vlan 20 30
# 配置该 Trunk 端口允许 VLAN 20 和 VLAN 30 的数据帧通过。
# 只有明确允许的 VLAN 流量才能跨此链路传输,其他 VLAN 默认被阻断。
# 这是实现不同交换机上相同 VLAN 设备互通的关键配置。
[SW1-GigabitEthernet0/0/1]quit
# 退出当前接口视图,返回系统视图。
(3)、AR2配置
python
<Huawei>system-view
# 进入系统视图模式,允许进行全局设备配置。
# 用户视图下只能查看状态,无法修改配置。
Enter system view, return user view with Ctrl+Z.
# 提示信息:当前已进入系统视图,可通过 Ctrl+Z 返回用户视图。
[Huawei]sysname AR2
# 将设备主机名从默认的 "Huawei" 修改为 "AR2"。
# 便于在网络环境中识别本设备,尤其是在多台设备组网时。
[AR2]dhcp enable
# 全局启用 DHCP 服务功能。
# 即使配置了 DHCP Relay,也必须开启此命令,否则中继功能不会生效。
[AR2]interface GigabitEthernet 0/0/1.20
# 创建并进入子接口 GigabitEthernet0/0/1.20。
# 子接口用于支持 VLAN 划分,".20" 是逻辑编号,通常对应 VLAN 20。
# 此接口将处理来自 VLAN 20 的流量。
[AR2-GigabitEthernet0/0/1.20]dot1q termination vid 20
# 配置该子接口终结 IEEE 802.1Q 标签,VID(VLAN ID)为 20。
# 表示所有带有 VLAN 20 标签的数据帧在进入此接口时会被剥离标签并交由路由器处理。
# 这是实现单臂路由的关键步骤。
[AR2-GigabitEthernet0/0/1.20]ip address 192.168.20.1 24
# 为该子接口配置 IP 地址 192.168.20.1,子网掩码 /24。
# 它将成为 VLAN 20 网段(192.168.20.0/24)的默认网关。
[AR2-GigabitEthernet0/0/1.20]arp broadcast enable
# 启用 ARP 广播功能。
# 默认情况下,子接口可能禁用广播,导致终端无法通过 ARP 获取网关 MAC 地址。
# 开启后允许 ARP 请求广播,确保客户端能正常通信。
[AR2-GigabitEthernet0/0/1.20]quit
# 退出当前子接口配置视图。
[AR2]interface GigabitEthernet 0/0/1.30
# 创建并进入子接口 GigabitEthernet0/0/1.30。
# 用于处理 VLAN 30 的流量。
[AR2-GigabitEthernet0/0/1.30]dot1q termination vid 30
# 配置该子接口终结 VLAN 30 的 802.1Q 标签。
[AR2-GigabitEthernet0/0/1.30]ip address 192.168.30.1 255.255.255.0
# 为该子接口配置 IP 地址 192.168.30.1,子网掩码 255.255.255.0(即 /24)。
# 成为 VLAN 30 网段的网关。
[AR2-GigabitEthernet0/0/1.30]arp broadcast enable
# 启用 ARP 广播,确保 VLAN 30 内的主机可以解析网关的 MAC 地址。
[AR2-GigabitEthernet0/0/1.30]quit
# 退出当前子接口配置视图。
[AR2]interface GigabitEthernet 0/0/0
# 进入物理接口 G0/0/0,通常用于连接外部网络(如另一台路由器或 ISP)。
[AR2-GigabitEthernet0/0/0]ip address 23.1.1.2 24
# 配置该接口 IP 为 23.1.1.2/24,作为与外部网络通信的出口接口。
# 假设远端 DHCP 服务器位于此网段,IP 为 23.1.1.3。
[AR2-GigabitEthernet0/0/0]quit
# 退出接口配置。
[AR2]interface GigabitEthernet 0/0/1.20
# 再次进入 VLAN 20 对应的子接口,进行 DHCP 中继配置。
[AR2-GigabitEthernet0/0/1.20]dhcp select relay
# 设置该接口的 DHCP 工作模式为 "中继" 模式(Relay)。
# 表示当收到客户端的 DHCP 发现报文(DHCP Discover)时,不自己分配 IP,
# 而是将其转发给指定的远程 DHCP 服务器。
[AR2-GigabitEthernet0/0/1.20]dhcp relay server-ip 23.1.1.3
# 指定 DHCP 中继的目标服务器 IP 地址为 23.1.1.3。
# 所有来自 VLAN 20 的 DHCP 请求都将被封装并转发到该地址。
[AR2-GigabitEthernet0/0/1.20]quit
# 退出配置。
[AR2]interface GigabitEthernet 0/0/1.30
# 再次进入 VLAN 30 的子接口。
[AR2-GigabitEthernet0/0/1.30]dhcp select relay
# 同样设置为 DHCP 中继模式。
[AR2-GigabitEthernet0/0/1.30]dhcp relay server-ip 23.1.1.3
# 指定相同的 DHCP 服务器地址 23.1.1.3 来响应 VLAN 30 的请求。
[AR2-GigabitEthernet0/0/1.30]quit
# 完成配置并退出。
(4)、AR3配置
python
<Huawei>system-view
# 进入系统视图模式,允许进行全局配置。
# 只有在此模式下才能修改设备参数。
Enter system view, return user view with Ctrl+Z.
# 提示信息:当前已进入系统视图,可通过 Ctrl+Z 返回用户视图。
[Huawei]sysname AR3
# 将设备主机名从默认的 "Huawei" 修改为 "AR3"。
# 便于在网络中识别本设备,常用于拓扑管理和远程维护。
[AR3]interface GigabitEthernet 0/0/0
# 进入物理接口 GigabitEthernet0/0/0 的配置视图。
# 此接口将连接到另一台路由器(如 AR2),用于通信和接收 DHCP 中继请求。
[AR3-GigabitEthernet0/0/0]ip address 23.1.1.3 24
# 配置该接口的 IP 地址为 23.1.1.3,子网掩码 /24(即 255.255.255.0)。
# 与 AR2 的 G0/0/0 接口(23.1.1.2)处于同一网段,确保直连可达。
[AR3-GigabitEthernet0/0/0]quit
# 退出接口配置模式,返回系统视图。
[AR3]ip route-static 192.168.20.0 24 23.1.1.2
# 配置一条静态路由:
# 目标网络:192.168.20.0/24(VLAN 20 所在网段)
# 下一跳地址:23.1.1.2(即 AR2 的接口地址)
# 表示当数据包目的地址属于 192.168.20.0/24 时,应转发给 AR2 处理。
[AR3]ip route-static 192.168.30.0 24 23.1.1.2
# 同样添加静态路由,指向 VLAN 30 网段(192.168.30.0/24),下一跳仍为 23.1.1.2。
# 这两条路由使得 AR3 能"知道"如何到达远端的两个内网 VLAN。
[AR3]dhcp enable
# 全局启用 DHCP 服务。
# 华为设备默认可能关闭 DHCP 功能,即使配置了地址池也不会生效,必须开启此命令。
[AR3]interface GigabitEthernet 0/0/0
# 再次进入 G0/0/0 接口,准备配置其 DHCP 模式。
[AR3-GigabitEthernet0/0/0]undo dhcp select interface
# 取消该接口原本可能启用的"基于接口的 DHCP 服务器"模式。
# 因为我们不希望它在本地网段(23.1.1.0/24)自动分配 IP。
[AR3-GigabitEthernet0/0/0]dhcp select global
# 设置该接口使用"全局地址池"模式来响应 DHCP 请求。
# 当收到 DHCP Discover 报文(尤其是来自中继的请求)时,
# 将根据报文中携带的 giaddr(网关IP)字段查找对应的全局地址池进行分配。
[AR3]ip pool vlan20
# 创建一个名为 "vlan20" 的全局 IP 地址池。
# 该地址池将用于向 VLAN 20 的客户端分配 IP 地址。
[AR3-ip-pool-vlan20]network 192.168.20.0 mask 24
# 定义该地址池的网段为 192.168.20.0,子网掩码 255.255.255.0。
# 所有从这个池分配的 IP 都来自此范围(除排除外)。
[AR3-ip-pool-vlan20]gateway-list 192.168.20.1
# 设置客户端获取 IP 时应使用的默认网关为 192.168.20.1。
# 这是 AR2 上对应子接口的 IP,也是 VLAN 20 的三层网关。
[AR3-ip-pool-vlan20]excluded-ip-address 192.168.20.100 192.168.20.200
# 配置地址排除范围:192.168.20.100 到 192.168.20.200 不参与自动分配。
# 常用于预留这些地址给服务器、打印机或其他需要固定 IP 的设备。
[AR3-ip-pool-vlan20]dns-list 8.8.8.8
# 指定分发给客户端的 DNS 服务器地址为 Google 公共 DNS(8.8.8.8)。
# 客户端可借此解析域名。
[AR3-ip-pool-vlan20]quit
# 退出 vlan20 地址池配置,返回系统视图。
[AR3]ip pool vlan30
# 创建第二个全局地址池,名称为 vlan30,用于 VLAN 30 客户端。
[AR3-ip-pool-vlan30]network 192.168.30.0 mask 24
# 设置地址池网段为 192.168.30.0/24。
[AR3-ip-pool-vlan30]gateway-list 192.168.30.1
# 设置客户端的默认网关为 192.168.30.1(AR2 上的 G0/0/1.30 接口)。
[AR3-ip-pool-vlan30]excluded-ip-address 192.168.30.100 192.168.30.200
# 排除 192.168.30.100 ~ 192.168.30.200 范围内的地址,防止被动态分配。
[AR3-ip-pool-vlan30]dns-list 8.8.8.8
# 同样指定 DNS 服务器为 8.8.8.8。
[AR3-ip-pool-vlan30]quit
# 完成配置并退出。