北京时间授时
本服务直接返回 北京时间(UTC+8),不是 UTC。 适用场景:只认「本地时间」的设备、脚本、嵌入式终端。
仅用于展示;精确对时请使用 NTP 客户端。
授时服务状态
服务端为独立 NTP 应答进程,时间取自本机已校准时钟,再固定加 8 小时输出。
| UTC 时间 | — |
|---|---|
| 返回给客户端的时间 | — |
| 偏移 | +08:00(固定) |
| 参考标识 | BJT |
客户端配置
注意端口是 1123,不是默认的 123。
- 编辑
/etc/chrony/chrony.conf,加入一行(端口必须写明):
server time.worldunity.cn port 1123 iburst prefer
重启后验证:sudo systemctl restart chrony && chronyc sources -v
注意:chrony 会显示「系统时间快/慢 8 小时」,这是本服务返回本地时间的正常现象。若你的设备本身按 UTC 显示,会看到时间多 8 小时。
- LuCI → 系统 → 系统 → 时间同步,或在
/etc/config/system中设置:
config timeserver 'ntp'
list server 'time.worldunity.cn'
option port '1123'
部分固件不支持自定义端口,可用脚本方式(见「脚本 / 嵌入式」)。
用 Python 直接发一个 NTP 请求,取回北京时间:
import socket, struct, time
pkt = b'\x1b' + 47 * b'\0'
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.settimeout(3)
s.sendto(pkt, ('time.worldunity.cn', 1123))
data, _ = s.recvfrom(1024)
sec = struct.unpack('!I', data[40:44])[0] - 2208988800
print(time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime(sec)), '(UTC+8)')
返回值直接就是北京时间,不要再加 8 小时。
Windows 的 w32tm 不支持自定义端口,只能连接 123/UDP。因此本服务(1123)无法直接配置给 Windows 使用。
Windows 推荐使用标准 UTC 授时(123 端口)+ 系统时区设为「(UTC+08:00) 北京」,效果完全一致:
time.chinesedream.online
为什么不是 123 端口
同一个 IP,只能有一个 123
time.chinesedream.online 与 time.worldunity.cn 解析到同一台服务器(同一公网 IP)。
而 NTP 请求报文里 不携带域名,服务器无法区分你访问的是哪个域名。因此同一个 IP 的 UDP 123 只能提供一种时间值。
所以这样分工
- 123/UDP → 标准 UTC+0 授时(time.chinesedream.online)
- 1123/UDP → 北京时间 UTC+8 授时(本站)
若必须让 UTC+8 也走标准 123 端口,需要给服务器再绑定一个公网 IP,两个 IP 各用 123。
时间精度
本机时钟由 chrony 与多家公共时间源同步,长期偏差在毫秒级;本站输出即在此基础上平移 8 小时,精度不受影响。
使用规范
- 轮询间隔建议 ≥ 64 秒。
- 服务端有限速,异常高频请求会被丢弃。
- 公益服务,不承诺 SLA,不提供商业支持。
技术参数
| 协议 | NTPv4 (RFC 5905) |
|---|---|
| 端口 | UDP 1123 |
| 时标 | UTC+8 |
| Stratum | 2 |
| 参考标识 | BJT |