CentOS下NTP安装配置

本文详细介绍了Linux环境下使用NTP进行服务器时间同步的过程,包括配置文件的使用、时间同步方法(如ntpdate与ntpd服务)、以及解决NTP服务器与上层服务器时间同步问题的技巧。同时,文章还涵盖了Linux系统时间与BIOS时间的差异调整方法。

原文地址:http://blog.sina.com.cn/s/blog_5369bee10100aysx.html

 

 

安装
yum install ntp

配置文件 /etc/ntp.conf
restrict default kod nomodify
notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict -6 ::1
# 用restrict控管权限
# nomodify - 用户端不能更改ntp服务器的时间参数
# noquery - 用户端不能使用ntpq,ntpc等命令来查询ntp服务器
# notrap - 不提供trap远端登陆
restrict 192.168.0.0 mask 255.255.0.0 nomodify notrap
# 以下是两个ntp服务器
restrict cn.pool.ntp.org
restrict 164.67.62.194

# 用server设定上层ntp服务器,“prefer”表示优先
server cn.pool.ntp.org prefer
server 164.67.62.194

server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
# 系统时间与bios事件的偏差记录
driftfile /var/lib/ntp/drift
keys /etc/ntp/keys
# 日志
logfile /var/log/ntp.log
broadcastdelay 0.008

一个说明:
我在vmware下搭建的ntp服务器,别人可以同步它,它自己的时间却不对。照理是它同步上层,下层同步它呀。后来找了蛮久的资料,发现这个文件:/etc/ntp/step-tickers,说是ntp服务器无法主动同步上层服务器,所以将地址写入该文件中即可。

我在物理机里暂时没发现这个问题,也许是物理机本来自己的时间就正确,就难以发现它有没有主动同步上层服务器。

运行ntp
service ntpd start/stop/restart
chkconfig ntpd on

查看ntp的端口,应该看到123端口
netstat -unlnp

查看ntp服务器有无和上层连通
[root@S5 ~]# ntpstat
synchronised to NTP server () at stratum 2
time correct to within 74 ms
polling server every 128 s
注意:此命令出现上述synchronised结果比较慢,我的用了大概5分钟。

查看ntp服务器与上层间的联系
[root@S5 ~]# ntptrace -n 127.0.0.1
127.0.0.1: stratum 2, offset 0.064524, synch distance 0.121167
210.72.145.44: timed out, nothing received***Request timed out

 

查看ntp服务器与上层ntp服务器的状态
[root@S5 ~]# ntpq -p
其中,
remote - 本机和上层ntp的ip或主机名,“+”表示优先,“*”表示次优先
refid - 参考上一层ntp主机地址
st - stratum阶层
when - 多少秒前曾经同步过时间
poll - 下次更新在多少秒后
reach - 已经向上层ntp服务器要求更新的次数
delay - 网络延迟
offset - 时间补偿
jitter - 系统时间与bios时间差

 

客户端同步时间的方法
方法一:使用 ntpdate
ntpdate [IP_Address]
看下面的例子,其中192.168.1.5是我在内网搭建的ntp服务器
[root@zy180 ~]# date
Thu Sep 25 13:04:17 CST 2008
[root@zy180 ~]# ntpdate 192.168.1.5
25 Sep 14:33:13 ntpdate[10302]: step time server 192.168.1.5 offset 5327.700798 sec
[root@zy180 ~]# date
Thu Sep 25 14:33:18 CST 2008

ntpdate 的特点:
1,ntpdate只运行一次就结束,即只同步一次。所以要使用ntpdate同步时间的话要将该命令写入cron中。
vi /etc/crontab
* * * * * root ntpdate 192.168.1.5 && hwclock -w
之所以使用hwclock -w命令稍后再说。
2,ntpdate同步时间是跳跃的,如上面的显示,时间立即就同步了,这将可能导致文件时间标记、监控数据的紊乱。

方法二:使用ntpd服务
step1:/etc/ntpd.conf 写入 server [IP_Address]
step2:chkconfig ntpd on
step3:service ntpd start

大概过一刻钟开始起作用。

FAQ:系统报错 - Sep 25 11:59:39 localhost kernel: set_rtc_mmss: can't update from 7 to 59
==================================网上查得源码==========================================
if (abs(real_minutes - cmos_minutes) < 30) { update_cmos() } else { printk("set_rtc_mmss: can't update from %d to %d/n", cmos_minutes, real_minutes); } ========================================================================================
bios时间与系统时间差异超过30分钟,就会报上述错误,只要修改bios时间或系统时间即可。

虚拟机下个人体验:
我的vm客户端用ntpd同步服务器后,慢慢变成标准时间,可接着又比标准时间越来越慢,然后出现上述报错。所以我觉得ntpd的同步频率比我的vm时钟频率跑得慢。

 

 

ntpd 的特点:
1,ntpd服务始终运行,定期同步时间。
2,ntpd服务是慢慢改变时间直至标准时间。
3,如果系统时间与bios时间差异超过30分钟,ntpd就会报错。

总结:
1,推荐使用 ntpd 服务。
2,ntpd开启后,无法使用ntpdate,看如下例子:
[root@zy180 ~]# service ntpd start
Starting ntpd: [ OK ]
[root@zy180 ~]# ntpdate 192.168.1.5
25 Sep 15:25:22 ntpdate[12334]: the NTP socket is in use, exiting

附:linux的时间、时区
1,时间
系统时间:date 命令
bios时间:hwclock命令 (-r 读取bios时间,-w 写入bios时间)
每次开机时系统重新读bios时间。
所以前面ntpdate命令时的cron脚本需要用到hwclock,以避免机器重启后时间混乱。

2,时区
linux的所有时区文件都放在 /usr/share/zoneinfo 下。
linux系统的时区文件是 /etc/localtime,这是个时间格式的档案,不是ACSII码。它与/usr/share/zoneinfo/下的自己的时区文件是一样的。
我的时区是Asia-Shanghai,用diff比较两个文件,如下:
[root@zy180 ~]# diff /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
[root@zy180 ~]#
在 /etc/sysconfig/clock 文件中也写有本时区的信息:
[root@zy180 ~]# cat /etc/sysconfig/clock
ZONE="Asia/Shanghai"
UTC=false
ARC=false

by zycarmen@sina.com     

 

CentOS系统下配置NTP服务器,可按以下步骤进行: ### 准备 此步骤需做好配置前的相关准备工作,确保系统环境适合NTP服务器安装配置,但具体准备内容未在给定引用中详细提及。 ### ntp安装 需在系统中安装NTP服务,但具体安装命令未在引用里给出,一般可使用`yum install ntp -y`(CentOS 7)来安装。 ### ntp.conf配置 #### 服务端配置 在`ntp.conf`文件中进行服务端的相关配置,例如可添加允许客户端访问的网段,如`allow 192.168.1.0/24`,以控制哪些客户端可以访问该NTP服务器[^3]。 #### 客户端配置 客户端配置也是在`ntp.conf`文件中进行,不过具体配置内容未在引用中明确说明。通常客户端需要指定NTP服务器的地址。 ### 防火墙放行NTP端口 使用以下命令放行NTP端口并重新加载防火墙规则: ```bash sudo firewall-cmd --permanent --add-service=ntp sudo firewall-cmd --reload ``` 这样可以确保NTP服务的网络通信正常[^3]。 ### 启动并启用服务 使用以下命令启动并启用`chronyd`服务: ```bash sudo systemctl enable chronyd sudo systemctl start chronyd ``` ### 验证服务状态 可使用以下命令验证服务状态: ```bash sudo systemctl status chronyd # 检查服务状态 chronyc sources -v # 查看同步状态 ``` 此外,还可以使用`ntpq -p`、`timedatectl`、`ntpstat`等命令来查看NTP服务状态[^1][^3]。 ### ntp.conf参数详解 #### restrict 用于限制NTP服务器的访问权限,控制哪些IP地址或网段可以与该NTP服务器进行通信。 #### server 指定NTP服务器要同步的上层时间服务器地址。 #### fudge 用于对时间服务器的时间进行微调。 ### 可能遇到的错误及解决方案 #### NTP enabled: no 此错误表示NTP服务未启用,需检查服务是否正确启动和配置。 #### NTP synchronized: no 该错误表示NTP未同步,解决方案如下: - 解决方案一:检查NTP服务器配置和网络连接,确保NTP服务器可以正常访问上层时间服务器。 - 解决方案二:检查系统时间与NTP服务器时间的差值是否超过1000秒,因为NTP服务在时间差超过约1000秒时可能无法正常运行。可先使用`ntpdate`命令将系统时间与NTP服务器时间进行初步同步,确保时间差在允许范围内,再启动NTP服务。`ntpdate`使用`step - tickers`文件中的服务器地址进行时间同步,而`ntp.conf`是`ntpd`守护进程的配置文件,在启动`ntpd`之前,先运行`ntpdate`可确保时间误差在1000秒以内[^2]。 #### unsynchronised 此错误表明时间未同步,需检查上述提到的配置和网络等方面的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值