如何在 CentOS 中搭建 NTP 服务器

如何在 CentOS 中搭建 NTP 服务器,第1张

第一步、通过yum安装ntp

# yum install ntp

第二步、配置NTP服务器

编辑vim /etc/ntpconf

server 192168110 (centos7IP地址)

server s2mtimeeducn 

server 0asiapoolntporg 

server 1asiapoolntporg 

server 2asiapoolntporg 

server 3asiapoolntporg

server 12712710 iburst  local clock 当外部时间不可用时,使用本地时间。 

restrict 19216811 mask 2552552550 nomodify  允许更新的IP地址段

第三步、启动NTP

systemctl start ntpd 

systemctl enable ntpdservice 设置开机启动服务  

第四步、验证NTP

# ntpq -p

配置客户端

1:linux

NTP 客户端主机需要 ntpupdate 软件包来和服务器同步时间。可以轻松地使用 yum 安装。

# ntpdate

具体可以参考网页链接

应该是locale没选对,ntp一般用的是gmt,中国的时区是+8。

时区文件一般是/etc/localtime。其他的时区文件在/usr/share/zoneinfo内。

换时区只要用/usr/share/zoneinfo内的时区文件覆盖掉/etc/localtime就可以。

比如使用中国时区,如此操作即可:

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

或者用命令:

tzselect

按照提示选择序号并回车即可。

验证时区可以用:

date -R

Thu, 16 Aug 2012 15:37:51 +0800

NTP服务器Network Time Protocol(NTP)是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶毒的协议攻击。时间按NTP服务器的等级传播。按照离外部UTC源的远近把所有服务器归入不同的Stratum(层)中。

                                                          

网络时间协议(NTP)用来同步网络上不同主机的系统时间。你管理的所有主机都可以和一个指定的被称为 NTP  服务器的时间服务器同步它们的时间。而另一方面,一个 NTP 服务器会将它的时间和任意公共 NTP 服务器,或者你选定的服务器同步。由 NTP  管理的所有系统时钟都会同步精确到毫秒级。

在公司环境中,如果他们不想为 NTP 传输打开防火墙,就有必要设置一个内部 NTP 服务器,然后让员工使用内部服务器而不是公共 NTP  服务器。在这个指南中,我们会介绍如何将一个 CentOS 系统配置为 NTP 服务器。在介绍详细内容之前,让我们先来简单了解一下 NTP 的概念。

为什么我们需要 NTP

由于制造工艺多种多样,所有的(非原子)时钟并不按照完全一致的速度行走。有一些时钟走的比较快而有一些走的比较慢。因此经过很长一段时间以后,一个时钟的时间慢慢的和其它的发生偏移,这就是常说的  “时钟漂移” 或 “时间漂移”。为了将时钟漂移的影响最小化,使用 NTP 的主机应该周期性地和指定的 NTP 服务器交互以保持它们的时钟同步。

在不同的主机之间进行时间同步对于计划备份、入侵检测记录、分布式任务调度或者事务订单管理来说是很重要的事情。它甚至应该作为日常任务的一部分。

NTP 的层次结构

NTP 时钟以层次模型组织。层级中的每层被称为一个 stratum(阶层)。stratum 的概念说明了一台机器到授权的时间源有多少 NTP  跳。

Stratum 0 由没有时间漂移的时钟组成,例如原子时钟。这种时钟不能在网络上直接使用。Stratum N (N > 1) 层服务器从  Stratum N-1 层服务器同步时间。Stratum N 时钟能通过网络和彼此互联。

NTP 支持多达 15 个 stratum 的层级。Stratum 16 被认为是未同步的,不能使用的。

准备 CentOS 服务器

现在让我们来开始在 CentOS 上设置 NTP 服务器。

首先,我们需要保证正确设置了服务器的时区。在 CentOS 7 中,我们可以使用 timedatectl  命令查看和更改服务器的时区(比如,"Australia/Adelaide",LCTT 译注:中国可设置为 Asia/Shanghai )

代码如下:

# timedatectl list-timezones | grep Australia

# timedatectl set-timezone Australia/Adelaide

# timedatectl

继续并使用 yum 安装需要的软件

代码如下:

# yum install ntp

然后我们会添加全球 NTP 服务器用于同步时间。

代码如下:

# vim /etc/ntpconf

server 0oceaniapoolntporg

server 1oceaniapoolntporg

server 2oceaniapoolntporg

server 3oceaniapoolntporg

默认情况下,NTP 服务器的日志保存在 /var/log/messages。如果你希望使用自定义的日志文件,那也可以指定。

复制代码

代码如下:

logfile /var/log/ntpdlog

如果你选择自定义日志文件,确保更改了它的属主和 SELinux 环境。

复制代码

代码如下:

# chown ntp:ntp /var/log/ntpdlog

# chcon -t ntpd_log_t /var/log/ntpdlog

现在初始化 NTP 服务并确保把它添加到了开机启动。

代码如下:

# systemctl restart ntp

# systemctl enable ntp

验证 NTP Server 时钟

我们可以使用 ntpq 命令来检查本地服务器的时钟如何通过 NTP 同步。

下面的表格解释了输出列。

remote 源在 ntpconf 中定义。‘’ 表示当前使用的,也是最好的源;‘+’ 表示这些源可作为 NTP 源;‘-’  标记的源是不可用的。

refid 用于和本地时钟同步的远程服务器的 IP 地址。

st Stratum(阶层)

t 类型。 'u' 表示单播(unicast)。其它值包括本地(local)、多播(multicast)、广播(broadcast)。

when 自从上次和服务器交互后经过的时间(以秒数计)。

poll 和服务器的轮询间隔,以秒数计。

reach 表示和服务器交互是否有任何错误的八进制数。值 337 表示 100% 成功(即十进制的255)。

delay 服务器和远程服务器来回的时间。

offset 我们服务器和远程服务器的时间差异,以毫秒数计。

jitter 两次取样之间平均时差,以毫秒数计。

控制到 NTP 服务器的访问

默认情况下,NTP 服务器允许来自所有主机的查询。如果你想过滤进来的 NTP 同步连接,你可以在你的防火墙中添加规则过滤流量。

# iptables -A INPUT -s 19216810/24 -p udp --dport 123 -j ACCEPT

# iptables -A INPUT -p udp --dport 123 -j DROP

该规则允许从 19216810/24 来的 NTP 流量(端口 UDP/123),任何其它网络的流量会被丢弃。你可以根据需要更改规则。

配置 NTP 客户端

1 Linux

NTP 客户端主机需要 ntpupdate 软件包来和服务器同步时间。可以轻松地使用 yum 或 apt-get  安装这个软件包。安装完软件包之后,用服务器的 IP 地址运行下面的命令。

代码如下:

# ntpdate

基于 RHEL 和 Debian 的系统命令都相同。

2 Windows

如果你正在使用 Windows,在日期和时间设置(Date and Time settings)下查找网络时间(Internet Time)。

3 Cisco 设备

如果你想要同步 Cisco 设备的时间,你可以在全局配置模式下使用下面的命令。

代码如下:

# ntp server

来自其它厂家的支持 NTP 的设备有自己的用于网络时间的参数。如果你想将设备和 NTP服务器同步时间,请查看设备的说明文档。

结论

总而言之,NTP 是在你的所有主机上同步时钟的一个协议。我们已经介绍了如何设置 NTP 服务器并使支持 NTP 的设备和服务器同步时间。

一、搭建时间服务器

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

  为了实现时间同步,我们就需要用户NTP(Network Time Protocol)这个协议。如图1所示。简单地说,NTP是用来使系统和一个精确的时间源保持时间同步的协议。笔者建议管理员最好在自己管理的网络中建立至少一台时间服务器来同步本地时间。

  如 果在一个公司的局域网中,如果让每个员工通过手动的方式每隔一段时间去校准时间,不但不利于管理,而且校准目标时间源也不一定准确。公司局域网络中不同计 算机的时间偏差尤其是客户机/服务器之间的时间偏差,就会对一些要求时间同步的服务产生影响。比如,为了管理方便,服务器设置了一到下班时间便 账号过期,用户无法访问Internet网络。而如果你的电脑时间与服务器的时间不同步,当你为你下班时间未到,正准备发送邮件时,或许在服务器的时间 上,你的账号便过期了,从而导到无法发送邮件。解决这种问题的方法很简单,就是建立一个能提供精确时间的服务器,局域网内的所有电脑统一通过这台时间服务 器进行时间同步、校准。

  四、NTP服务器安装

  现在,我们就来介绍一下,如何在Linux系统下,建立一个NTP服务器吧。在本文中,我们采用的是Fedora 2操作系统作为例子 (其它版本Linux也可以,系统的配置类似)。

  使用 RPM 安装

  首先输入如下指令

  rpm -q ntp

  查询本机是否安装了NTP软件包。如果没有安装的话,找到您的 Linux 的安装光盘,mount 上后,查找以NTP开头的软件包名,然后安装上去,就可以了!

  rpm –ivh ntp-412-5i386rpm

  五、NTP服务的设置

  1.NTP软件包的结构

  NTP服务的配置文件:

  /etc/ntpconf :这个是 NTP 服务的主要配置文件,不同的Linux版本文件所在的目录可能会不同!

  与NTP服务有关的Linux 系统文件及目录:

  /usr/share/zoneinfo:这是个目录,在这个目录下是规定了各主要时区的时间设定文件,例如中国大陆地区的时区设置文件是 /usr/share/zoneinfo/Asia/Shanghai 。

  /etc /sysconfig/clock:这个文件是Linux 的主要时区设定文件。每次启动后,Linux 会自动读取这个文件来设定系统预设要显示的时间!比如这个文件内容为“ZONE=Asia/Shanghai”,这表示我们的时间设定使用 /usr/share/zoneinfo/Asia/Shanghai 这个文件!

  /etc/localtime:这个文件是本地系 统的时间设定文件! 假设clock 文件里面规定了使用的时间设定文件为 /usr/share/zoneinfo/Asia/Shanghai, Linux 系统就会将 Shanghai那个文件复制一份为 /etc/localtime ,所以系统的时间显示就会以 Shanghai 那个时间设定文件为准。假设这台主机到了美国纽约,您只要将 /etc/sysconfig/clock 里面的ZONE 设定成为ZONE="America/New_York" 并且将/usr/share/zoneinfo/America/New_York复制成为 /etc/localtime ,其它什么设置都不需要改动,系统的显示时间就是美国纽约当地的时间了!

  与 NTP 及系统时间有关的执行文件:

  /bin/date: Linux 系统上面的日期与时间修改及输出命令。

  /sbin /hwclock:因为主机的 BIOS 时间与 Linux 系统时间是分开的,所以使用 date 这个指令调整了时间之后,只是调整了linux的系统时间,还需要使用 hwclock 才能将修改过后的时间写入 BIOS。这个命令必须root用户才能执行 。

  /usr/sbin/ntpd:NTP服务的守护进程文件,需要启动它才能提供NTP服务。

  /usr/sbin/ntpdate:NTP客户端用来连接NTP服务器命令文件。

  2.NTP服务端的设置

  编辑 /etc/ntpconf 文件

  关于权限设定部分

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

  restrict IP地址 mask 子网掩码 参数

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

  参数有以下几个:

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

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

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

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

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

  上级时间服务器的设定

  由于我们配置的NTP 服务器需要网络上面时间比较准确的NTP服务器来更新自己的时间,所以在我们的 NTP 服务器上面要配置一部上级时间服务器来进行校准!在 Internet 上面提供了许多时间服务器,从下面地址找一个离你最近的

  http://wwweecisudeledu/~mills/ntp/clock1ahtml

  用server这个参数设定上级时间服务器,语法为:

  server IP地址或域名 [prefer]

  IP地址或域名就是我们指定的上级时间服务器,如果 Server 参数最后加上 prefer,表示我们的 NTP 服务器主要以该部主机时间进行校准。

  解决NTP服务器校准时间时的传送延迟

  使用driftfile参数设置:

  driftfile 文件名

  在与上级时间服务器联系时所花费的时间,记录在driftfile参数后面的文件内。

  注意: driftfile 后面接的文件需要使用完整的路径文件名,不能是链接文件,并且文件的权限需要设定成 ntpd守护进程可以写入。

  ntpconf文件举例:

  设置要求:不对 Internet 提供服务,仅对内部子网 19216800/24 提供服务,NTP 服务器的上级时间主机为:clockncfukuoka-uacjp和ntpnasagov,内部子网的客户端不能修改NTP服务器的时间参数。

  在ntpconf中增加以下内容:

  restrict default ignore # 关闭所有的 NTP 要求封包

  restrict 127001   # 开启内部递归网络接口 lo

  restrict 19216800 mask 2552552550 nomodify #在内部子网里面的客户端可以 进行网络校时,但不能修改NTP服务器的时间参数。

  server 13310092 prefer #用13310092做上级时间服务器

  server 19812330132 #19812330132作为上级时间服务器参考

  restrict 13310092 #开放server 访问我们ntp服务的权限

  restrict 19812330132

  driftfile /var/lib/ntp/drift

  保存退出后。启动NTP服务

  service ntpd start

  如果想每次系统启动,NTP服务自动启动,请输入下面命令: chkconfig -level 35 ntpd on 注意:

  1NTP服务的端口是123,使用的是udp协议,所以NTP服务器的防火墙必须对外开放udp 123这个端口。

  2Ntpd启动的时候通常需要一段时间进行时间同步,所以在ntpd刚刚启动的时候还不能正常提供时钟服务,最长大概有5分钟吧,如果超过了这个时间请检查一下您的配置文件。

  六、NTP客户端的使用

  Linux系统

  在Linux 上面进行网络校时非常简单,执行 ntpdate 即可:

  ntpdate 19216801 #19216801是NTP服务器的IP

  不要忘了使用hwclock命令,把时间写入bios

  hwclock -w

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

  编辑 /etc/crontab 文件

  加入下面一行:

  30 8 root /usr/sbin/ntpdate 19216801; /sbin/hwclock -w #19216801是NTP服务器的IP地址

  然后重启crond服务

  service crond restart

  这样,每天 8:30 Linux 系统就会自动的进行网络时间校准。

  Windows 系统

  在 Windows XP上面使用NTP进行时间校准也很简单:

  双击桌面任务栏上的时间,弹出“日期和时间”属性窗口,如图所示:

  选择Internet时间,在服务器中填入你的NTP服务器的IP地址或者域名,然后点击立即更新,您的系统时间就会立即更新。如果想定时更新,把左上角的自动与Internet时间服务器同步选中,然后点击右下角的应用即可。

  yy-2-3tif

  如 果不是Windows XP系统,但是NTP服务器同时也是samba服务器的话,则对Windows来说,不需要安装任何时间同步软件,因为Windows客户端可以用net time\\时间服务器IP或服务器netbios名/set/yes来同步。可以把该命令放在开始菜单的启动项中,启动windows时自动同步。

  由于net time命令是利用Netbios over TCP/IP协议来同步时间,所以NTP服务器不同时是samba 服务器的话,就需要Windows客户端安装时间同步软件。这方面的软件很多,使用也很简单,读者可以上网查找一下。

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

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情