Tag Archive: ntp

七月 17th, 2018

查看时区列表: timedatectl list-timezones|grep Asia

设置中国时区: timedatectl set-timezone Asia/Shanghai 执行完后时间就变为北京时间了

查看当前时间: date

查看当前设置:

[root@localhost ~]# timedatectl

Local time: Mon 2017-10-09 16:44:08 CST

Universal time: Mon 2017-10-09 08:44:08 UTC

RTC time: Mon 2017-10-09 08:44:08

Time zone: Asia/Shanghai (CST, +0800)

NTP enabled: yes

NTP synchronized: yes

RTC in local TZ: no

DST active: n/a

如果没有系统没有安装ntp服务器的话可以安装yum install ntp -y

然后编辑ntp的配置文件vi /etc/ntp.conf (日志文件默认在/var/log/messages中),添加以下几个服务器域名,如果原配置文件没有的话

server 0.centos.pool.ntp.org iburst

server 1.centos.pool.ntp.org iburst

server 2.centos.pool.ntp.org iburst

server 3.centos.pool.ntp.org iburst

systemctl restart ntpd

systemctl enable ntpd

这样,服务器端就配置得差不多了,但我为了让效果更明显,把服务器修改为纽约时区,另一台需要同步的linux客户端的时区修改为非洲时间,结果导致,客户端ntpdate之后没有同步,后来才发现,需要在同一时区内才能同步时间,也就是说,服务端和客户端的时区必须在中国这个时区内才可以

下面来测试我们的ntp服务器配置有没有成功

在服务器端(ip:10.0.3.66)上

使用date -s 23:30:30 (时间可以随便改,反正改一个跟客户端时间不一样的就可以了),然后date可以看到时间变成了23:30:30

在客户端上

ntpdate 10.0.3.66 执行后发现,时间也变成了23:30:30

TAGS: ,
十月 29th, 2017

第一方法: 简单 高效 没烦恼 一条命令解决单台server-time

#ntpdate -u ntp.api.bz

第二方法:时间服务器:
1) #yum install ntp
2)# vi /etc/ntp.conf
注释一行
restrict default ignore
加入一行
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap   #服务器的地址
3). # vi /etc/ntp/step-tickers
加入一行(也可以在原有基础上改写)
pool.ntp.org 
这样每次ntpd启动时,会自动连接该国际标准时间服务器;
4). # systemctl restart  ntpd 
5). # ss -an |grep 123
确保该端口以udp方式开放
6)# systemctl enable ntpdate.service (加入开机自启动)
7)# date  (检测时间是否靠谱)
2016年 01月 18日 星期一 00:43:55 CST

这样的话就可以解决多台机器的时间同步问题了。

TAGS: ,
六月 29th, 2017

NTP简介

NTP(Network Time Protocol,网络时间协议)是用来使网络中的各个计算机时间同步的一种协议。它的用途是把计算机的时钟同步到世界协调时UTC,其精度在局域网内可达0.1ms,在互联网上绝大多数的地方其精度可以达到1-50ms。

NTP服务器就是利用NTP协议提供时间同步服务的。

 

NTP服务器安装

系统自带ntp

# yum -y install ntp

 

配置NTP服务

# vim /etc/ntp.conf

#restrict default kod nomodify notrap nopeer noquery

restrict

default nomodify

# nomodify客户端可以同步

# 将默认时间同步源注释改用可用源

#server 0.centos.pool.ntp.org iburst

#server 1.centos.pool.ntp.org iburst

#server 2.centos.pool.ntp.org iburst

#server 3.centos.pool.ntp.org iburst

 

server ntp1.aliyun.com

server time.nist.gov

 

启动NTP服务器

# 如果计划任务有时间同步,先注释,两种用法会冲突。

# crontab -e

# time

sync by oldboy at 2010-2-1

#*/5 *

* * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1

 

# /etc/init.d/ntpd start

Starting

ntpd:[  OK  ]

# ntpq -p

remote           refid      st t when poll reach   delayoffset  jitter

==============================================================================

*ntp1.aliyun.com

10.137.38.86     2 u   2264    1  525.885-42.367   0.000

 

# ntpstat

synchronised

to NTP server (110.75.186.247) at stratum 3

time correct to within 4257 ms

polling server every 64 s

 

# ntpdate 10.0.0.9

7 Dec 18:43:07 ntpdate[26950]: the NTP socket

is in use, exiting

 

客户机时间同步

客户机要等几分钟再与新启动的ntp服务器进行时间同步,否则会提示no server suitable for synchronization found错误。

# ntpdate 10.0.0.9

7 Dec 18:40:16 ntpdate[1453]: step time server

10.0.0.9 offset 40.880807 sec

# 将命令放入计划任务即可。

TAGS: ,
三月 15th, 2017

在Linux系统里设置NTP服务并不难,但是NTP本身确是一个很复杂的协议. 你都了解细节么?

1. 时间和时区

date命令可显示时间与市区

[root@T_PV1_DB ~]# date

Tue Feb  7 16:32:16 CST 2017

[root@T_PV1_DB ~]# cat /etc/sysconfig/clock

ZONE=”Asia/Shanghai”

CST=true

在地球环绕太阳旋转的24个小时中,世界各地日出日落的时间是不一样的.所以我们才有划分时区(timezone) 的必要,也就是把全球划分成24个不同的时区. 所以我们可以把时间的定义理解为一个时间的值加上所在地的时区(注意这个所在地可以精确到城市)

格林威治时间(GMT), 它也就是0时区时间. 但是我们在计算机中经常看到的是UTC. 它是Coordinated Universal Time的简写. 虽然可以认为UTC和GMT的值相等(误差相当之小),但是UTC已经被认定为是国际标准,所以我们都应该遵守标准只使用UTC

那么假如现在中国当地的时间是晚上8点的话,我们可以有下面两种表示方式

20:00 CST

12:00 UTC

这里的CST是Chinese Standard Time,也就是我们通常所说的北京时间了. 因为中国处在UTC+8时区

如果时区设置错了,你看到的日志时间也不正确了。

补充:

CST同时可以代表如下 4 个不同的时区:

Central Standard Time (USA) UT-6:00

Central Standard Time (Australia) UT+9:30

China Standard Time UT+8:00

Cuba Standard Time UT-4:00

可见,CST可以同时表示美国,澳大利亚,中国,古巴四个国家的标准时间。

2、ntp的配置

#cat  /etc/ntp.conf

  • restrict default kod nomodify notrap nopeer noquery
  • restrict -6 default kod nomodify notrap nopeer noquery
  • restrict 11.107.13.100                         //允许该NTP服务器进入
  • restrict 11.80.81.1                            //没有任何何參數的話,這表示『该IP或网段不受任何限制
  • restrict 202.112.1.199
  • restrict 127.0.0.1
  • restrict -6 ::1
  • restrict 192.168.0.0 mask 255.255.0.0 nomodify  //该网段可以进行校时
  • restrict 0.0.0.0 mask 0.0.0.0 notrust           //拒绝没有认证的用户端
  • server time-nw.nist.gov prefer                  //prefer 该服务器优先
  • server 0.rhel.pool.ntp.org  iburst        //设定时间服务器
  • server 1.rhel.pool.ntp.org  iburst
  • server 2.rhel.pool.ntp.org  iburst
  • fudge   127.127.1.0 stratum 6
  • driftfile /var/lib/ntp/drift
  • keys /etc/ntp/keys
  • broadcastdelay 0.008

上边只是简单设置,没有考虑安全方面如认证等等。

权限管理使用 restrict 公式如下:
restrict IP mask [参数] / restrict 192.168.0.0 mask 255.255.0.0 nomodify

其中参数主要有底下这些:

* ignore:拒绝所有类型的NTP的连线;
* nomodfiy:用户端不能使用NTPC与ntpq这两支程式来修改伺服器的时间参数,但使用者端仍可透过这部主机来进行网路校时的;
noquery:用户端不能够使用ntpq,NTPC等指令来查询发表伺服器,等于不提供的NTP的网路校时幂;
notrap:不提供陷阱这个远端事件邮箱(远程事件日志)的功能。
notrust:拒绝没有认证的用户端。

配置文件中的driftfile是什么?
我们每一个system clock的频率都有小小的误差,这个就是为什么机器运行一段时间后会不精确. NTP会自动来监测我们时钟的误差值并予以调整.但问题是这是一个冗长的过程,所以它会把记录下来的误差先写入driftfile.这样即使你重新开机以后之前的计算结果也就不会丢失了。

 

最后,别忘了启动NTP服务器

/etc/init.d/ntp start

[root@localhost ~]# chkconfig ntpd on #在运行级别2、3、4、5上设置为自动运行

[root@localhost ~]# chkconfig –list ntpd

ntpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

 

查看ntp服务器有无和上层ntp连通

 

[root@localhost ~]# ntpstat
synchronised to NTP server (192.168.7.49) at stratum 6
   time correct to within 440 ms
   polling server every 128 s
[root@localhost ~]#

查看ntp服务器与上层ntp的状态

[root@localhost ~]# watch ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 192.168.7.49    192.168.7.50     5 u   13   64    3    5.853  1137178   2.696

3、ntpd的配置

配置/etc/sysconfig/ntpd文件

ntp服务,默认只会同步系统时间。如果想要让ntp同时同步硬件时间,可以设置/etc/sysconfig/ntpd文件,在/etc/sysconfig/ntpd文件中,添加 SYNC_HWCLOCK=yes 这样,就可以让硬件时间与系统时间一起同步。

#允许BIOS与系统时间同步,也可以通过hwclock -w 命令

SYNC_HWCLOCK=yes

# Drop root to id ‘ntp:ntp’ by default.

OPTIONS=”-x -u ntp:ntp -p /var/run/ntpd.pid -g”

有时会在messages日志里看到NTP进程正在做DELETING动作,不过NTP进程并不会真正删除虚拟网络接口,但这个动作会造成网络短暂不通。红帽官方有个对应的解决办法是:

就是在这个文件里增加-L参数。

还有-x和-g参数:

ntpd服务的方式,又有两种策略,一种是平滑、缓慢的渐进式调整(adjusts the clock in small steps所谓的微调);一种是步进式调整(跳跃式调整)。两种策略的区别就在于,微调方式在启动NTP服务时加了个“-x”的参数,而默认的是不加“-x”参数。

 

假如使用了-x选项,那么ntpd只做微调,不跳跃调整时间,但是要注意,-x参数的负作用:当时钟差大的时候,同步时间将花费很长的时间。-x也有一个阈值,就是600s,当系统时钟与标准时间差距大于600s时,ntpd会使用较大步进值的方式来调整时间,将时钟步进调整到正确时间。

 

假如不使用-x选项,那么ntpd在时钟差距小于128ms时,使用微调方式调整时间,当时差大于128ms时,使用跳跃式调整。

 

这两种方式都会在本地时钟与远端的NTP服务器时钟相差大于1000s时,ntpd会停止工作。在启动NTP时加了参数“-g”就可以忽略1000S的问题。

4、时间同步

利用crontab可以让LINUX NTP定时更新时间
注:让linux运行ntpdate更新时间时,linux不能开启NTP服务,否则会提示端口被占用:如下
[root@ESXI ~]# ntpdate 1.rhel.pool.ntp.org
20 May 09:34:14 ntpdate[6747]: the NTP socket is in use, exiting

如果想定时进行时间校准,可以使用crond服务来定时执行。
编辑 /etc/crontab 文件
加入下面一行:

30 8 * * * root /usr/sbin/ntpdate 192.168.0.1; /sbin/hwclock -w    #192.168.0.1是NTP服务器的IP地址
然后重启crond服务
service crond restart
这样,每天 8:30 Linux 系统就会自动的进行网络时间校准。

如果是WINDOWS ,则需要打开windows time服务和RPC的二个服务
如果在打开windows time 服务,时报 错误1058,进行下面操作
1.运行 cmd 进入命令行,然后键入
w32tm /register  进行注册
正确的响应为:W32Time 成功注册。

2.如果上一步正确,用 net start “windows time” 或 net start w32time 启动服务。

 

5、Linux的硬件时间

Linux硬件时间的设置

硬件时间的设置,可以用hwclock或者clock命令。其中,clock和hwclock用法相近,只用一个就 行,只不过clock命令除了支持x86硬件体系外,还支持Alpha硬件体系。

//查看硬件时间 可以是用 hwclock ,hwclock –show 或者 hwclock -r

[root@localhost ~]# hwclock –show
2008年12月12日 星期五 06时52分07秒  -0.376932 seconds

//设置硬件时间

[root@localhost ~]# hwclock –set –date=”1/25/09 00:00″ <== 月/日/年时:分:秒
[root@localhost ~]# hwclock
2009年01月25日 星期日 00时00分06秒  -0.870868 seconds

几个参数和命令:

ntpq -p显示结果中的offset

本地时间+offset=远程时间, 因此如果offset为负数, 则本地时钟比远程快. offset值0-500,接近0是正常的。

运行ntpq -c asso, 如果显示sys.peer则已经处于同步状态了.

使用以下命令检查ntp的版本: # ntpq -c version

错误问题处理

用于收集安装,配置和应用中出现的问题

错误1:ntpdate -u ip -> no server suitable for synchronization found

判断:在ntp客户端用ntpdate –d serverIP查看,发现有“Server dropped: strata too high”的错误,并且显示“stratum 16”。而正常情况下stratum这个值得范围是“0~15”。

原因:NTP server还没有和其自身或者它的server同步上。在ntp server上重新启动ntp服务后,ntp server自身或者与其server的同步的需要一个时间段,这个过程可能是5分钟,在这个时间之内在客户端运行ntpdate命令时会产生no server suitable for synchronization found的错误。

处理:等待几分钟后,重试一般解决。

其它造成无法成功更新的原因:
1、客户端的日期必须要设置正确,不能超出正常时间24小时,不然会因为安全原因被拒绝更新。其次客户端的时区必须要设置好,以确保不会更新成其它时区的时间。
2、fudge 127.127.1.0 stratum 10 如果是LINUX做为NTP服务器,stratum(层级)的值不能太大,如果要向上级NTP更新可以设成2
3、LINUX的NTP服务器必须记得将从上级NTP更新的时间从系统时间写到硬件里去 hwclock –systohc
NTP一般只会同步system clock. 但是如果我们也要同步RTC(hwclock)的话那么只需要把下面的选项打开就可以了
代码:
# vi /etc/sysconfig/ntpd
SYNC_HWCLOCK=yes
4、Linux如果开启了NTP服务,则不能手动运行ntpdate更新时间(会报端口被占用),它只能根据/etc/ntp.conf 里server 字段后的服务器地址按一定时间间隔自动向上级NTP服务器更新时间。可以运行命令 ntpstat 查看每次更新间隔如:
[root@ESXI ~]# ntpstat
synchronised to NTP server (210.72.145.44) at stratum 2    #本NTP服务器层次为2,已向210.72.145.44 NTP同步过
time correct to within 93 ms                                 #时间校正到相差93ms之内
polling server every 1024 s                                  #每1024秒会向上级NTP轮询更新一次时间

补充:

ntpd、ntpdate的区别

下面是网上关于ntpd与ntpdate区别的相关资料。如下所示所示:

使用之前得弄清楚一个问题,ntpd与ntpdate在更新时间时有什么区别。ntpd不仅仅是时间同步服务器,它还可以做客户端与标准时间服务器进行同步时间,而且是平滑同步,并非ntpdate立即同步,在生产环境中慎用ntpdate,也正如此两者不可同时运行。

时钟的跃变,对于某些程序会导致很严重的问题。许多应用程序依赖连续的时钟——毕竟,这是一项常见的假定,即,取得的时间是线性的,一些操作,例如数据库事务,通常会地依赖这样的事实:时间不会往回跳跃。不幸的是,ntpdate调整时间的方式就是我们所说的”跃变“:在获得一个时间之后,ntpdate使用settimeofday(2)设置系统时间,这有几个非常明显的问题:

第一,这样做不安全。ntpdate的设置依赖于ntp服务器的安全性,攻击者可以利用一些软件设计上的缺陷,拿下ntp服务器并令与其同步的服务器执行某些消耗性的任务。由于ntpdate采用的方式是跳变,跟随它的服务器无法知道是否发生了异常(时间不一样的时候,唯一的办法是以服务器为准)。

第二,这样做不精确。一旦ntp服务器宕机,跟随它的服务器也就会无法同步时间。与此不同,ntpd不仅能够校准计算机的时间,而且能够校准计算机的时钟。

第三,这样做不够优雅。由于是跳变,而不是使时间变快或变慢,依赖时序的程序会出错(例如,如果ntpdate发现你的时间快了,则可能会经历两个相同的时刻,对某些应用而言,这是致命的)。因而,唯一一个可以令时间发生跳变的点,是计算机刚刚启动,但还没有启动很多服务的那个时候。其余的时候,理想的做法是使用ntpd来校准时钟,而不是调整计算机时钟上的时间。

NTPD 在和时间服务器的同步过程中,会把 BIOS 计时器的振荡频率偏差——或者说 Local Clock 的自然漂移(drift)——记录下来。这样即使网络有问题,本机仍然能维持一个相当精确的走时。

ntpq –p 参数详解

ntpq -p

remote           refid               st     t when  poll  reach     delay     offset     jitter

==================================================================

*10.247.160.31 10.240.241.5     4     u 53      64   377     0.240     0.374     0.240

remote:响应这个请求的NTP服务器的名称。

refid:NTP服务器使用的上一级ntp服务器。

st :remote远程服务器的级别.由于NTP是层型结构,有顶端的服务器,多层的Relay Server再到客户端.所以服务器从高到低级别可以设定为1-16.为了减缓负荷和网络堵塞,原则上应该避免直接连接到级别为1的服务器的.

when: 上一次成功请求之后到现在的秒数。

poll : 本地机和远程服务器多少时间进行一次同步(单位为秒).在一开始运行NTP的时候这个poll值会比较小,那样和服务器同步的频率也就增加了,可以尽快调整到正确的时间范围,之后poll值会逐渐增大,同步的频率也就会相应减小

reach:这是一个八进制值,用来测试能否和服务器连接.每成功连接一次它的值就会增加

delay:从本地机发送同步要求到ntp服务器的round trip time

offset:主机通过NTP时钟同步与所同步时间源的时间偏移量,单位为毫秒(ms)。offset越接近于0,主机和ntp服务器的时间越接近

jitter:这是一个用来做统计的值.它统计了在特定个连续的连接数里offset的分布情况.简单地说这个数值的绝对值越小,主机的时间就越精确

本文永久更新链接地址http://www.linuxidc.com/Linux/2017-03/141435.htm

TAGS:
十月 20th, 2016

<1>查看服务器时间

格式:date +FORMAT  //根据指定格式显示当前时间.

常用FORMAT

%Y  //YYYY格式的年份(Year)

%m  //mm格式的月份(month),01-12

%d  //dd格式的日期(day),01-31

%H  //HH格式的小时数(Hour),00-23

%M  //MM格式的分钟数(Minute),00-59

%S  //SS格式的秒数(Second),00-59

%F  //YYYY-mm-dd格式的完整日期(Full date),等同于%Y-%m-%d

%D  //YYYY/mm/dd格式的完整日期,等同于%Y/%m/%d

%T  //HH:MM:SS格式的时间(Time),等同于%H:%M:%S

%w  //星期几,0-6,0表示星期天

%u  //星期几,1-7,7表示星期天

 

<2>设置时间

date mmddHHMMYYYY (eg:date 122111152015,设置时间为2015年12月21日11点15分)

[root@sqj2015 ~]# date

Sun Dec 20 22:15:51 EST 2015

[root@sqj2015 ~]# date 12211152015

Mon Dec 21 11:15:00 EST 2015

date修改的是系统时间,我们可以通过以下命令来完善或重置回原来的时间

hwclock –hctosys    //以硬件时间校正系统时间

hwclock –systohc   //以系统时间校正硬件时间

 

<3>查看及设置时区

 

这里有你有没发现,我们查看和修改时间的时区均是EST.

查看当前使用的时区:

[root@sqj2015 ~]# cat /etc/sysconfig/clock

ZONE=”America/New_York”

这里发现这个时区采用的是美国时间,所以你前面及时做了时间同步,或者时间修改,它同步和修改的都是对应美国时间的.如下:

[root@sqj2015 ~]# date

Sun Dec 20 22:15:51 EST 2015

[root@sqj2015 ~]# date 12211152015

Mon Dec 21 11:15:00 EST 2015

显示的还是美国时间(EST).

也可以使用:

[root@sqj2015 ~]# date -u

Mon Dec 21 03:15:04 UTC 2015   //来显示UTC时间

 

若作为中国用户,怎么使时间与本地时间同步呢?

进入/usr/share/zoneinfo目录,可以看到很多时区文件,我们选择(shanghai)为中国时区.具体操作如下:

(1)先删除旧的时区配置: rm /etc/localtime

(2)软链新的时区配置:ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

再次查看

[root@sqj2015 ~]# date

Mon Dec 21 11:34:57 CST 2015

是不是已经与中国时间同步了.

 

<4>安装NTP,进行同步时间

#yum -y install ntp

然后执行ntpdate pool.ntp.org命令同步.

TAGS: , ,