📄 0440ntp.htm
字号:
</ul><font color="#000000" face="SimSun"> </font><li><font color="#000099">与 NTP 及时间有关的执行档:</font></li><br> <ul><li><b><font color="#000066" face="SimSun">/bin/date</font></b>:这个是Linux 系统上面常见的日期与时间输出指令,用途很广喔!除了输出时间外,也可以修改时间。</li><br> <li><b><font color="#000066" face="SimSun">/sbin/hwclock</font></b>:这是一个root 才能执行的指令,因为 Linux 系统上面 BIOS 时间与 Linux 系统时间是分开的,所以使用date 这个指令调整了时间之后,还需要使用 hwclock 才能将修改过后的时间写入BIOS 当中!</li><br> <li><b><font color="#000066" face="SimSun">/usr/sbin/ntpd</font></b>:这就是NTP 的主要 daemon 档案啦!得要启动他才能提供 NTP 服务。注意,这个指令预设会参考/etc/ntp.conf 里面的设定喔!</li><br> <li><b><font color="#000066" face="SimSun">/usr/sbin/ntpdate</font></b>:这个就是Client 端用来连接 NTP Server 的主要执行档啰!如果您没有要启用 NTP 而仅想要使用NTP Client 功能的话,那么只会用到这个指令而已啦!</li><br> <li><b><font color="#000066" face="SimSun"><a href="#ntptrace">/usr/sbin/ntptrace</a></font></b>:这个指令可以用来追踪某部时间服务器的时间对应关系,这也是个很有用的指令喔!底下我们会介绍如何使用这支程序!</li></ul> </ul><hr width="100%"><a name="server_partition"></a><font color="#000099">主机的规划技巧建议</font><br> <br>因为 NTP daemon 并没有花费什么硬盘空间,所以主机的规划上面就没有太多的考虑了!<br> <br><hr width="100%"><a name="server_ntp.conf"></a><font color="#000099">编辑主要设定档/etc/ntp.conf</font><br> <br>在 NTP Server 的设定上面,其实最好不要对 Internet 无限制的开放,尽量仅提供您自己内部的Client 端联机进行网络校时就好。此外, NTP Server 总也是需要网络上面较为准确的主机来自行更新自己的时间啊,所以在我们的NTP Server 上面也要找一部最靠近自己的 Time Server 来进行自我校正喔!事实上,就如同前面的说明,NTP 这个服务也是 Server/Client 的一种模式 (当然也提供 Peer/Peer ,不过我们这里主要讨论Server/Client 的架构 ) ,在 Internet 上面提供了多部主要的 (Primary) 时间服务器,如下的网页连结所示。不过,虽然Primary Time Servers 不少,然而 Client 数量更是大的惊人,为了不让 Primary的时间服务器负载太大,所以就有 Secondary (次要的) 时间服务器的出现了!这个Secondary 主要就是利用 Primary 主机进行时间调校后,再提供 Internet 上面的Client 进行校时。<br> <ul><li><font color="#000066">主要时间服务器:<a href="http://www.eecis.udel.edu/%7Emills/ntp/clock1a.html" target="_blank">http://www.eecis.udel.edu/~mills/ntp/clock1a.html</a></font></li><li><font color="#000066">次要时间服务器:<a href="http://www.eecis.udel.edu/%7Emills/ntp/clock2a.html" target="_blank">http://www.eecis.udel.edu/~mills/ntp/clock2a.html</a></font></li></ul> <br>如果想要在台湾地区进行网络校时,那么<font color="#000066">time.stdtime.gov.tw</font>这个国家单位的第二层主机 ( <font color="#000066" face="SimSun">stratum-2</font>) 应该是比较合适的!一般来说,我们在进行 NTP 主机的设定时,都会先选择数部上层的Time Server 来做为我们这一部 NTP Server 的校正之用,选择多部的原因是因为可以避免因为某部时间服务器突然挂点时,其它主机仍然可以提供我们的NTP 主机来自我更新啊!然后我们的 NTP Server 才提供给自己的 Client 端更新时间。如此一来,国家单位的time.stdtime.gov.tw 负载才不会太大,而我们的 Client 也可以很快速的达到校时的动作!<br> <br>这里还是需要注意一下,台湾地区的主要 ( 或称为第一层 stratum-1 ) 时间服务器IP 为:<ul><li><font color="#000066">210.59.157.40</font></li><li><font color="#000066">210.59.157.41</font></li><li><font color="#000066">210.59.157.151</font></li></ul>而第二层的主机有很多,例如:<ul><li><font color="#000066">210.59.157.10</font></li><br><font color="#000066">210.59.157.30</font><br><font color="#000066">202.39.157.155</font></ul> <br>基于上面的说明,我的 NTP 服务器主要的设定项目是这样的:<br> <ul><li><font color="#000066">以上面提到的六部时间服务器作为我的 NTP server 的上层主机;</font></li><li><font color="#000066">不对 Internet 提供公开的服务,仅针对内部网域 192.168.0.0/24提供服务;</font></li><li><font color="#000066">亦对网络上 192.168.100.20 这个 IP 提供服务;</font></li><li><font color="#000066">内部私有网络的网络校时不需要认证机制;</font></li></ul> <br>这样的设定真的是很简单喔!我们就来设定一下吧!<br> <table bgcolor="#000000" border="1" cols="1" width="550"><tbody><tr><td><font size="-1" face="SimSun"><font color="#ffffff">[root@testroot]#</font><font color="#ffff00"> vi /etc/ntp.conf</font></font><br><font size="-1" color="#ff6666" face="SimSun"># 1. 关于权限设定部分</font><br><font size="-1" color="#ff6666" face="SimSun"># 权限的设定主要以restrict 这个参数来设定,主要的语法为:</font><br><font size="-1" color="#ff6666" face="SimSun">#</font><br><font size="-1" color="#ffffcc" face="SimSun"># restrictIP mask netmask_IP parameter</font><br><font size="-1" color="#ff6666" face="SimSun">#</font><br><font size="-1" color="#ff6666" face="SimSun"># 其中 IP可以是软件地址,也可以是 default ,default 就类似 0.0.0.0 咯!</font><br><font size="-1" color="#ff6666" face="SimSun"># 至于 paramter则有:</font><br><font size="-1" color="#ff6666" face="SimSun"># ignore :关闭所有的NTP 联机服务</font><br><font size="-1" color="#ff6666" face="SimSun"># nomodify:表示Client 端不能更改 Server 端的时间参数,不过,</font><br><font size="-1" color="#ff6666" face="SimSun"># Client端仍然可以透过 Server 端来进行网络校时。</font><br><font size="-1" color="#ff6666" face="SimSun"># notrust:该 Client 除非通过认证,否则该 Client 来源将被视为不信任网域</font><br><font size="-1" color="#ff6666" face="SimSun"># noquery:不提供 Client 端的时间查询</font><br><font size="-1" color="#ff6666" face="SimSun"># 如果 paramter完全没有设定,那就表示该 IP (或网域) 『没有任何限制!』</font><br><font size="-1" color="#ff6666" face="SimSun">#</font><br><font size="-1" color="#ff6666" face="SimSun"># 在我们这个例子当中,因为拒绝所有,仅开放192.168.0.0/24 ,</font><br><font size="-1" color="#ff6666" face="SimSun"># 并且让127.0.0.1 以及本机 IP 192.168.0.2 可以不受限制,所以:</font><br><font size="-1" face="SimSun"><font color="#ffff00">restrict defaultignore </font><font color="#ff6666"># 关闭所有的 NTP 要求封包</font></font><br><font size="-1" face="SimSun"><font color="#ffff00">restrict 127.0.0.1 </font><font color="#ff6666">#开启内部递归网络接口 lo</font></font><br><font size="-1" face="SimSun"><font color="#ffff00">restrict 192.168.0.2 </font><font color="#ff6666"># 主机本身的 IP 也同时开启!</font></font><br><font size="-1" color="#ffff00" face="SimSun">restrict 192.168.100.20mask 255.255.255.255 nomodify</font><br><font size="-1" color="#ff6666" face="SimSun"># 针对另一个IP 开放让他可以更新时间!</font><br><font size="-1" color="#ffff00" face="SimSun">restrict 192.168.0.0mask 255.255.255.0 nomodify</font><br><font size="-1" color="#ff6666" face="SimSun"># 在网域里面的client 可以进行网络校时,但不会影响 Server !</font><br><font size="-1" color="#ffffff" face="SimSun"> </font><br><font size="-1" color="#ff6666" face="SimSun"># 2. 上层主机的设定</font><br><font size="-1" color="#ff6666" face="SimSun"># 上层主机我们选择time.stdtime.gov.tw ,要设定上层主机主要以 server </font><br><font size="-1" color="#ff6666" face="SimSun"># 这个参数来设定,语法为:</font><br><font size="-1" color="#ff6666" face="SimSun">#</font><br><font size="-1" color="#ffffcc" face="SimSun"># server[IP|FQDN] [prefer]</font><br><font size="-1" color="#ff6666" face="SimSun">#</font><br><font size="-1" color="#ff6666" face="SimSun"># Server后面接的就是我们上层 Time Server 啰!而如果 Server 参数</font><br><font size="-1" color="#ff6666" face="SimSun"># 后面加上perfer 的话,那表示我们的 NTP 主机主要以该部主机来作为</font><br><font size="-1" color="#ff6666" face="SimSun"># 时间校正的对应。另外,为了解决更新时间封包的传送延迟动作,</font><br><font size="-1" color="#ff6666" face="SimSun"># 所以可以使用driftfile 来规定我们的主机</font><br><font size="-1" color="#ff6666" face="SimSun"># 在与 TimeServer 沟通时所花费的时间,可以记录在 driftfile </font><br><font size="-1" color="#ff6666" face="SimSun"># 后面接的档案内,例如下面的范例中,我们的NTP server 与 </font><br><font size="-1" color="#ff6666" face="SimSun"># time.stdtime.gov.tw联机时所花费的时间会记录在 /etc/ntp/drift 档案内</font><br><font size="-1" color="#ff6666" face="SimSun"># 先输入第二层主机的IP</font><br><font size="-1" color="#ffff00" face="SimSun">server 210.59.157.10 prefer</font><br><font size="-1" color="#ffff00" face="SimSun">server 210.59.157.30 prefer</font><br><font size="-1" color="#ffff00" face="SimSun">server 202.39.157.155 prefer</font><br><font size="-1" color="#ff6666" face="SimSun"># 第一层的主机就列为参考用!</font><br><font size="-1" color="#ffff00" face="SimSun">server 210.59.157.40</font><br><font size="-1" color="#ffff00" face="SimSun">server 210.59.157.41</font><br><font size="-1" color="#ffff00" face="SimSun">server 202.39.157.151</font><br><font size="-1" color="#ff6666" face="SimSun"># 当然要让Server 可以进入我们的 NTP 主机啦!权限要开放啊!</font><br><font size="-1" color="#ffff00" face="SimSun">restrict 210.59.157.10</font><br><font size="-1" color="#ffff00" face="SimSun">restrict 210.59.157.30</font><br><font size="-1" color="#ffff00" face="SimSun">restrict 202.39.157.155</font><br><font size="-1" color="#ffff00" face="SimSun">restrict 210.59.157.40</font><br><font size="-1" color="#ffff00" face="SimSun">restrict 210.59.157.41</font><br><font size="-1" color="#ffff00" face="SimSun">restrict 202.39.157.151</font><br><font size="-1" color="#ffff00" face="SimSun">driftfile /etc/ntp/drift</font></td></tr></tbody></table> <br>在上面的设定当中,最有趣的应该要算 <font color="#000066">driftfile</font>那个咚咚了!因为我们的 NTP Server 本身的时间计算是依据 BIOS 的芯片震荡周期频率来计算的,但是这个数值与上层Time Server 不见得会一致啊!所我 NTP 这个 daemon 会自动的去计算我们自己主机的频率与上层Time server 的频率,并且将两个频率的误差记录下来,记录下来的档案就是在driftfile 后面接的完整档名当中了!我们这里是以预设的档案 /etc/ntp/drift来设定,您也可以自行设定其它的档名,不过请注意:<ul><li><font color="#000066">driftfile 后面接的档案需要使用完整路径文件名;</font></li><li><font color="#000066">该档案不能是连结档;</font></li><li><font color="#000066">该档案需要设定成 ntpd 这个 daemon 可以写入的权限。</font></li></ul>driftfile 后面接的档案会被 ntpd 自动更新,所以他的权限一定要能够让 ntpd写入才行。在 Red Hat 9 预设的 NTP 服务器中,使用的 ntpd 的 owner 是 ntp,所以 /etc/ntp/drift 需要设定成 ntp 这个 user 可以写入喔!至于 owner 怎么会是ntp 呢?请查阅 /etc/sysconfig/ntpd 就可以知道啦!而 /etc/ntp/drift 的内容则是仅有一行,里面的数据是具有小数点的浮点数字,单位则是百万分之一(ppm)。<br> <br>事实上 ntp.conf 里头还有很多很有趣的设定,例如认证的机制、登入的 Client观察以及其它的相关设定等等,不过这里我们就不多加介绍了!<br> <br><hr width="100%"><a name="server_startandlook"></a><font color="#000099">NTP的启动与观察</font><br> <br>在设定好了 ntp.conf 之后,就可以来启动 NTP 这个 Time Server 了!我们可以这样做喔:<br> <table bgcolor="#000000" border="1" cols="1" width="550"><tbody><tr><td><font size="-1" face="SimSun"><font color="#ffffff">[root@testroot]# </font><font color="#ffff00">/etc/rc.d/init.d/ntpd start</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">[root@testroot]# </font><font color="#ffff00">netstat -unl | grep 123</font></font><br><font size="-1" color="#ffffff" face="SimSun">udp       0      0 192.168.0.2:123        0.0.0.0:*</font><br><font size="-1" color="#ffffff" face="SimSun">udp       0      0 127.0.0.1:123          0.0.0.0:*</font><br><font size="-1" color="#ffffff" face="SimSun">udp       0      0 0.0.0.0:123            0.0.0.0:*</font><br><font size="-1" color="#ff6666" face="SimSun"># 请注意喔,NTP使用的是 UDP 的封包!而且 port number 为 123,</font><br><font size="-1" color="#ff6666" face="SimSun"># 此外,我有两个接口,以及对外提供服务,所以自然就会有三个!</font><br><font size="-1" color="#ffffff" face="SimSun"> </font><br><font size="-1" face="SimSun"><font color="#ffffff">[root@testroot]# <a name="ntptrace"></a></font><font color="#ffff00">ntptrace192.168.0.2</font></font><br><font size="-1" color="#ffffff" face="SimSun">192.168.0.2:stratum 3, offset 0.000056, synch distance 0.65865</font><br><font size="-1" color="#ffffff" face="SimSun">210.59.157.10:stratum 2, offset -0.228265, synch distance 0.22488</font><br><font size="-1" color="#ffffff" face="SimSun">ntp0.usno.navy.mil:stratum 1, offset -0.250685, synch distance 0.00038,</font><p><font size="-1" color="#ff6666" face="SimSun"># 我们也可以利用ntptrace 来追踪一下到底我们的主机有没有正确的先经过</font><br><font size="-1" color="#ff6666" face="SimSun"># 上层 TimeServer 的校时了呢?如上所示,我们的主机 192.168.0.2 </font><br><font size="-1" color="#ff6666" face="SimSun"># 是第三层的时间服务器(stratum 3),与目前本机的时间误差(offset)</font><br><font size="-1" color="#ff6666" face="SimSun"># 以及若要同步更新时(synchdistance)的时间损耗,同时,也会将这个第三层</font><br><font size="-1" color="#ff6666" face="SimSun"># 对哪一部第二层主机进行校时也列出来!有时候您会发现这样的错误讯息:</font><br><font size="-1" color="#ffffcc" face="SimSun">192.168.0.2:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -