如何让ntpd仅以本地时间为基准?Linux设备同步指定服务器伪时间
没问题,这两个场景都是运维里常见的需求,我给你梳理清楚具体的配置步骤:
问题1:配置ntpd仅以本地时间作为唯一参考基准
要让ntpd完全依赖本地时间,得用到它内置的本地伪时钟驱动,具体操作如下:
- 打开ntpd的主配置文件,一般是
/etc/ntp.conf,用vim或者nano编辑都行:sudo vim /etc/ntp.conf - 先把文件里所有默认的
server或pool行注释掉(比如那些指向pool.ntp.org的公共NTP源),这些行留着会干扰本地基准的优先级。 - 添加本地时钟的配置内容:
这里解释下:server 127.127.1.0 fudge 127.127.1.0 stratum 10127.127.1.0是ntpd内置的本地时钟标识,fudge指令用来设置这个时钟的层级(stratum)——设为10是合理的,因为公共NTP服务器的层级通常更低(1-2),这样能明确标识这是本地伪时钟,避免和外部源混淆(当然咱已经注释了其他源,主要是规范配置)。 - 保存配置后,重启ntpd服务让配置生效:
# 用systemd的系统(比如CentOS7+、Ubuntu16.04+) sudo systemctl restart ntpd # 用sysvinit的老系统 sudo service ntpd restart - 验证是否配置成功:运行
ntpq -p,你会看到只有127.127.1.0这一个时间源,状态正常就说明没问题了。
问题2:客户端持续同步指定Linux服务器的伪时间
首先得确保那台IP为1.2.3.4的服务器已经完成了问题1的配置——也就是它的ntpd只依赖本地伪时钟,不会同步其他外部源,这样它的时间才会保持你设置的2033-02-23 15:23:10。
接下来配置客户端:
- 同样编辑客户端的
/etc/ntp.conf文件,注释掉所有默认的server/pool行,只添加指向目标服务器的配置:
这里的server 1.2.3.4 preferprefer参数很重要,它告诉ntpd优先使用这个源,确保客户端只会同步这台服务器的时间,不会去尝试其他源。 - (可选)如果目标服务器的ntpd设置了访问限制,需要在服务器的
/etc/ntp.conf里添加一条规则,允许客户端访问:
这条规则允许该网段的客户端查询和同步时间,但禁止修改服务器的NTP配置,安全性更高。# 假设客户端在1.2.3.0/24网段,根据实际情况调整 restrict 1.2.3.0/24 nomodify notrap nopeer - 保存客户端的配置后,重启ntpd服务:
sudo systemctl restart ntpd - 验证同步状态:运行
ntpq -p,当看到1.2.3.4前面出现*标记时,说明已经在持续同步这台服务器的时间了。
补充一句:你之前用ntpdate 1.2.3.4是临时强制同步时间,而ntpd会持续监控时间差,逐步调整系统时间(避免时间跳变导致的服务异常,比如数据库事务问题),所以配置好ntpd后就不需要再定期跑ntpdate了。
内容的提问来源于stack exchange,提问作者Victor
相关产品推荐
相关产品推荐

