|
最近更新日期:2011年07月29日
15.2 NTP 服务器的安装与设定
15.2.1 所需软件与软件结构 15.2.2 主要配置文件 ntp.conf 的处理 15.2.3 NTP 的启动与观察: ntpstat, ntpq 15.2.4 安全性设定 大标题的图示15.2 NTP 服务器的安装与设定 NTP 服务器也是一个很容易就可以架设成功的玩意儿,不过这个软件在不同的 distribution 上面可能有不一样的名称,
你要作的其实就是将他安装起来之后,规定一部上层 NTP 服务器来同步化你的时间即可啊!
如果你只是想要进行你自己单部主机的时间同步化,别架设 NTP ,直接使用 NTP 客户端软件即可喔! 小标题的图示15.2.1 所需软件与软件结构 在 CentOS 6.x 上头,你所需要的软件其实仅有 ntp 这个玩意儿而已,请自行使用 rpm 去找找看,若没有安装,请利用 yum install ntp 即可啊!不过,我们还需要时区相关的数据文件,所以你需要的软件有:
与时间及 NTP 服务器设定相关的配置文件与重要数据文件有底下几个:
至于在常用于时间服务器与修改时间的指令方面,主要有底下这几个啦:
例题:
假设你的笔记本电脑安装 CentOS 这套系统,而且选择的时区为台湾。现在,你将有一个月的时间要出差到美国的纽约去,
你会带着这个笔电,那么到了美国之后,时间会不一致啊!你该如何手动的调整时间参数呢?
答:
因为时区数据文件在 /usr/share/zoneinfo 内,在该目录内会找到 /usr/share/zoneinfo/America/New_York 这个时区档。
而时区配置文件在 /etc/sysconfig/clock ,且目前的时间格式在 /etc/localtime ,所以你应该这样做:
[root@www ~]# date Thu Jul 28 15:08:39 CST 2011 <==重点是 CST 这个时区喔! [root@www ~]# vim /etc/sysconfig/clock ZONE="America/New_York" <==改的是这里啦! [root@www ~]# cp /usr/share/zoneinfo/America/New_York /etc/localtime [root@www ~]# date Thu Jul 28 03:09:21 EDT 2011 <==时区与时间都改变了! |
接下来,我们先来谈一谈如何设计那个 /etc/ntp.conf 吧!
由于 NTP 服务器的设定需要有上游服务器的支持才行,因此请回头参考一下 15.1.4 及 15.1.5 的介绍,这样才能够理解为何底下的设定是这样呦!好了,我假设俺的 NTP 服务器所需要设定的架构如下:
好了,先让我们谈一谈如何在 ntp.conf 里面设定权限控制吧!
在 ntp.conf 档案内可以利用『 restrict 』来控管权限,这个参数的设定方式为:
restrict [你的IP] mask [netmask_IP] [parameter]
其中 parameter 的参数主要有底下这些:
那如果你没有在 parameter 的地方加上任何参数的话,这表示『该 IP
或网段不受任何限制』的意思喔!一般来说,我们可以先关闭 NTP
的权限,然后再一个一个的启用允许登入的网段。
上层 NTP 服务器的设定方式为:
server [IP or hostname] [prefer]
在 server 后端可以接 IP 或主机名,鸟哥个人比较喜欢使用 IP 来设定说!至于那个 perfer
表示『优先使用』的服务器啰〜有够简单吧!
设定的方式如下:
driftfile [可以被 ntpd 写入的目录与档案]
因为预设的 NTP Server 本身的时间计算是依据 BIOS 的芯片震荡周期频率来计算的,但是这个数值与上层 Time Server 不见得会一致啊!所以 NTP 这个 daemon (ntpd) 会自动的去计算我们自己主机的频率与上层 Time server 的频率,并且将两个频率的误差记录下来,记录下来的档案就是在 driftfile 后面接的完整档名当中了!关于档名你必须要知道:
driftfile 后面接的档案会被 ntpd 自动更新,所以他的权限一定要能够让 ntpd 写入才行。在 CentOS 6.x
预设的 NTP 服务器中,使用的 ntpd 的 owner 是 ntp ,这部份可以查阅 /etc/sysconfig/ntpd 就可以知道啦!
除了以 restrict 来限制客户端的联机之外,我们也可以透过密钥系统来给客户端认证,
如此一来可以让主机端更放心了。不过在这个章节里面我们暂不讨论这个部分,有兴趣的朋友可以参考 ntp-keygen
这个指令的相关说明喔!
根据上面的说明,我们最终可以取得这样的配置文件案内容喔 (底下仅修改部分数据,保留大部分的设定值喔)!
[root@www ~]# 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.100.0 mask 255.255.255.0 nomodify <==放行区网来源 # 2. 设定主机来源,请先将原本的 [0|1|2].centos.pool.ntp.org 的设定批注掉: 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
这样就设定妥当了,准备来启动 NTP 服务吧!
设定完 ntp.conf 之后就可以启动 ntp 服务器了。启动与观察的方式如下:
# 1. 启动 NTP [root@www ~]# /etc/init.d/ntpd start [root@www ~]# chkconfig ntpd on [root@www ~]# tail /var/log/messages <==自行检查看看有无错误 # 2. 观察启动的埠口看看: [root@www ~]# netstat -tlunp | grep ntp Proto Recv-Q Send-Q Local Address Foreign Address PID/Program name udp 0 0 192.168.100.254:123 0.0.0.0:* 3492/ntpd udp 0 0 192.168.1.100:123 0.0.0.0:* 3492/ntpd udp 0 0 127.0.0.1:123 0.0.0.0:* 3492/ntpd udp 0 0 0.0.0.0:123 0.0.0.0:* 3492/ntpd udp 0 0 ::1:123 :::* 3492/ntpd udp 0 0 :::123 :::* 3492/ntpd # 主要是 UDP 封包,且在 port 123 这个埠口的啦!
这样就表示我们的 NTP 服务器已经启动了,不过要与上层 NTP 服务器联机则还需要一些时间, 通常启动 NTP 后约在 15 分钟内才会和上层 NTP 服务器顺利连接上。 那要如何确认我们的 NTP 服务器有顺利的更新自己的时间呢?你可以使用底下几个指令来查阅喔 (请自行等待数分钟后再以下列指令查阅):
[root@www ~]# ntpstat
synchronised to NTP server (220.130.158.71) at stratum 3
time correct to within 538 ms
polling server every 128 s
这个指令可以列出我们的 NTP 服务器有跟上层联机否。由上述的输出结果可以知道,时间有校正约 538 * 10^(-3) 秒,且每隔 64 秒会主动去更新时间喔!
[root@www ~]# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*tock.stdtime.go 59.124.196.87 2 u 19 128 377 12.092 -0.953 0.942
+59-124-196-83.H 59.124.196.86 2 u 8 128 377 14.154 7.616 1.533
+59-124-196-84.H 59.124.196.86 2 u 2 128 377 14.524 4.354 1.079
这个 ntpq -p 可以列出目前我们的 NTP 与相关的上层 NTP 的状态,上头的几个字段的意义为:
事实上这个输出的结果告诉我们,时间真的很准了啦!因为差异都在 0.001 秒以内, 可以符合我们的一般使用了。另外,你也可以检查一下你的 BIOS 时间与 Linux 系统时间的差异, 就是 /var/lib/ntp/drift 这个档案的内容,就能了解到咱们的 Linux 系统时间与 BIOS 硬件时钟到底差多久?单位为 10^(-6) 秒啦!
要让你的 NTP Server/Client 真的能运作,在上述的动作中得注意:
NTP 服务器在安全的相关性方面,其实刚刚我们在 /etc/ntp.conf 里面的 restrict 参数中就已经设定了 NTP 这个 daemon 的服务限制范围了!不过,在防火墙 iptables 的部分,还是需要开启联机监听的啦!所以,在你的 iptables 规则的 scripts 当中,需要加入这一段 (我是以开放 192.168.100.0/24 这个网域作为范例的!)
[root@www ~]# vim /usr/local/virus/iptables/iptables.allow iptables -A INPUT -i $EXTIF -p udp -s 192.168.100.0/24 --dport 123 -j ACCEPT [root@www ~]# /usr/local/virus/iptables/iptables.rule
若还要开放其他的网段或者客户端主机,请自行修改 /etc/ntpd.conf 以及你的防火墙机制咯!
本网页主要以Firefox配合解析度 1024x768 作为设计依据 鸟哥自由软件整合应用研究室