如何在linux 上配置NTP 时间同步
一:NTP是网络时间同步协议,就是用来同步网络中各个计算机的时间的协议。
二:NTP服务端配置
21、检查系统是否安装了NTP包(linux系统一般自带NTP42),没有安装我们直接使用yum命令在线安装: yum install ntp
22、NTP服务端配置文件编辑: vim /etc/ntpconf
结果:
# @3新增-权限配置restrict 12712710restrict 192168310 mask 2552552550 nomodify notrap# @3改动-注释掉上级时间服务器地址#server 0centospoolntporg iburst#server 1centospoolntporg iburst#server 2centospoolntporg iburst#server 3centospoolntporg iburst# @4新增-上级时间服务器server 12712710 # local clockfudge 12712710 stratum 10
23、启动NTP时间服务器:service ntpd start
24、设置NTP开机自动启动:chkconfig ntpd on
25、查看NTP是否正常运行:netstat -tlunp | grep ntp
26、配置防火墙过滤规则:/sbin/iptables -I INPUT -p udp --dport 123 -j ACCEPT
如何配置:/etc/sysconfig/iptables 文件内配置开放udp 123端口: -A INPUT -p udp --destination-port 123 -j ACCEPT
A服务端配置文件解释
①:设定NTP主机来源(其中prefer表示优先主机),19216831134是本地的NTP服务器,所以优先指定从该主机同步时间。
server 192168749 prefer
server 0rhelpoolntporg
server 1rhelpoolntporg
server 2rhelpoolntporg
server 3rhelpoolntporg
②:限制你允许的这些服务器的访问类型,在这个例子中的服务器是不容许修改运行时配置或查询您的Linux NTP服务器
restrict 19216800 mask 2552552550 notrust nomodify notrap
在上例中,掩码地址扩展为255,因此从19216801-1921680254的服务器都可以使用我们的NTP服务器来同步时间
#此时表示限制向从19216801-1921680254这些IP段的服务器提供NTP服务。
restrict 19216800 mask 2552552550 notrust nomodify notrap noquery
#设置默认策略为允许任何主机进行时间同步
restrict default ignore
三:NTP客户端配置31、检查安装NTP服务有没有安装,未安装请自行安装
32、NTP客户端配置文件编辑: vim /etc/ntpconf
# @1新增-权限配置restrict 192168310 mask 2552552550 nomodify notrap# Use public servers from the poolntporg project# Please consider joining the pool (http://wwwpoolntporg/joinhtml)# 注释掉原来的实际服务器地址#server 0centospoolntporg iburst#server 1centospoolntporg iburst#server 2centospoolntporg iburst#server 3centospoolntporg iburst# @2新增-自己的时间服务器地址server 19216831223 prefer <==以这部主机为最优先#broadcast 1921681255 autokey # broadcast server#broadcastclient # broadcast client#broadcast 224011 autokey # multicast server#multicastclient 224011 # multicast client#manycastserver 239255254254 # manycast server#manycastclient 239255254254 autokey # manycast client
33、手动同步一次时间:/usr/sbin/ntpdate19216831134 (服务端主机IP,这里需要先关闭NTP服务哦)
34、启动NTP服务:service ntpd start
35、观察时间同步状况:ntpq -p
结果:
[root@localhost hct]# ntpq -p remote refid st t when poll reach delay offset jitter==============================================================================19216831134 LOCAL(0) 11 u 64 128 377 0202 73980 412834
⑥查看时间同步结果:ntpstat
[root@hct ~]# ntpstat
unsynchronised
polling server every 8 s
同步失败,同步也需要时间,需等待5-10分钟再次查询:
Every 20s: ntpstat Tue Jul 11 16:55:57 2017synchronised to NTP server (101011247) at stratum 12 time correct to within 605 ms polling server every 128 s
时间同步完成,date一下看是不是和服务器主机时间一致
B客户端配置文件详解
修改/etc/ntp/stpe-tickers文件,内容如下(当ntpd服务启动时,会自动与该文件中记录的上层NTP服务进行时间校对
C系统时间与硬件时间同步
如果主从服务时间超过1000秒则不再进行同步了,这时候要手动同步,即:/usr/sbin/ntpdate命令,如果怕服务器时差会经常变动比较大可以再Linux中添加计划任务,例如:
10 5 root /usr/sbin/ntpdate 19216831223 && /sbin/hwclock -w
ntp服务,默认只会同步系统时间。如果想要让ntp同时同步硬件时间,可以设置/etc/sysconfig/ntpd文件,在/etc/sysconfig/ntpd文件中,添加 SYNC_HWCLOCK=yes 这样,就可以让硬件时间与系统时间一起同步。
拓展内容ntpq -p各个选项相关信息
restrict 控制相关权限。
语法为: restrict IP地址 mask 子网掩码 参数
其中IP地址也可以是default ,default 就是指所有的IP
参数有以下几个:
ignore :关闭所有的 NTP 联机服务
nomodify:客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时。
notrust :客户端除非通过认证,否则该客户端来源将被视为不信任子网
noquery :不提供客户端的时间查询:用户端不能使用ntpq,ntpc等命令来查询ntp服务器
notrap :不提供trap远端登陆:拒绝为匹配的主机提供模式 6 控制消息陷阱服务。陷阱服务是 ntpdq 控制消息协议的子系统,用于远程事件日志记录程序。
nopeer :用于阻止主机尝试与服务器对等,并允许欺诈性服务器控制时钟
kod : 访问违规时发送 KoD 包。
restrict -6 表示IPV6地址的权限设置。
root@www ~]# vim /etc/ntpconf# 1 先处理权限方面的问题,包括放行上层伺服器以及开放区网用户来源:restrict default kod nomodify notrap nopeer noquery <==拒绝 IPv4 的用户restrict -6 default kod nomodify notrap nopeer noquery <==拒绝 IPv6 的用户restrict 22013015871 <==放行 tockstdtimegovtw 进入本 NTP 伺服器restrict 5912419683 <==放行 tickstdtimegovtw 进入本 NTP 伺服器restrict 5912419684 <==放行 timestdtimegovtw 进入本 NTP 伺服器restrict 127001 <==底下两个是预设值,放行本机来源restrict -6 ::1restrict 1921681000 mask 2552552550 nomodify <==放行区网来源# 2 设定主机来源,请先将原本的 [0|1|2]centospoolntporg 的设定注解掉:server 22013015871 prefer <==以这部主机为最优先server 5912419683server 5912419684# 3预设时间差异分析档案与暂不用到的 keys 等,不需要更动它:driftfile /var/lib/ntp/driftkeys /etc/ntp/keys
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)——记录下来。这样即使网络有问题,本机仍然能维持一个相当精确的走时。
一、搭建时间服务器
1、在一台linux服务器安装ntp server
tar zxvf ntp-426targz
cd ntp-426
/configure --prefix=/usr/local/ntp --enable-all-clocks --enable-parse-clocks
make && make install
2、修改ntpconf配置文件
vi /etc/ntpconf
# Permit time synchronization with our time source, but do not
# permit the source to query or modify the service on this system
#restrict default kod nomodify notrap nopeer noquery
restrict default nomodify
(允许任何IP的客户机都可以进行时间同步,如果是只允许某个网段的客户机进行时间同步可以这样写
restrict 1058260 mask 2552552550 nomodify)
restrict -6 default kod nomodify notrap nopeer noquery
# Permit all access over the loopback interface This could
# be tightened as well, but to do so would effect some of
# the administrative functions
restrict 127001
restrict -6 ::1
# Hosts on local network are less restricted
#restrict 19216810 mask 2552552550 nomodify notrap
# Use public servers from the poolntporg project
# Please consider joining the pool
#server 0rhelpoolntporg(默认时间服务器)
#server 1rhelpoolntporg(默认时间服务器)
#server 2rhelpoolntporg(默认时间服务器)
server 101281425 (手工设置的时间服务器)
(如果是可以直连外网,可以使用LINUX默认提供的三组标准时间服务器,否则可以自己指定一个同步时间源)
#broadcast 1921681255 key 42 # broadcast server
#broadcastclient # broadcast client
#broadcast 224011 key 42 # multicast server
#multicastclient 224011 # multicast client
#manycastserver 239255254254 # manycast server
#manycastclient 239255254254 key 42 # manycast client
# Undisciplined Local Clock This is a fake driver intended for backup
# and when no outside source of synchronized time is available
server 12712710 # local clock
fudge 12712710 stratum 10
3、以守护进程启动ntpd
#/etc/rcd/initd/ntpd -c /etc/ntpconf -p /tmp/ntpdpid
#/etc/rcd/initd/ntpd start
#ps -ef|grep ntpd
4、
在ntp server上启动ntp服务后,ntp
server自身或者与其server的同步的需要一个时间段,这个过程可能是5分钟,在这个时间之内在客户端运行ntpdate命令进行同步时会产生
no server suitable for synchronization found的错误。
下面命令可以知道何时ntp server完成了和自身同步的过程
在ntp server上使用命令:
# watch ntpq -p
注意LOCAL的这个就是与自身同步的ntp server。
注意reach这个值,在启动ntp server服务后,这个值就从0开始不断增加,当增加到17的时候,从0到17是5次的变更,每一次是poll的值的秒数,是64秒5=320秒的时间。
二、配置时间同步客户机
vi /var/spool/cron/root(或crontab -e)
增加一行,在每天的1点10分、9点10分、17点10分与时间同步服务器进行同步并写入BIOS
10 1 ,9,17 root /usr/sbin/ntpdate 101281425; /sbin/hwclock -w
如果同步不正常,可以加输出日志或看系统日志
输出日志的方法:
10 1 ,9,17 root /usr/sbin/ntpdate 101281425>>/tmp/1txt; /sbin/hwclock -w
在1txt中可查看时间同步时的输出结果。
或者看/var/mail/root系统日志
Subject: Cron <root@tyzssq8> /usr/sbin/ntpdate 101281425;/sbin/hwclock -w
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>
Message-Id: <20121127103001076FF2090E@tyzssq8site>
Date: Tue, 27 Nov 2012 18:30:01 +0800 (CST)
27 Nov 18:29:59 ntpdate[6917]: step time server 101281425 offset -1361968 sec
可以看到同步成功了,如果未成功会报出错误。
三、无法同步的问题
检查ntp server主机的防火墙。可能是ntp server的防火墙屏蔽了upd 123端口。
可以用命令
#service iptables stop
北京泰福特电子为您解答:
安装ntp,yum install ntp
Date 发现格式为EDT,我们需要修改为CST格式
[root@test ~]# mv /etc/localtime /etc/localtimebak
[root@test ~]# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
[root@test ~]# date
并用ntpdate 2089111250,同步网上的一台ntp服务器同步时间
vi/etc/ntpconf,修改配置文件,使能同步网上的ntp服务器
我们这里使用的是centos7不同于以往linux的操作,对于开机自启动的调整,命令有所不同。 chkconfig --list查看非系统内置服务的自启动状态
systemctl enable ntpdservice //开机自启动
ntpq –p
表示目前使用的ntp server的状态
Ntpstat,可以看到已经同步了
显示所有已启动的服务 systemctl list-units --type=service
希望能帮助您,望采纳···
执行ntpdate xxxxxxxxxxxx(ntp服务器地址)。
Linux下配置NTP服务器
配置方法:
1、ntp服务安装
NTP服务在RHEL5x中式默认安装的软件包,可用rpm -qa |grep
ntp检查是否安装,如果未安装可使用如下命令安装与删除NTP服务器软件包
#使用rpm方式安装
rpm -ivh ntp-422p1-8el5i386rmp
#使用yum方式安装
yum -y install ntpi
#使用rpm方式删除
rpm -e ntp-422pl-8el5i386rpm
#使用yum方式删除
yum -y remove ntpi
2、ntp服务配置
在ntp服务安装完成后,需要修改ntp服务配置文件。ntp服务主配置文件/etc/ntpconf
21 ntp服务的启动、暂停
NTP属于system
V服务,其启动、暂停相关命令如下:
#启动
service ntpd
start
#停止
Service ntpd
stop
#重新加载
service ntpd
reload
#查看当前启动状态
service ntpd
status
22 ntp服务自动加载
设置ntp服务下一次开机运行状态可通过命令配置
#在运行级别2、3、4、5上设置为自动运行
chkconfig
ntpd on
#在运行级别2、3、4、5上设置为不自动运行
chkconfig
ntpd off
#在运行级别3、5上设置为自动运行
chkconfig
ntpd --level 35 on
#在运行级别3、5上设置为不自动运行
chkconfig
ntpd --level 35 off
23 配置信息
配置ntp,将Internet上的时间服务器作为内部标准时间来源,过程如下
1)修改/etc/ntpconf文件
restrict default kod nomodify notrap nopeer noquery
restrict 127001
restrict -6::1
restrict 19216800 mask 2552552550 nomodify notrap
restrict 19216810 mask 2552552550 nomodify notrap
#指定Internet上的时间服务器
restrict 20746232182 mask 255255255255 nomodify notrap noquery
server 20746232182
server 12712710
fudge 12712710 stratum 10
keys /etc/ntp/keys
#指定NTP服务器日志文件
logfile /var/log/ntp
2)修改/etc/ntp/stpe-tickers文件,内容如下(当ntpd服务启动时,会自动与该文件中记录的上层NTP服务进行时间校对)
20746232182
12712710
3)修改/etc/sysconfig/ntpd文件,内容如下:
#允许BIOS与系统时间同步,也可以通过hwclock -w 命令
SYNC_HWCLOCK=yes
4)在配置完成并重新启动服务后,可通过ntpstat
命令显示本机上一次与上层ntp服务器同步时间的情况,也可以使用ntpq -p 查看本机与上层ntp服务器通信情况,
24 图形界面配置NTP
图形界面下直接用system-config-date, 在“Network Time Protocol”选项页指定NTP服务器后勾选“Synchronize system clock before startingservice”,将ntpd服务设置为自动运行即可。
25 客户端访问
1)Linux客户端可通过图形界面进行配置,也可以通过ntpdate命令立即与NTP服务器及行时间校对。
ntpdate 192168010
2)Windows客户端,只需双击任务栏右下角的时钟,选择“Internet时间”选项页,输入NTP服务IP地址或FQDN,并勾选“自动与Internet时间服务器同步”即可。
Windows默认7天自动更新一次,可通过修改注册表HKEY_LOCAL_MACHINE\SYSTEM
\CurrentControlSet\services\W32Time\TimeProviders\NtpClient\SpecialPollInterval 默认单位为妙,修改后重新启动即可生效。
1、安装ntp软件
sudo apt-get install ntp
2、修改配置文件
sudo vim /etc/ntpconf
driftfile /var/lib/ntp/ntpdrift
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable
server ntpubuntucom
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
restrict 192168100 mask 2552552550 nomodify
restrict 127001
restrict ::1
主要是在配置文件中的:
restrict -6 default kod notrap nomodify nopeer noquery
语句后面加入:
restrict 192168100 mask 2552552550 nomodify
restrict 192168100 mask 2552552550 nomodify---主要是允许能同步的服务器所在的内部网段
NTP服务器顾名思义就是时间同步服务器(Network Time Protocol),Linux下的ntp服务器配置相对来说都比较容易,但在Linux下有一个弊端, 不同时区或者说是时间相差太大的无法同步 ,所以在配置ntp服务器之前需要把时间配置成相同的。
NTP时钟同步方式说明
NTP在linux下有两种时钟同步方式,分别为直接同步和平滑同步:
直接同步
使用ntpdate命令进行同步,直接进行时间变更。如果服务器上存在一个12点运行的任务,当前服务器时间是13点,但标准时间时11点,使用此命令可能会造成任务重复执行。因此使用ntpdate同步可能会引发风险,因此该命令也多用于配置时钟同步服务时第一次同步时间时使用。
平滑同步
使用ntpd进行时钟同步,可以保证一个时间不经历两次,它每次同步时间的偏移量不会太陡,是慢慢来的,这正因为这样,ntpd平滑同步可能耗费的时间比较长。
标准时钟同步服务
http://wwwpoolntporg/zone/cn
这个网站包含全球的标准时间同步服务,也包括对中国时间的同步,对应的URL为:cnpoolntporg
在其中也描述了ntp配置文件中的建议写法:
server 1cnpoolntporg
server 2asiapoolntporg
server 3asiapoolntporg
实验室集群没有联网,我们需要搭建ntp服务器并进行时间同步。
现使用的系统为centos72,机器使用情况如下表所示,这里以1921681102为ntp server,1921681104为client对时间进行同步。
NTP server 1921681102
NTP client 1921681104
1在集群中所有节点上安装ntp
# yum -y install ntp
2所有节点设置时区,这里设置为中国所用时间
# timedatectl set-timezone Asia/Shanghai
3在server节点上启动ntp服务
# systemctl startntpd
# systemctl enable ntpd
4在server节点上设置现在的准确时间
# timedatectl set-time HH:MM:SS
5在server节点上设置其ntp服务器为其自身,同时设置可以接受连接服务的客户端,是通过更改/etc/ntpconf文件来实现,其中server设置12712710为其自身,新增加一个 restrict 段为可以接受服务的网段
# vim /etc/ntpconf
6重启ntpd服务
# systemctl restart ntpd
# timedatectl
NTP synchronized: yes
启用ntpd后,服务器就开启了ntpd自动同步,无法使用 timedatectl set-time HH:MM:SS重新设置时间。
如果要使用timedatectl set-time HH:MM:SS 重新设置时间:
# systemctl stop ntpd
# timedatectl set-ntp false
# timedatectl set-time HH:MM:SS
# hwclock -w
# systemctl start ntpd
1客户端时区需要和服务端保持一致,否则无法同步时间
# timedatectl set-timezone
Asia/Shanghai
2安装同步软件包
# yum -y install ntpdate
3 修改/etc/sysconfig/ntpdate,让ntpdate每次同步时间之后把时间写入hwclock,相当于命令hwclock -w
将最后一行SYNC_HWCLOCK=no修改为:SYNC_HWCLOCK=yes
# vim /etc/sysconfig/ntpdate
4客户端定时任务配置
# crontab -e
59 23 /sbin/ntpdate 1921681102
设置为每天23:59分执行,重启crond服务
######################
定时任务基本格式 :
command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用或者 /1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
################################
5重启定时任务
# systemctl restart crondservice
WindowsXP时间服务器配置
1在注册表中将服务NTPServer的Enabled属性设置为1Type改为NTP。
2如果外部时间源获取时间将Config/AnnounceFlags设置为5
3将parameters\NtpServer地址改为外部时间源的IP地址或者DNS,在使用DNS是后面要加上”,0x1”多个地址之间用空格隔开。
4其他参数是可选的参数,可根据需要配置。
5重启w32time服务在命令行中,net stop w32time && net start
w32time就配置完成了。
6此外,要保证windows
防火墙是关闭的。或者启动防火墙时,在例外中添加C:\WINDOWS\system32\w32timedll端口号:123类型UDP。
经过以上六步服务器端就设置完成了。
WindowsXP客户端的配置
1将NtpServer地址设置为服务器的地址。
2服务类型改为NTP。
3SpecialPolInterval自动同步时间间隔根据需要配置比如15分钟轮询一次(设置为900,因为单位为秒)。
4将默认的时间服务器设置为服务器的地址, XP默认是微软的时间服务器timewindowscom。在注册表中
HKEY_LOCAL_MACHINE\SOFTWARE\WINDOWS\CurrentVersion\DateTime\Servers
新建一个字符串值(名字3),输入服务器的IP地址。
并将默认值改为3这样在时期时间属性\Internet时间默认的时间同步服务器就成为我们设置的了。
0条评论