鸟哥服务器架设——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那个文件。

[root@localhost 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来限制客户端的连接之外,我们也可以通过密匙系统来给客户端认证,如此一来,可以让主机端放心了。

[root@nhrproject 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

[root@localhost zoneinfo]# /etc/init.d/ntpd start   启动

Starting ntpd:                                             [  OK  ]

[root@localhost zoneinfo]# chkconfig ntpd on   设置开机启动

[root@localhost 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、查看启动的端口

[root@localhost 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服务器已经顺利地更新了自己的时间呢?

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

unsynchronised

  time server re-starting

   polling server every 8 s

[root@localhost 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秒会主动去更新时间。

[root@localhost zoneinfo]# ntpq –p

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

4、安全性设置

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

[root@localhost 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 月份 日期 小时 分钟 公元年

[root@localhost zoneinfo]# date 012809511016

date: cannot set date: Invalid argument

Sun Jan 28 09:51:00 LMT 1016

[root@localhost zoneinfo]#hwclock [-rw]

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

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

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

[root@localhost zoneinfo]# date ;hwclock –r

[root@localhost zoneinfo]# hwclock –w;hwclock –r;date


[root@localhost zoneinfo]# date 012809572016

Thu Jan 28 09:57:00 CST 2016

[root@localhost zoneinfo]# date

Thu Jan 28 09:57:11 CST 2016

[root@localhost zoneinfo]# hwclock -r

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

[root@localhost zoneinfo]# hwclock -w

[root@localhost zoneinfo]# hwclock -r

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

[root@localhost zoneinfo]# date

Thu Jan 28 09:57:34 CST 2016

[root@localhost zoneinfo]#

2、Linux的网络校时

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

[root@localhost zoneinfo]#ntpdate 192.168.100.254 服务器

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

[root@localhost zoneinfo]#ntpdate 192.168.100.254

[root@localhost zoneinfo] #vi /etc/ntp.conf

restrict 192.168.100.254  放行服务器来源

server 192.168.100.254   这就是服务器

[root@localhost zoneinfo]#/etc/init.d/ntpd start

[root@localhost zoneinfo]#chkconfig ntpd on

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

不这样也可以

[root@localhost zoneinfo]#vi /etc/crontab

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

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

本文转自aaa超超aaa 51CTO博客,原文链接:http://blog.51cto.com/10983441/1739431



相关文章
|
2月前
|
弹性计算 数据安全/隐私保护
2024年阿里云雾锁王国/Enshrouded服务器搭建架设教程(保姆级)
随着游戏行业的日新月异,玩家们对游戏体验的期待也不断攀升。阿里云针对这一需求,推出了快速、便捷的游戏联机服务器一键部署方案。在本篇教程中,我们将向大家展示如何在短短的10秒钟内,利用阿里云服务器轻松搭建雾锁王国游戏服务器,为您的游戏体验增添更多流畅与顺畅。跟随我们的步骤,让您的游戏世界更加精彩!
|
2月前
|
弹性计算 Linux 数据安全/隐私保护
1分钟幻兽帕鲁社区服务器搭建架设开服教程(Linux)
1分钟幻兽帕鲁社区服务器搭建架设开服教程(Linux)玩转幻兽帕鲁服务器,幻兽帕鲁Palworld多人游戏专用服务器一键部署教程,阿里云推出新手0基础一键部署幻兽帕鲁服务器教程,傻瓜式一键部署,3分钟即可成功创建一台Palworld专属服务器,成本仅需26元,阿里云百科分享2024年新版基于阿里云搭建幻兽帕鲁服务器教程
72 3
|
2月前
|
Linux 应用服务中间件 nginx
国服浪潮服务器操作系统——KeyarchOS多容器架设体验心得
国服浪潮服务器操作系统——KeyarchOS多容器架设体验心得
55 0
|
2月前
|
弹性计算 Ubuntu Linux
帕鲁服务器多少钱?2024年幻兽帕鲁服务器搭建架设教程(保姆级)
帕鲁服务器多少钱?阿里云帕鲁服务器26.52元1个月在帕鲁的世界中,与神奇的生物共度悠闲时光是一种无与伦比的乐趣。然而,有时官方服务器的不稳定性可能会给游戏体验带来延迟和卡顿。 为了告别这些问题,部署自己的幻兽帕鲁服务器成为了一个不错的选择。通过搭建专属的游戏服务器(Dedicated Server),和小伙伴们获得一个专属的服务空间,获得顺畅流畅的游戏体验。 在本文中,我们将介绍如何使用自己的服务器来部署属于自己的幻兽帕鲁服务器,与小伙伴们共同展开一场精彩的冒险之旅。
146 0
|
安全 Linux 网络架构
架设个人FTP服务器的三种方法
架设个人FTP服务器的三种方法
架设个人FTP服务器的三种方法
|
弹性计算 Linux Windows
mc服务器架设的ECS使用体验
mc服务器架设的ECS使用体验
如何架设自己的 SAP UI5 资源服务器
如何架设自己的 SAP UI5 资源服务器
116 0
如何架设自己的 SAP UI5 资源服务器
如何架设自己的 SAP UI5 资源服务器
我写了一套适合 SAP UI5 初学者使用的教程,链接在此。
如何架设自己的 SAP UI5 资源服务器
|
弹性计算 Linux
利用ecs架设我的世界服务器
一直想陪同学联机玩我的世界,看到阿里云能白嫖ecs我就来了
|
弹性计算 网络协议 安全
阿里云ECS架设Minecraft服务器初体验
阿里云ECS架设Minecraft服务器实操与体验
1725 0
阿里云ECS架设Minecraft服务器初体验

热门文章

最新文章