如何在 CentOS 中设置 NTP 服务器

如何在 CentOS 中设置 NTP 服务器,第1张

一、搭建时间服务器

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

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时间默认的时间同步服务器就成为我们设置的了。

二、配置ntp服务器端

restrict 0000 mask 0000 nomodify notrap noquery

restrict 1921681660 mask 2552552550 nomodify

restrict 127001

server 2107214544 prefer

server 12712710

fudge 12712710 stratum 8

driftfile /var/lib/ntp/drift

keys /etc/ntp/keys

说明:关于权限设定部分

权限的设定主要以 restrict 这个参数来设定,主要的语法为:

restrict IP地址 mask 子网掩码 参数

其中 IP 可以是IP地址,也可以是 default ,default 就是指所有的IP

参数有以下几个:

ignore :关闭所有的 NTP 联机服务

nomodify:客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时。

notrust :客户端除非通过认证,否则该客户端来源将被视为不信任子网

noquery :不提供客户端的时间查询

注意:如果参数没有设定,那就表示该 IP (或子网)没有任何限制!

三、查看NTP服务的运行状况

#watch ntpq -p

参数说明:

remote: 它指的就是本地机器所连接的远程NTP服务器

refid: 它指的是给远程服务器(eg 1936019975)提供时间同步的服务器

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

t: 这个我也不知道啥意思^_^

when: 我个人把它理解为一个计时器用来告诉我们还有多久本地机器就需要和远程服务器进行一次时间同步

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

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

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

offset: 这是个最关键的值, 它告诉了我们本地机和服务器之间的时间差别 offset越接近于0,我们就和服务器的时间越接近

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

四、客户端配置

ntpdate 192168166100

LINUX做为客户端自动同步时间

如果想定时进行时间校准,可以使用crond服务来定时执行。

编辑 /etc/crontab 文件

加入下面一行:

30 8 root /usr/sbin/ntpdate 192168166100; /sbin/hwclock -w #19216801是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 启动服务。

五、报错说明

当用ntpdate -d 来查询时会发现导致 no server suitable for synchronization found 的错误的信息有以下2个:

错误1Server dropped: Strata too high

在ntp客户端运行ntpdate serverIP,出现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和其自身保持同步,如果在/ntpconf中定义的server都不可用时,将使用local时间作为ntp服务提供给ntp客户端。

server 12712710 fudge

12712710 stratum 8

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

那么如何知道何时ntp server完成了和自身同步的过程呢?

在ntp server上使用命令:

# watch ntpq -p

出现画面:

Every 20s: ntpq -p Thu Jul 10 02:28:32 2008

remote refid st t when poll reach delay offset jitter

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

1921683022 LOCAL(0) 8 u 22 64 1 2113 179133 0001

LOCAL(0) LOCAL(0) 10 l 21 64 1 0000 0000 0001

注意LOCAL的这个就是与自身同步的ntp server。

注意reach这个值,在启动ntp server服务后,这个值就从0开始不断增加,当增加到17的时候,从0到17是5次的变更,每一次是poll的值的秒数,是64秒5=320秒的时间。

如果之后从ntp客户端同步ntp server还失败的话,用ntpdate –d来查询详细错误信息,再做判断。

错误2Server dropped: no data

从客户端执行netdate –d时有错误信息如下:

transmit(1921683022)

transmit(1921683022)

transmit(1921683022)

transmit(1921683022)

transmit(1921683022)

1921683022: Server dropped: no data

server 1921683022, port 123

28 Jul 17:42:24 ntpdate[14148]: no server suitable for synchronization found

出现这个问题的原因可能有2:

1检查ntp的版本,如果你使用的是ntp42(包括42)之后的版本,在restrict的定义中使用了notrust的话,会导致以上错误。

使用以下命令检查ntp的版本:

# ntpq -c version

下面是来自ntp官方网站的说明:

The behavior of notrust changed between versions 41 and 42

In 41 (and earlier) notrust meant "Don't trust this host/subnet for time"

In 42 (and later) notrust means "Ignore all NTP packets that are not cryptographically authenticated" This forces remote time servers to authenticate themselves to your (client) ntpd

解决:

把notrust去掉。

2检查ntp server的防火墙。可能是server的防火墙屏蔽了upd 123端口。

可以用命令

#iptables INPUT -p udp -m udp --dport 123 -j ACCEPT

如果觉得麻烦就直接把防火墙停掉

#service iptables stop

来关掉iptables服务后再尝试从ntp客户端的同步,如果成功,证明是防火墙的问题,需要更改iptables的设置。

时间同步服务器是一种高科技智能化、可独立基于NTP/SNTP协议工作的时间服务器,时间同步服务器从GPS卫星上获取标准时钟信号信息,将这些信息在网络中传输,网络中需要时间信号的设备如计算机,控制器等设备就可以与标准时间源同步。标准的时钟信息通过TCP/IP网络传输,DNTS系列还支持多种流行的时间发布协议,如time/UDP,并支持可设置的UDP端口的中新创科定义的时间广播数据包。NTP和time/UDP的端口号分别固定于RFC-123和RFC-37指定的123和37。

随着计算机应用的广度和深度不断加大,网络中的设备种类和业务类型越来越多,服务器的数量也与日俱增。传统上,各种服务器、网络设备使用的时间都是由设备内部时钟来提供的。由于服务器、网络设备本身的时钟误差是不可避免的,尽管这种误差每天不大,但经过一段时间的累积就会出现大的时间差,从而导致网络中各服务器、网络设备的时间不一致。对于一些重要的行业来说,这种时间的不一致是致命的。基于以上考虑,网络中有必要部署NTP网络时间服务器,使用GPS信号作为时间源,通过NTP协议对网络内的所有服务器和网络设备的时间进行同步。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 如何在 CentOS 中设置 NTP 服务器

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情