目录
- NTP 基础概念
- 什么是 NTP?
- NTP 层次结构
- NTP 模式
- 配置前的准备工作
- 获取权限
- 检查当前时间
- NTP 服务器配置详解
- 将 Cisco 设备配置为 NTP 客户端 (最常见)
- 将 Cisco 设备配置为 NTP 服务器 (为下游设备提供时间)
- 配置多台上游 NTP 服务器以提高可靠性
- 配置 NTP 认证 (增强安全性)
- NTP 常用命令与排错
- 查看 NTP 状态
- 查看 NTP 关联
- 查看系统时钟
- 调试 NTP
- 完整配置示例
- 作为客户端,同步两台外部 NTP 服务器
- 作为服务器,为内部网络提供时间,并开启认证
- 最佳实践与注意事项
NTP 基础概念
什么是 NTP?
网络时间协议是一种用于在计算机网络中同步计算机时钟的协议,它能提供高精度、高可靠性的时间同步,精度可达毫秒甚至微秒级别。

NTP 层次结构
NTP 使用一个分层的系统来组织时间服务器,称为“层”或“Stratum”。
- Stratum 0: 精确时间源,如原子钟、GPS 钟等,它们不通过网络,直接连接到 Stratum 1 服务器。
- Stratum 1: 直接连接到 Stratum 0 源的时间服务器,它们是网络的权威时间源。
- Stratum 2: 从 Stratum 1 服务器同步时间的服务器,它们为 Stratum 3 提供时间。
- ... 以此类推
注意:Stratum 数值越大,表示离权威源越远,精度也可能略有下降,企业网络内部部署的 NTP 服务器 Stratum 不会超过 15。
NTP 模式
- Client/Server: 客户端向服务器请求时间,服务器不关心客户端的身份,这是最常用的模式。
- Symmetric (Peer): 两台 NTP 设备相互对等,互为备份,相互同步,适用于需要高精度时间同步的场景。
- Broadcast/Multicast: 服务器向网络广播或多播时间信息,适用于大量客户端且对精度要求不高的环境,配置简单但精度较低。
配置前的准备工作
- 获取权限: 你需要进入特权 EXEC 模式 (
enable) 和全局配置模式 (configure terminal)。 - 检查当前时间:
show clock
你会看到当前的系统时间,通常是未同步的本地时间或出厂默认时间。
NTP 服务器配置详解
将 Cisco 设备配置为 NTP 客户端 (最常见)
这是最基本和最常见的配置,让你的 Cisco 设备(如路由器、交换机)与一个或多个外部 NTP 服务器同步。

! 进入全局配置模式 configure terminal ! 指定上游 NTP 服务器的 IP 地址 ! 你可以指定多个,以提高冗余性,设备会选择一个最好的进行同步。 ntp server 192.0.2.1 prefer ! prefer 表示优先使用该服务器 ntp server 203.0.113.5 ! (可选) 设置 NTP 源接口,如果服务器位于特定 VLAN 或需要从特定接口通信 ntp source Vlan10 ! (可选) 设置 NTP 更新间隔,默认是 1024 秒,可以加快同步 ntp update-calendar ! 退出配置模式 end ! 保存配置 write memory
ntp server <ip>: 添加一个 NTP 服务器。prefer: 关键字,表示在多个服务器中优先同步该服务器,通常用于指向你最可靠的内部或上游 NTP 服务器。ntp source <interface>: 指定发送 NTP 请求的源接口,NTP 服务器不在与 Cisco 设备直接相连的网段,或者需要从特定 VLAN 访问,这个命令非常重要。ntp update-calendar: 对于带有硬件日历(如路由器)的设备,这个命令会定期将 NTP 同步后的时间写入硬件日历,防止设备重启后时间重置。
将 Cisco 设备配置为 NTP 服务器 (为下游设备提供时间)
如果你的 Cisco 设备已经成功同步了时间,你可以让它成为一个 NTP 服务器,为网络中的其他设备(如 PC、服务器、其他网络设备)提供时间。
! 假设你的设备已经从上游服务器同步了时间 ! 进入全局配置模式 configure terminal ! 启用 NTP 服务,并指定你的设备作为 Stratum 2 服务器 ! (如果它同步自 Stratum 1,那么它就是 Stratum 2) ntp master 2 ! (可选) 配置 NTP 服务器向客户端广播时间 ! 这适用于没有配置 NTP 客户端的设备 ntp broadcast 192.168.1.255 ! 指定广播地址 ntp broadcast client ! 退出并保存 end write memory
ntp master <stratum>: 核心命令,将设备配置为一个 NTP 主服务器,并指定其 Stratum 层级。警告:仅在确定你的设备时间源可靠时才使用此命令,不要随意在互联网上开启ntp master,这会成为公共 NTP 池的负担,并可能导致你的设备成为 DDoS 放大攻击的源头。ntp broadcast <address>: 启用广播模式。ntp broadcast client: 在客户端接口上启用接收广播 NTP 的功能。
配置多台上游 NTP 服务器以提高可靠性
生产环境中,至少应配置两台或更多上游 NTP 服务器,以防一台服务器宕机。
configure terminal ! 指定第一台服务器,并标记为首选 ntp server pool.ntp.org prefer ! 指定第二台服务器作为备份 ntp server time.windows.com ! 指定第三台服务器,来自你的内部 NTP 服务器 ntp server 10.1.1.100 end write memory
Cisco 设备会自动评估这些服务器的同步状态、网络延迟等,并选择一个最佳的服务器作为主同步源,如果首选服务器 (prefer) 不可用,它会自动切换到下一个最佳服务器。
配置 NTP 认证 (增强安全性)
NTP 认证可以防止恶意攻击者通过发送伪造的 NTP 包来篡改你的设备时间,这是非常重要的安全措施。

配置步骤:
-
在 NTP 服务器上配置:
- 定义一个或多个密钥。
- 将一个密钥设置为可信密钥。
- 在 NTP 服务器的接口上启用 NTP 认证。
-
在 NTP 客户端上配置:
- 定义与服务器完全相同的密钥。
- 将相同的密钥设置为可信密钥。
- 在
ntp server命令中指定要使用的密钥 ID。
示例:
NTP 服务器 (192.0.2.1) 配置:
configure terminal ! 定义密钥 (MD5 加密) ntp authentication-key 1 md5 MySecretKey123 ! 将密钥 1 设置为可信密钥 ntp trusted-key 1 ! 启用 NTP 认证全局功能 ntp authenticate ! 在接口上启用 NTP 认证 (GigabitEthernet0/0) interface GigabitEthernet0/0 ntp authentication-key 1 ntp server 127.127.1.0 key 1 ! (可选) 同步自身时钟源 ntp authenticate end write memory
NTP 客户端 (10.1.1.10) 配置:
configure terminal ! 定义与服务器相同的密钥 ntp authentication-key 1 md5 MySecretKey123 ! 将相同的密钥设置为可信密钥 ntp trusted-key 1 ! 启用 NTP 认证全局功能 ntp authenticate ! 指定服务器,并要求使用密钥 ID 1 进行认证 ntp server 192.0.2.1 key 1 end write memory
NTP 常用命令与排错
查看 NTP 状态
show ntp status
显示设备当前的 NTP 同步状态,包括是否同步、同步源、Stratum 级别、精度等。
Clock is synchronized, stratum 2: 表示已成功同步,Stratum 为 2。Clock is unsynchronized: 表示未同步。
查看 NTP 关联
show ntp associations
显示所有 NTP 对等体(服务器或客户端)的详细信息,包括 IP 地址、同步状态、偏移量、延迟等,这是排错时最重要的命令。
- 表示该对等体被当前用作同步源。
- 表示该对等体是首选同步源。
- 表示该对等体是广播/多播服务器。
查看系统时钟
show clock
显示当前的系统时间,NTP 同步成功,这里显示的就是精确的网络时间。
调试 NTP
debug ntp packets 或 debug ntp all
警告:此命令会产生大量输出,仅在必要时使用,并在排错完成后立即使用 undebug all 关闭。
它会显示所有发送和接收的 NTP 数据包的详细信息,有助于分析网络通信问题。
完整配置示例
作为客户端,同步两台外部 NTP 服务器
目标:让核心交换机与公共 NTP 服务器 pool.ntp.org 和 time.windows.com 同步。
! --- 核心交换机配置 --- enable configure terminal ! 清除旧的 NTP 配置 (可选) no ntp server ! 添加首选的 NTP 服务器 ntp server pool.ntp.org prefer ! 添加备用 NTP 服务器 ntp server time.windows.com ! 指定源接口,如果需要 ntp source Vlan100 ! 将时间写入硬件日历 ntp update-calendar end write memory ! 验证配置 show ntp status show ntp associations
作为服务器,为内部网络提供时间,并开启认证
目标:一台路由器 R1 从外部同步时间,然后作为内部 NTP 服务器,为交换机 S1 提供时间,并启用 MD5 认证。
R1 (NTP 服务器) 配置:
! --- R1 配置 --- enable configure terminal ! 1. 从上游同步时间 ntp server 192.0.2.1 ntp update-calendar ! 2. 配置为内部 NTP 服务器 ntp master 3 ! 3. 配置 NTP 认证 ntp authentication-key 10 md5 InternalNTPSecret ntp trusted-key 10 ntp authenticate ! 4. 在面向内部网络的接口上启用认证 interface GigabitEthernet0/1 description Link to Switch S1 ntp authentication-key 10 ntp broadcast 10.10.10.255 ntp broadcast client ntp authenticate end write memory
S1 (NTP 客户端) 配置:
! --- S1 配置 --- enable configure terminal ! 1. 配置 NTP 认证 (密钥必须与 R1 完全相同) ntp authentication-key 10 md5 InternalNTPSecret ntp trusted-key 10 ntp authenticate ! 2. 指定 R1 作为 NTP 服务器,并要求使用密钥 10 ntp server 10.10.10.1 key 10 end write memory ! 验证 show ntp status show ntp associations
最佳实践与注意事项
- 使用可靠的上游源:优先使用你所在组织内部的 NTP 服务器,其次是公共 NTP 池(如
pool.ntp.org),避免直接使用单个公共服务器。 - 避免使用
ntp master:除非你完全了解其后果,否则不要在互联网上或没有可靠时间源的设备上使用ntp master,它会使你的设备成为一个不可靠的时间源。 - 配置冗余:至少配置两台上游 NTP 服务器。
- 考虑安全:在生产环境中,强烈建议启用 NTP 认证,防止时间篡改攻击。
- 防火墙和 ACL:确保 NTP 流量(UDP 端口 123)在 Cisco 设备和上游服务器之间是双向通的。
- 硬件时钟:对于路由器等设备,使用
ntp update-calendar将 NTP 时间写入硬件时钟,可以保证在设备重启或 NTP 服务中断时,时间不会严重偏移。
