Linux 局域网中使用NTP配置时间服务

一:NTP 时间服务器配置

前提:

局域网环境中一般不能直接使用互联网上提供的时间服务器,例如ntp.aliyun.com。所以可以使用局域网中的一个服务器时间为基准,其他服务器的时间都和他保持一致。

1、将服务器的系统时间配置为时间源,后续其他服务器都以本服务器时间为准

bash 复制代码
# 在 NTP 协议 中,IP 地址 127.127.1.0 是特殊的地址,它表示本地时钟 (Local Clock)。
server 127.127.1.0

fudge 127.127.1.0 stratum 10

2、设置时间同步规则(可以同时设置多条规则)

bash 复制代码
# 设置来自IPv4地址和IPv6地址的默认访问规则
restrict -4 default kod notrap nomodify nopeer
restrict -6 default kod notrap nomodify nopeer

# 来自本地的请求,没加任何限制,可以查看和修改
restrict 127.0.0.1
restrict ::1

# 设置来自 192.168.0.0网段请求的访问规则
restrict 192.168.0.0 mask 255.255.252.0 notrap nomodify

如果有一个请求来自IPv4地址,如果属于192.168.0.0网段,就会匹配到 restrict 192.168.0.0 mask 255.255.255.0 notrap nomodify noquery 这条规则;

如果这个IPv4地址不属于这个网段,就会匹配到 restrict -4 default kod notrap nomodify nopeer noquery 这条规则。

参数说明:

  • 这里的 -4-6分别表示适用于 IPv4地址和IPv6地址

  • default 用于设置默认的访问控制规则,如果一个请求没有被其它规则匹配,就会使用这个默认的规则

  • kod表示如果NTP客户端发送的请求过于频繁,则发送"拒绝服务

  • notrap用于禁止trap设置。这可以防止某些NTP控制消息操作

  • nomodify用于不允许从这个地址修改NTP服务器

  • nopeer表示从该地址的机器不允许创建持久对等关系。

  • noquery表示不允许来自该地址的机器查询ntp服务器的状态(设置了noquery选项后,来自该地址或地址范围的NTP客户端使用ntpq -p命令将无法查询NTP服务器的状态)

  • limited参数用于对于频繁的请求进行速率限制(不会影响正常同步时间的客户端,只有那些异常频繁地查询服务器的客户端会受到影响)


3、重启NTP服务

bash 复制代码
sudo systemctl restart ntp.service

4、检查配置是否生效

bash 复制代码
# NTP协议使用的是UDP的123端口,可以先检查端口是否处于正常监听的状态:
ss -nul | grep 123

# 检查时间服务器是否生效
ntpq -np

二:NTP 客户端配置

1、编辑配置文件指定时间服务器地址(可以指定多个)

bash 复制代码
pool ntp.aliyun.com iburst  prefer
pool ntp.org.cn  iburst
server 10.0.4.215 iburst
  • server:用于指定一个具体的 NTP 服务器。例如:server 192.168.0.102

  • pool:用于指定一组时间服务器,而不是单一的服务器。pool 指令依赖于 DNS 解析,将解析为多个 IP 地址,NTP 客户端将从这些服务器中选择最佳的服务器进行时间同步。例如:ntp ntp.aliyun.com

  • iburst:默认情况下 ntp客户端和ntp服务器64秒同步一次时间。例如当前同步一次,不管成功与否,需要再等64s才会进行下一次同步。通过iburst,在重启ntp客户端或者同步失败时,不用等待默认的64秒轮询间隔,而是以更短的间隔(大约每2秒)连续尝试同步几次(通常四到六次)

  • 如果指定了多个时间服务器,通过prefer关键字来指定优先使用哪一个


2、重启服务生效

bash 复制代码
sudo systemctl restart ntp.service

3、检查是否同步成功,可能要多等几分钟

bash 复制代码
ntpq -np

可以根据输出信息来确定时间同步是否成功,一般需要关注以下内容。

  • remote: NTP时间服务器的名称或IP地址。(星号标记的服务器是当前被选中用于时间同步的主服务器)

  • st:一共分为16层,数字越小,表示越接近高精确度的时间源

  • offset: 表示本地时间与服务器时间的差异(毫秒)。

  • reach:以八进制显示最近八次的时间同步状态。例如:3(0b00000011)表示八次中,成功了两次。

  • poll:表示隔多久,当前主机和NTP服务器会同步一次时间

所以可以判断是否有一个星号标记的服务器,且该服务器的 reach 值不为 0,同时 offset 和 jitter 值相对较小,那么可以认为时间同步是成功的。

相关推荐
Komorebi.py33 分钟前
【Linux】-学习笔记05
linux·笔记·学习
Mr_Xuhhh38 分钟前
重生之我在学环境变量
linux·运维·服务器·前端·chrome·算法
中云DDoS CC防护蔡蔡2 小时前
微信小程序被攻击怎么选择高防产品
服务器·网络安全·微信小程序·小程序·ddos
HPC_fac130520678163 小时前
以科学计算为切入点:剖析英伟达服务器过热难题
服务器·人工智能·深度学习·机器学习·计算机视觉·数据挖掘·gpu算力
yaoxin5211234 小时前
第二十七章 TCP 客户端 服务器通信 - 连接管理
服务器·网络·tcp/ip
内核程序员kevin4 小时前
TCP Listen 队列详解与优化指南
linux·网络·tcp/ip
sinat_384241098 小时前
使用 npm 安装 Electron 作为开发依赖
服务器
朝九晚五ฺ8 小时前
【Linux探索学习】第十四弹——进程优先级:深入理解操作系统中的进程优先级
linux·运维·学习
自由的dream8 小时前
Linux的桌面
linux
xiaozhiwise9 小时前
Makefile 之 自动化变量
linux