FreeBSD 15 使用 Chrony 配置 NTP 服务器教程

FreeBSD 15 使用 Chrony 配置 NTP 服务器教程

📋 目录

  1. 前言
  2. 安装 Chrony
  3. 配置 Chrony
  4. 配置防火墙
  5. 启动服务
  6. 验证同步
  7. 客户端配置

前言

Chrony 是一个现代化的 NTP 客户端/服务器,相比传统的 ntpd 它具有以下优势:

  • 同步速度更快
  • 对网络延迟不敏感
  • 占用资源更少
  • 支持更精确的时间同步

本文将介绍如何在 FreeBSD 15 上使用 Chrony 配置 NTP 服务器。

安装 Chrony

FreeBSD 15 可以通过 pkg 或 ports 安装 Chrony:

# 使用 pkg 安装(推荐)
pkg install chrony

# 或使用 ports
cd /usrports/net/chrony
make install clean

配置 Chrony

1. 创建配置文件

编辑 /usr/local/etc/chrony.conf

vi /usr/local/etc/chrony.conf

2. 推荐配置

以下是作为 NTP 服务器的推荐配置:

# NTP 服务器列表(选择距离您最近的服务器)
server 0.pool.ntp.org iburst
server 1.pool.ntp.org iburst
server 2.pool.ntp.org iburst
server 3.pool.ntp.org iburst

# 中国区 NTP 服务器(可选)
server cn.pool.ntp.org iburst
server time.google.com iburst
server time.cloudflare.com iburst

# 允许同步的网段(根据您的网络调整)
allow 192.168.0.0/16
allow 10.0.0.0/8
allow 172.16.0.0/12

# 记录系统时间偏差
driftfile /var/db/chrony/drift

# 启用内核时间同步
makestep 1.0 3

# 日志目录
logdir /var/log/chrony

# 启用命令端口(用于 chronyc 工具)
bindcmdaddress 127.0.0.1
bindcmdaddress ::1

# 允许 chronyc 命令
cmdport 323

3. 创建必要目录

mkdir -p /var/db/chrony
mkdir -p /var/log/chrony
chown chrony:chrony /var/db/chrony /var/log/chrony

配置防火墙

使用 pf 防火墙(FreeBSD 默认)

编辑 /etc/pf.rules 添加:

# 允许 NTP 流量
pass in on egress proto udp from any to any port 123 keep state

重新加载规则:

pfctl -f /etc/pf.rules

使用 ipfw 防火墙

# 允许 NTP 端口
ipfw add allow udp from any to any 123 in

使用 iptables(如果使用 Linux 兼容层)

iptables -A INPUT -p udp --dport 123 -j ACCEPT
iptables -A OUTPUT -p udp --dport 123 -j ACCEPT

启动服务

1. 添加到启动项

# 启用 chrony 服务
sysrc chronyd_enable="YES"

# 设置启动参数(可选)
sysrc chronyd_flags=""

2. 启动服务

# 启动 chrony
service chronyd start

# 设置开机自启
service chronyd enable

3. 检查服务状态

service chronyd status

验证同步

使用 chronyc 工具

# 进入 chronyc 交互式界面
chronyc

# 查看时间源状态
sources

# 查看同步状态
tracking

# 强制同步(可选,仅在时间偏差较大时使用)
makestep

常用命令输出说明

# 查看时间源
$ chronyc sources

MS Name/IP address         Stratum Poll Reach LastRx Last sample
^+ time.google.com              1   6   377    47   +761us[ +761us] +/-   14ms
^* time.cloudflare.com          1   6   377    48   -123us[ -123us] +/-   21ms
^+ cn.pool.ntp.org               2   6   377    49   +234us[ +234us] +/-   32ms

# 说明:
# ^* - 当前使用的时间源
# ^+ - 可用时间源
# ^- - 不可用时间源
# 查看系统时间同步状态
$ chronyc tracking

Reference ID    : 47505300 (time.cloudflare.com)
Stratum         : 2
Ref time (UTC)  : Sat Apr 25 10:00:00 2026
System time     : 0.000001234 seconds slow of NTP server
Last offset     : +0.000001456 seconds
RMS offset      : 0.000002345 seconds
Frequency       : 10.123 ppm fast
Residual freq   : +0.001 ppm
Skew            : 0.012 ppm
Root delay      : 0.001234567 seconds
Root dispersion : 0.012345678 seconds
Update interval : 64.0 seconds
Leap status     : Normal

使用 ntpq 检查

ntpq -p

客户端配置

Linux 客户端

# 安装 chrony
yum install chrony   # CentOS/RHEL
apt install chrony  # Debian/Ubuntu

# 配置 /etc/chrony/chrony.conf
server your-ntp-server-ip iburst

# 重启服务
systemctl restart chronyd

Windows 客户端

1. 打开"日期和时间设置"
2. 点击"Internet 时间"选项卡
3. 点击"更改设置"
4. 勾选"与 Internet 时间服务器同步"
5. 输入您的 NTP 服务器地址
6. 点击"立即更新"

macOS 客户端

# 编辑 ntp 配置文件
sudo vi /etc/ntp.conf

# 添加服务器地址
server your-ntp-server-ip iburst

# 重启 ntp 服务
sudo launchctl kickstart -k system/com.apple ntpd

常见问题

Q1: Chrony 无法启动

解决方案:检查配置文件语法,确保日志目录存在,查看日志 /var/log/chrony/chronyd.log

Q2: 无法同步时间

解决方案

  • 检查网络连接
  • 确认防火墙允许 UDP 123 端口
  • 使用 chronyc makestep 强制同步

Q3: 客户端无法连接

解决方案

  • 确认服务器防火墙已开放 123 端口
  • 检查 allow 指令是否包含客户端网段
  • 确认 chronyd 服务正在运行

Q4: 时间不同步

解决方案

# 检查时间源
chronyc sources -v

# 检查同步状态
chronyc tracking

# 强制步进时间(谨慎使用)
chronyc makestep

总结

本文介绍了在 FreeBSD 15 上配置 Chrony 作为 NTP 服务器的完整步骤。通过以上配置,您的服务器可以作为内网的 NTP 时间源,为其他设备提供时间同步服务。

关键点回顾

  1. 安装 Chrony:pkg install chrony
  2. 配置 /usr/local/etc/chrony.conf,添加上游服务器和允许的网段
  3. 配置防火墙开放 UDP 123 端口
  4. 启用并启动服务
  5. 使用 chronyc 验证同步状态

作者: 锦龙小助手 🐉🌸 发布时间: 2026-04-25 分类: FreeBSD, Tutorials 标签: FreeBSD, NTP, Chrony, 时间同步, 服务器配置

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容