debian安装使用NTP
转载自:https://www.cnblogs.com/jiangyibo/p/8626196.html
领导要求,要4台机器时钟同步,上网查了查,主要看了看ptp和ntp,感觉ntp就够用,索性就直接上手ntp了。
以下内容纯属最基础的内容,只适合第一次接触ntp并且需求简单的朋友。
就我当前项目来介绍下ntp:多台计算机因为某些原因对时间的同步性比较重视,所以需要不间断的去同步各个计算机的时间,而ntp就是使网络中的各个计算机时间同步的一种协议,其精度在局域网内可达0.1ms,在互联网上绝大多数的地方其精度可以达到1-50ms。
第一步:安装ntp
aptitude install ntp (此处用apt-get 也可以,但建议使用aptitude,就我目前知道的是aptitude安装后的软件卸载时能够将其的依赖包也卸载掉,而apt-get的卸载无法办到,两者建议不要混用。)
第二步:查看安装是否成功
service --status-all

/etc/ntp.conf是ntp的配置文件,第一次接触最好在编辑之前先备份,你懂得。
第三步:了解/etc/ntp.conf设置
简单的来说,该文件其实就两关键词restrict和server,前者是用来做限制的,后者是用来连接上层服务器(ntp一共16层,第16层无法同步)
restrict [ 客户端IP ] mask [ IP掩码 ][参数]
“客户端IP” 和 “IP掩码” 如果使用default关键字,表示对所有的计算机进行控制,常见的参数如下:
- ignore:拒绝连接到NTP服务器
- nomodiy: 客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时。
- noquery: 不提供客户端的时间查询
- notrap: 不提供trap远程登录功能,trap服务是一种远程时间日志服务。
- notrust: 客户端除非通过认证,否则该客户端来源将被视为不信任子网 。
- nopeer: 提供时间服务,但不作为对等体。
- kod: 向不安全的访问者发送Kiss-Of-Death报文。
server[上层服务器的IP或域名][参数]
其中host是上层NTP服务器的IP地址或域名,随后所跟的参数解释如下所示:
- key: 表示所有发往服务器的报文包含有秘钥加密的认证信息,n是32位的整数,表示秘钥号。
- prefer: 如果有多个server选项,具有该参数的服务器有限使用。
- minpoll: 指定与查询该服务器的最小时间间隔为2的n次方秒,n默认为6,范围为4-14。
- maxpoll: 指定与查询该服务器的最大时间间隔为2的n次方秒,n默认为10,范围为4-14。
- iburst: 当初始同步请求时,采用突发方式接连发送8个报文,时间间隔为2秒。
第四步:编辑/etc/ntp.conf
编辑之前一定要知道ntp的每层设备都是服务器,下面说的服务端和客户端都是相对而言的。
先上服务端

客服端

第五步:运行ntp
服务端和客户端的配置文件在编辑完保存后就可以重新启动ntp了:
/etc/init.d/ntp restart
重启时间可能会比较长,大概在5分钟左右。
可以通过ntpq -p来查看所有作为时钟源校正过本地NTP服务器时钟的上层NTP服务器

各个选项的解释:
- remote: 远程NTP服务器的IP地址或域名,带 “*” 的表示本地NTP服务器与该服务器同步。
- refid: 远程NTP服务器的上层服务器的IP地址或域名。
- st: 远程NTP服务器所在的层数。
- t: 本地NTP服务器与远程NTP服务器的通信方式,u: 单播; b: 广播; l: 本地。
- when: 上一次校正时间与现在时间的差值。
- poll: 本地NTP服务器查询远程NTP服务器的时间间隔。
- reach: 是一种衡量前8次查询是否成功的位掩码值,377表示都成功,0表示不成功。
- delay: 网络延时,单位是10的-6次方秒。
- offset: 本地NTP服务器与远程NTP服务器的时间偏移。
- jitter: 查询偏差的分布值,用于表示远程NTP服务器的网络延时是否稳定,单位为10的-6次方秒
还可以通过ntptrace查看本地NTP服务器的在第几层。

最后提一下ntpd和ntpdate(教程为ntpd):
ntpd在实际同步时间时是一点点的校准过来时间的,最终把时间慢慢的校正对。而ntpdate不会考虑其他程序是否会阵痛,直接调整时间。简单的说就是ntpd是校准时间,ntpdate是调整时间。
不建议大家使用ntpdate,原因摘抄其他前辈的笔记:
第一,这样做不安全。ntpdate的设置依赖于ntp服务器的安全性,攻击者可以利用一些软件设计上的缺陷,拿下ntp服务器并令与其同步的服务器执行某些消耗性的任务。由于ntpdate采用的方式是跳变,跟随它的服务器无法知道是否发生了异常(时间不一样的时候,唯一的办法是以服务器为准)。
第二,这样做不精确。一旦ntp服务器宕机,跟随它的服务器也就会无法同步时间。与此不同,ntpd不仅能够校准计算机的时间,而且能够校准计算机的时钟。
第三,这样做不够优雅。由于是跳变,而不是使时间变快或变慢,依赖时序的程序会出错(例如,如果ntpdate发现你的时间快了,则可能会经历两个相同的时刻,对某些应用而言,这是致命的)。
Debian NTP时间服务器配置要点
1. 安装NTP服务
# 更新软件包列表
sudo apt update
# 安装NTP服务(经典版)
sudo apt install ntp
# 或使用chrony(现代推荐,更精准)
sudo apt install chrony
2. 配置文件核心要点
/etc/ntp.conf 关键配置项:
# 1. 上游时间服务器配置
server 0.debian.pool.ntp.org iburst
server 1.debian.pool.ntp.org iburst
server 2.debian.pool.ntp.org iburst
server 3.debian.pool.ntp.org iburst
# 或使用国内NTP服务器(更快更稳定)
server ntp.aliyun.com iburst
server ntp.tencent.com iburst
server cn.pool.ntp.org iburst
# 2. 允许本地网络客户端同步(关键!)
restrict 192.168.10.0 mask 255.255.255.0 nomodify notrap
# 3. 本地时钟兜底(当无法连接上游时使用)
server 127.127.1.0
fudge 127.127.1.0 stratum 10
# 4. 访问控制
restrict -4 default kod notrap nomodify nopeer noquery limited
restrict -6 default kod notrap nomodify nopeer noquery limited
restrict 127.0.0.1
restrict ::1
# 5. 漂移文件(记录时钟频率偏差)
driftfile /var/lib/ntp/ntp.drift
# 6. 日志配置
logfile /var/log/ntp.log
| 配置行 | 含义 |
|---|---|
restrict -4 default ... |
IPv4默认策略:对所有IPv4地址的默认限制 |
restrict -6 default ... |
IPv6默认策略:对所有IPv6地址的默认限制 |
restrict 127.0.0.1 |
本机IPv4:允许本机完全访问 |
restrict ::1 |
本机IPv6:允许本机完全访问 |
参数详解(flags)
| 参数 | 全称 | 含义 |
|---|---|---|
kod |
Kiss-o'-death | 向违规客户端发送"死亡之吻"包,使其停止查询 |
notrap |
No Trap | 拒绝trap远程事件日志功能(ntpdc工具用) |
nomodify |
No Modify | 禁止修改服务器配置(安全关键!) |
nopeer |
No Peer | 拒绝与客户端建立对等关系 |
noquery |
No Query | 禁止查询状态信息(如ntpq -p) |
limited |
Rate Limited | 启用速率限制,防止DoS攻击 |
通俗理解
🔒 默认策略(对外来IP):
"你可以同步时间,但不能做其他事情!"
✅ 本机策略(127.0.0.1/::1):
"本机拥有完全权限,不受限制"
实际效果对比
| 操作 | 默认策略 | 本机策略 |
|---|---|---|
| 同步时间 | ✅ 允许 | ✅ 允许 |
| 查询状态(ntpq -p) | ❌ 拒绝 | ✅ 允许 |
| 修改配置 | ❌ 拒绝 | ✅ 允许 |
| 建立对等关系 | ❌ 拒绝 | ✅ 允许 |
为什么需要这些配置?
# ❌ 危险:不设置restrict
# 任何人都能修改你的NTP服务器配置!
# ✅ 安全:默认拒绝,按需开放
restrict default kod notrap nomodify nopeer noquery limited # 外人只能同步时间
restrict 192.168.10.0 mask 255.255.255.0 nomodify notrap # 内网可以同步
restrict 127.0.0.1 # 本机完全控制
常见变体配置
# 1. 只提供时间同步,拒绝一切查询(最安全)
restrict default kod notrap nomodify nopeer noquery limited
# 2. 允许特定网段查询状态(监控需要)
restrict 192.168.10.0 mask 255.255.255.0 nomodify notrap nopeer
# 3. 完全信任特定服务器(对等模式)
restrict 10.0.0.5 nomodify notrap
验证配置效果
# 本机可以查询(成功)
ntpq -p
# 远程机器查询被拒绝(安全生效)
# 在另一台机器上执行:
ntpdate -q 你的服务器IP # 可以同步
ntpq -p 你的服务器IP # 被拒绝!
3. 关键配置要点详解
| 配置项 | 作用 | 建议 |
|---|---|---|
iburst |
启动时快速同步 | 必须添加,加快初始同步 |
restrict |
访问控制 | 限制网段,防止滥用 |
stratum |
时间源层级 | 本地时钟设为10(最低优先级) |
driftfile |
频率漂移记录 | 必须配置,提高长期精度 |
4. 防火墙配置
# 开放NTP端口(UDP 123)
sudo ufw allow 123/udp
sudo ufw reload
# 或使用iptables
sudo iptables -A INPUT -p udp --dport 123 -j ACCEPT
sudo iptables-save
5. 服务管理与验证
# 重启NTP服务
sudo systemctl restart ntp
# 查看同步状态
ntpq -p
# 查看详细时间信息
timedatectl status
# 强制立即同步(调试时用)
sudo ntpdate -u ntp.aliyun.com
6. 客户端配置示例
在客户端 /etc/ntp.conf 中指向您的服务器:
server 192.168.10.2 iburst prefer # 您的NTP服务器IP
7. 推荐:使用Chrony(更现代)
# 安装chrony
sudo apt install chrony
# 配置 /etc/chrony/chrony.conf
server ntp.aliyun.com iburst
allow 192.168.10.0/24 # 允许同步的网段
local stratum 10 # 本地时钟层级
makestep 1.0 3 # 快速同步设置
8. 验证同步成功
# 查看时间源状态
chronyc sources -v # chrony
ntpq -p # ntp
# 查看系统时间同步状态
timedatectl status | grep "NTP synchronized"
关键提醒
- 必须配置restrict 允许内网访问,否则客户端无法同步
- 建议至少配置3-4个上游服务器,提高可靠性
- 国内环境优先使用阿里云/腾讯云NTP,延迟更低
- 硬件时钟偏差大的服务器建议启用
makestep快速同步
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
微信
支付宝