鸟哥服务器架设——NTP服务器搭建

NTP服务器搭建

一、NTP通信协议

实际上,Linux操作系统的计时方式主要从1970年1月1日开始计算总秒数,因此,如果你还记得date这个命令的话,会发现他有个+%s的参数,可以去的总秒数,这个就是软件时钟。但是,如同前面说的,计算机硬件主要是以BIOS内部的时间为主要的时间依据(硬件时钟),而偏偏这个时间可能因为BIOS内部芯片本身的问题,而导致BIOS时间与标准时间(UTC)存在一点点的差异。所以,为了避免主机时间因为长期运行而导致时间偏差,进行时间同步(synchronize)的工作就显得很重要了。

  软件时钟:由Linux操作系统根据1970/01/01开始计算的总秒数。

  硬件时钟:主机硬件系统上面的时钟,例如BIOS记录的时间。

那么怎么让时间同步化呢?如果我们选择几部主要主机(Primary Server)调校时间,让这些Primary Server的时间同步之后,在开放网络服务让Client段链接,并且允许Client端调整自己的时间,不就可以实现全部计算机的时间同步了吗。那么什么协议可以实现这样的功能呢,那就是Network Time Protocol,即NTP协议,另外还有Digital Time Synchronization Protocol(DTSS)也可以实现相同的功能。不过,NTP是如何让Server与Client同步他们的时间的呢?

1)首先,主机当然需要启动这个daemon。

2)之后,Client会向NTP Server发送出校对时间的message.

3)然后NTP Server会送出当前的标准时间给Client。

4)Client接受了来自Server的时间后,会据此调整自己的时间,这样就实现了网络校时。

至于NTP这个daemon是以port123为连接的接口(使用UDP数据包),所以我们利用Time Server来进行时间同步更新时,就需要使用NTP这个软件提供的ntpdateup来进行port123的连接。

二、NTP服务器的层次概念

由于NTP时间服务器采用类似分级架构(straum)来处理时间的同步化,所以它使用的是类似一般Server/Client的主从架构。网络社会上会提供一些主要与次要的时间服务器,这些均属于第一级与第二级的时间服务器。

再进行NTP主机的设置时,都会选择多台上层的Time Server来作为我们这一台NTP Server的校时之用,选择堕胎的原因是因为可以避免因为某台时间服务器突然宕机时,其他主机仍然可以提供NTP主机来自我更新,然后NTP Server才提供给自己的Client端更新时间。


三、NTP服务器的安装和配置

1、所需软件与软件结构

Yum install ntp

Yum install tzdata

与时间及NTP服务器设置相关的的配置文件与重要数据文件有下面几个。

/etc/ntp.conf :就是NTP服务器的主要配置文件,也是唯一一个

/usr/share/zoneinfo/:由tzdata所提供的,为个时区的时间格式对应文件。例如我过的时区格式对应文件是/usr/share/zoneinfo/Asia/Shanghai.这个目录里面的问价与下面要谈的两个文件(clock与localtime)是有关系的。

/etc/sysconfig/clock:设置时区与是否使用UTC时钟的配置文件。每次开机候Linux会自动读取这个文件设置自己系统所默认要显示的时间。举例来说,在我们中国本地的时间设置中,这个文件内应该会出现一行ZONE=“Asia/Shanghai”的字样,这表示我们的时间配置文件要使用/usr/share/zoneinfo/Asia/Shanghai那个文件。

[[email protected] zoneinfo]# cat /etc/sysconfig/clock

ZONE="Asia/Shanghai"

/etc/localtime:就是本地的时间配置文件。刚刚那个clock文件里面规定了适应的时间配置文件为/usr/share/zoneinfo/Asia/Shanghai,所以说这就是本地的时间了,此时Linux系统会以Shanghai那个时间配置文件为准。

至于常用于时间服务器与修改时间命令,主要有以下几个:

/bin/date:用于Linux时间(软件时间)的修改与显示的命令。

/sbin/hwclock:用于BIOS时钟(硬件时钟)的修改与显示的命令。这个命令只有root才能执行,因为Linux系统上面的BIOS时间与Linux系统时间是分开的,所以使用date这个命令调整了时间之后,还需要使用hwclock才能将修改过后的时间写入BIOS中。

/usr/sbin/ntpd:主要提供NTP服务的程序。配置文件为/etc/ntp.conf

/usr/sbin/ntpdate:用于客户端的时间校正,如果不启用NTP而仅想要使用NTPclient功能的话,会用到这个命令。

2、主要配置文件ntp.conf的处理

举例配置

上层NTP服务器共有 tock.stdtime.gov.tw   , tick. stdtime.gov.tw   ,time. stdtime.gov.tw 三台,其中以tock.stdtime.gov.tw最为优先使用。

不对internet提供服务,仅允许来自内部网络912.168.100.0/24的查询。

检测BIOS时钟与Linux系统时间的差异并写入/var/lib/ntp/drift文件中。

下面来看一下如何在ntp.conf中设置权限控制。

1)利用restrict来管理权限控制

restrict参数设置方式:

restrict [你的IP] mask [netmask_IP] [parameter]

其中parameter的参数主要有以下这些。

ignore:拒绝所有类型的NTP连接。

nomodify:客户端不能使用ntpc与ntpq这两个程序来修改服务器的时间参数,但客户端仍可通过这部主机进行网络校时。

noquery:客户端不能通过使用ntpq、ntpc等命令来查询时间服务器,等于不提供NTP的网络校时。

notrap:不提供trap这个远程事件登录(remote event logging)的功能。

notrust:拒绝没有认证的客户端。

如果没有在parameter的地方加上任何参数的话,这表示“该IP或网段不受任何限制“。一般来说,我们可以先关闭NTP的权限,然后再一个一个地启用允许登录的网段。

2)利用server设置上层NTP服务器

上册NTP服务器的设置方式为:

server [IP or hostname] [prefer]

在server后端可以按接IP或主机名,最好用IP,防止修改主机名后的麻烦。那个prefer表示优先适用的服务器。

3)以driftfile记录时间差异

driftfile [可以被ntpd写入的目录或文件]

因为默认的NTP Server本身的时间计算是依据BIOS的芯片时间振荡周期频率来计算的,但是这个数值与上层Time Server不见得一致。所以NTP这个daemon(ntpd)会自动去计算我们的主机的频率与上层Time Server的频率,并且将两个频率的误差记录下来,记录下来的文件就是在driftfile后面的完整文件名所指的文件。关于文件名必须要知道:

Driftfile后面接的文件需要使用完整路径文件名。

该文件不能是链接文件。

该文件所记录的数值单位为百万分之一秒(ppm)。

dirftfile 后面接的文件会被ntpd自动更新,所以他的权限一定要能够让ntpd写入才行。

4)keys[key_file]

除了restrict来限制客户端的连接之外,我们也可以通过密匙系统来给客户端认证,如此一来,可以让主机端放心了。

[[email protected] jboss6]#vim /etc/ntp.conf

#1、先处理权限方面的问题,包括放行上层服务器以及开放局域网用户来源

restrict default kod nomodify notrap nopeer noquery     拒绝IPv4的用户

restrict -6 default kod nomodify notrap nopeer noquery   拒绝IPv6的用户

restrict 220.130.158.71  放行tock.stdtime.gov.tw进入本NTP服务器

restrict 59.124.196.83   放行tick. stdtime.gov.tw进入本NTP服务器

restrict 59.124.196.84   放行time. stdtime.gov.tw进入本NTP服务器

restrict 127.0.0.1       这两个是默认值

restrict -6 ::1

restrict 192.168.10.0 mask 255.255.255.0 nomodify 放行局域网来源

#2、设置主机来源,可以先把本来的下面这些内容注释掉

# Use public servers from the pool.ntp.org project.

# Please consider joining the pool (http://www.pool.ntp.org/join.html).

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

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

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

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

server 220.130.158.71 prefer  以这台主机最为优先

server 59.124.196.83

server 59.124.196.84

#3、默认时间差异分析文件与咱不用的keys,不需要改变他

driftfile /var/lib/ntp/drift

keys /etc/ntp/keys

这样就设置好了

3、NTP的启动与观察

#1、启动NTP

[[email protected] zoneinfo]# /etc/init.d/ntpd start   启动

Starting ntpd:                                             [  OK  ]

[[email protected] zoneinfo]# chkconfig ntpd on   设置开机启动

[[email protected] zoneinfo]# tail /var/log/messages  查看日志信息

Jan 28 17:09:28 localhost ntpd[33990]: Deferring DNS for 1.rhel.pool.ntp.org 1

Jan 28 17:09:28 localhost ntpd[33990]: Deferring DNS for 2.rhel.pool.ntp.org 1

Jan 28 17:09:28 localhost ntpd[33990]: Deferring DNS for 3.rhel.pool.ntp.org 1

Jan 28 17:09:28 localhost ntpd[33990]: 0.0.0.0 c016 06 restart

Jan 28 17:09:28 localhost ntpd[33990]: 0.0.0.0 c012 02 freq_set kernel 0.000 PPM

Jan 28 17:09:28 localhost ntpd[33990]: 0.0.0.0 c011 01 freq_not_set

Jan 28 17:09:30 localhost ntpd_intres[33992]: host name not found: 0.rhel.pool.ntp.org

Jan 28 17:09:30 localhost ntpd_intres[33992]: host name not found: 1.rhel.pool.ntp.org

Jan 28 17:09:30 localhost ntpd_intres[33992]: host name not found: 2.rhel.pool.ntp.org

Jan 28 17:09:30 localhost ntpd_intres[33992]: host name not found: 3.rhel.pool.ntp.org

#2、查看启动的端口

[[email protected] zoneinfo]# netstat -tlunp | grep ntp

udp    0   0 192.168.211.128:123         0.0.0.0:*       33990/ntpd

udp    0   0 127.0.0.1:123               0.0.0.0:*       33990/ntpd

udp    0   0 0.0.0.0:123                 0.0.0.0:*       33990/ntpd

udp    0   0 fe80::20c:29ff:fe82:6e49:123 :::*              33990/ntpd

udp    0   0 ::1:123                     :::*            33990/ntpd

udp    0   0 :::123                      :::*            33990/ntpd

#主要是UDP数据包,并且在port 123这个端口

这就表示我们的NTP服务器已经启动了不过要与上层NTP服务器连接还需要一些时间,通常启动NTP后约在15分钟内才会和上层NTP服务器顺利连接上。那要如何确认我们的NTP服务器已经顺利地更新了自己的时间呢?

[[email protected] zoneinfo]# ntpstat   这是我自己的虚拟机,没有上层服务器

unsynchronised

time server re-starting

polling server every 8 s

[[email protected] zoneinfo]# ntpstat  鸟哥的例子

synchronized to NTP server (220.130.158.71) at stratum 3

time correct to within 538 ms

polling server every 128 s

这个命令可以列出我们的NTP服务器是否已经与上层连接。由上述的输出结果可以知道,时间已经校正约538ms,且每隔128秒会主动去更新时间。

[[email protected] zoneinfo]# ntpq –p

这个命令可以列出当前我们的NTP与相关上层NTP的状态。

4、安全性设置

服务器防火墙在UDP port 123上打开

[[email protected] zoneinfo]# vi /etc/sysconfig/iptables

iptables –A INPUT –I $EXTIF –p udp –s 192.168.100.0/24 –dport 123 –j  ACCEPT

四、客户端时间更新方式

1、Linux手动校时工作:date hwclock

date MMDDhhmmYYYYY 月份 日期 小时 分钟 公元年

[[email protected] zoneinfo]# date 012809511016

date: cannot set date: Invalid argument

Sun Jan 28 09:51:00 LMT 1016

[[email protected] zoneinfo]#hwclock [-rw]

-r:read 读出当前BIOS内的时间参数

-w:write,将目前的linux系统时间写入BIOS中

查阅BIOS时间,并且写入更改过的时间

[[email protected] zoneinfo]# date ;hwclock –r

[[email protected] zoneinfo]# hwclock –w;hwclock –r;date

[[email protected] zoneinfo]# date 012809572016

Thu Jan 28 09:57:00 CST 2016

[[email protected] zoneinfo]# date

Thu Jan 28 09:57:11 CST 2016

[[email protected] zoneinfo]# hwclock -r

Thu 28 Jan 2016 05:58:18 PM CST  -0.283336 seconds

[[email protected] zoneinfo]# hwclock -w

[[email protected] zoneinfo]# hwclock -r

Thu 28 Jan 2016 09:57:30 AM CST  -0.095152 seconds

[[email protected] zoneinfo]# date

Thu Jan 28 09:57:34 CST 2016

[[email protected] zoneinfo]#

2、Linux的网络校时

因为NTP服务器本来就会与上层时间服务器进行时间的同步化,所以默认情况下,NTP服务器不可以使用ntpdate。即ntpdate与ntpd不能同时启用。

[[email protected] zoneinfo]#ntpdate 192.168.100.254 服务器

客户端最好也启动一下NTP服务,通过NTP去主动的更新时间。

[[email protected] zoneinfo]#ntpdate 192.168.100.254

[[email protected] zoneinfo] #vi /etc/ntp.conf

restrict 192.168.100.254  放行服务器来源

server 192.168.100.254   这就是服务器

[[email protected] zoneinfo]#/etc/init.d/ntpd start

[[email protected] zoneinfo]#chkconfig ntpd on

这样Client计算机就会主动到NTP服务器上去更新时间了。

不这样也可以

[[email protected] zoneinfo]#vi /etc/crontab

10 5 * * * root (/usr/sbin/ntpdate tock.ssdtime.gov.tw && /sbin/hwclock –w) &>/dev/null

这样每天05:10LINUX系统就会自动进行网络校时。

时间: 2024-10-05 23:26:45

鸟哥服务器架设——NTP服务器搭建的相关文章

分布式系统卫星时钟服务器(NTP服务器)架设与设计

分布式系统卫星时钟服务器(NTP服务器)架设与设计 分布式系统卫星时钟服务器(NTP服务器)架设与设计 本文由安徽京准科技提供支持和原资料——更多阐述可参考微♥ ahjzsz  分布式系统由Tanenbaum定义,“分布式系统是一组独立的计算机,在”分布式系统?—?原理和范例“中作为用户的单一,连贯的系统出现”. 区块链通过构建全球分布式系统,尝试实现分散的新数据存储和组织结构. 首先,定位到分布式系统的原因主要是可扩展性,位置和可用性.区块链也不例外.地理可扩展性,形成全球价值存储网络/信息保

自学鸟哥linux服务-NTP时间服务器

实验机:CentOS 6.5 IPADDR=192.168.1.229 rqm -qa |grep ntp 没安装,先安装 yum -y intall ntp 配置文件位置 vim /etc/ntp.conf driftfile /var/lib/ntp/drift  #这个代表上层服务与本机主板时钟之间时间差别记录在这个文件里 restrict  #管理权限 restrict default kod nomodify notrap nopeer noquery   #拒绝IPV4用户 rest

Linux学习随笔5——搭建ntp服务器

2015.8.30 ntp服务器 NTP服务器(Network Time Protocol),是用来做局域网服务器时间同步的,保证局域网内的服务器与时间服务器的一致,某些应用对实时性要求比较的应用必须统一时间 互联网上也存在很多时间服务器, pool.ntp.org(官方NTP时间服务器) ntp服务器需要开启123端口 (UDP), 查看Linux系统中的被打开的端口 :netstat -an 打开本地防火墙的123端口: vi /etc/sysconfig/iptables中 添加一条规则

ntp服务器的价格分析

ntp服务器的价格取决于很多因素,要了解ntp服务器的价格首先我们需要了解ntp服务器是什么.ntp服务器通常是以NTP网络时间协议进行授时的时间服务器,NTP网络时间协议是能同步计算机的协议.ntp服务器以卫星信号为时间基准,并输出NTP网络.串口.秒脉冲等时间信息对设备进行校时,它可以提供高精度的时间信息. ntp服务器是在网络计算机上同步计算机时钟的协议,ntp所使用的时间信息为UTC时间并对计算机的时间进行同步,时间精度为毫秒级.ntp服务器可以识别检查对时信息,以确定时间信息是否是真正

鸟哥的Linux私房菜(基础学习,服务器架设)

纪念下吧:2014年大连的第一场雪,12月1号,早上出门就看见漫天飘着雪花,其实,还是很漂亮的! 自学过Linux的同学应该对<鸟哥的Linux私房菜>不会陌生,鸟哥分成两个部分来写,第一本就是<鸟哥的Linux私房菜--基础学习篇>,另一本就叫做<鸟哥的Linux私房菜--服务器架设篇>,第一本的内容大多是讲一些实用命令的,非常适合Linux的初学者去学习,第二本书的主要内容是讲一些网络协议,适合喜欢搞Linux网络的同学去学习,而鸟哥本人又无私的把他的两本书放到了网

CentOS6.5系统搭建NTP服务器

在进入到我们的主题之前首先我们可以简单了解一下这几个名词 Atomic Clock: 现在计算时间最准确的是使用 原子震荡周期 所计算的物理时钟(Atomic Clock),因此也被定义为标准时间(International Atomic Time) UTC(coordinated Universal Time): 协和标准时间 就是利用 Atomic Clock 为基准定义出来的正确时间 (世界统一时间,世界标准时间,国际协调时间) 硬件时钟: 硬件时钟是指嵌在主板上的特殊的电路, 它的存在就

Linux NTP 服务器搭建

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

docker 搭建ntp服务器

背景 在搭建etcd集群时,如果主机时间相差太多会出现同步错误,如果外部网络不可用时,需要使用内部的ntp服务器同步时间. 构建ntp镜像 创建Dockerfile # usage: # docker build -t ntp . # docker run docker run -d --name ntp-server -p 123:123 -v /etc/localtime:/etc/localtime:ro -v /etc/timezone:/etc/timezone:ro ntp from

Linux下NTP服务器搭建

一.搭建准备 1.确定自己的时区 #date命令可以查看当前系统时间,中国的时区为CST.使用tzselect命令进行配置时区 配置文件的修改:/etc/sysconfig/clock 2.检查NTP服务程序 #rpm -qa |grep ntp fontpackages-filesystem-1.41-1.1.el6.noarch ntpdate-4.2.4p8-3.el6.x86_64 如果没有,则需要安装ntp程序 #yum -y install ntp ntpdate 需要配置好yum源