当前位置: 首页 > news >正文

Linux搭建本地时间服务器及时间同步

搭建一个本地时间服务器,使得局域网内主机时间保持一致。

设置正确时间

# 设置系统时间
date -s "2025-03-25 17:31:00"
# 将系统时间写入硬件时钟
hwclock --systohc

时间服务器设置

系统应该预先安装chronyd

要允许 所有客户端 通过你的 chronyd 服务器进行时间同步,只需在 /etc/chrony.conf 中配置 allow 指令,并设置合适的防火墙规则。以下是具体步骤:


1. 修改 chronyd 配置(允许所有客户端)

编辑 /etc/chrony.conf(Debian/Ubuntu)或 /etc/chrony/chrony.conf(CentOS/RHEL):

vi /etc/chrony.conf

在配置文件中添加或修改以下行:

# 允许所有客户端访问(0.0.0.0/0 或省略掩码)
allow 0.0.0.0/0

# 如果仅允许 IPv6 客户端
allow ::/0

# 如果同时允许 IPv4 和 IPv6
allow all
  • chrony.conf
# 注释或删除所有现有的 server 行(不连接外部 NTP 服务器)
# server ntp.aliyun.com iburst

# 启用本地时钟作为时间源(stratum 10)
local stratum 10

# 允许哪些客户端同步(例如允许 192.168.1.0/24 网段)
allow 192.168.1.0/24

# 可选:记录时间调整日志
logdir /var/log/chrony

2. 重启 chronyd 服务

sudo systemctl restart chronyd

3. 配置防火墙(开放 NTP 端口)

NTP 使用 UDP 123 端口,需确保防火墙允许该端口的入站流量。

(1)UFW(Debian/Ubuntu)

sudo ufw allow 123/udp
sudo ufw reload

(2)firewalld(CentOS/RHEL)

sudo firewall-cmd --add-service=ntp --permanent
sudo firewall-cmd --reload

(3)iptables(传统方式)

sudo iptables -A INPUT -p udp --dport 123 -j ACCEPT
# 持久化规则(根据系统选择以下一种)
sudo iptables-save | sudo tee /etc/iptables/rules.v4  # Debian/Ubuntu
sudo service iptables save                           # CentOS 6

4. 验证配置

(1)检查 chronyd 是否允许所有客户端

chronyc accheck

如果输出包含 0.0.0.0/0::/0,则表示配置成功。

(2)从客户端测试同步

在另一台机器上配置 chronyd 指向你的服务器:

# 编辑客户端的 /etc/chrony.conf
server <your-ntp-server-ip> iburst

# 重启 chronyd
sudo systemctl restart chronyd

# 检查同步状态
chronyc sources -v

输出中应显示你的服务器地址(^* 表示已同步)。

使用ansible批量同步时间,运行ansible-playbook time-sync.yaml

  • time-sync.yaml
---
- name: Update chrony configuration and restart service
  hosts: all
  become: true
  tasks:
    - name: Comment out original server lines
      lineinfile:
        path: /etc/chrony.conf
        # 将需要注释的外网时间服务器加入
        regexp: '^(server ntp1.aliyun.com iburst|server cn.pool.ntp.org iburst |server ntp.ntsc.ac.cn iburst)'
        line: '#\g<0>'
        backrefs: yes
    - name: Check if new server line exists
      lineinfile:
        path: /etc/chrony.conf
        line: 'server 192.168.0.10 iburst'
        state: present
        create: false
      check_mode: true
      register: line_check

    - name: Add new server line if not exists
      lineinfile:
        path: /etc/chrony.conf
        line: 'server 192.168.0.10 iburst'
        insertafter: EOF
      when: line_check.changed

    - name: Restart chronyd service
      systemd:
        name: chronyd
        state: restarted
        enabled: yes    

5. 高级选项(可选)

(1)限制客户端权限

如果希望允许所有客户端同步但禁止修改配置:

allow all
deny all cmd
  • allow all:允许同步时间。
  • deny all cmd:禁止所有管理命令(如 chronyc 的修改操作)。

(2)日志记录

查看客户端访问记录:

sudo grep chronyd /var/log/syslog       # Debian/Ubuntu
sudo journalctl -u chronyd              # CentOS/RHEL

相关文章:

  • mysql中show命令的使用
  • react-activation 实现页面保活记录
  • 前端模拟 websocket 请求小工具
  • mac vim命令快捷键
  • LeetCode热题100精讲——Top7:接雨水【双指针】
  • 树莓派5-GPIO和40针引脚
  • redis使用
  • 手动创建kkFileView4.4.0镜像
  • C#基础学习(二)C#数组生存手册:从入门到“血压拉满“的奇妙旅程
  • Socket如何实现客户端和服务器间的通信
  • 23种设计模式中的责任链模式
  • 7.1-7.2考研408数据结构查找算法核心知识点深度解析
  • PyTorch 深度学习实战(21):元强化学习与 MAML 算法
  • 从零构建大语言模型全栈开发指南:第一部分:数学与理论基础-1.1.3模型参数与超参数:权重、偏置、学习率与正则化策略
  • git-lfs: command not found
  • reactor网络模型
  • JAVA:Spring Boot @Conditional 注解详解及实践
  • redis+spring 的基本操作 RedisTemplate和RedisClient
  • phpcms版AI自动发文插件,自动创作,自动配图,自动发布,支持多种大模型
  • 网络编程和计算机网络五层模型的关系
  • 网站开发项目实战/品牌广告语经典100条
  • 什么是网站seo/百度指数首页
  • 乐清做网站建设公司/域名网站查询
  • 电子商务网站建设的概要设计/合肥网络推广软件系统
  • 如何建设网站子页/昆明百度推广开户费用
  • 分析海尔网站的建设特点和优势/seogw