⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 0440ntp.htm

📁 鸟哥的linux私房菜
💻 HTM
📖 第 1 页 / 共 5 页
字号:
		或网段不受任何限制</span>』的意思喔!一般来说,我们可以先关闭 NTP 
		的使用权限,然后在一个一个的启用允许登入的网段。<br /><br />
		</div>

		<hr /><li><span class=text_import1>利用 server 设定上层 NTP 伺服器</span></li>
		<div class=block2>
		上层 NTP 伺服器的设定方式为∶<br />

<table class="term"><tr><td class="term"><pre>
server [IP or hostname] [prefer]
</pre></td></tr></table>

		在 server 后端可以接 IP 或主机名称,鸟哥个人比较喜欢使用主机名称来设定说!
		至于那个 perfer 表示『优先使用』的主机棉~有够简单吧!<br /><br />
		</div>

		<hr /><li><span class=text_import1>以  driftfile 记录时间差异</span></li>
		<div class=block2>
		设定的方式如下∶<br />

<table class="term"><tr><td class="term"><pre>
driftfile [可以被 ntpd 写入的目录与档案]
</pre></td></tr></table>

		因为预设的 NTP Server 本身的时间计算是依据 BIOS 的晶片震荡周期频率来计算的,但是这个数值与上层 
		Time Server 不见得会一致啊!所以 NTP 这个 daemon (ntpd) 会自动的去计算我们自己主机的频率与上层 
		Time server 的频率,并且将两个频率的误差记录下来,记录下来的档案就是在 driftfile 
		后面接的完整档名当中了!关于档名你必须要知道∶
		<ul><span class=text_import2>
		<li>driftfile 后面接的档案需要使用完整路径档名;
		<li>该档案不能是连结档;
		<li>该档案需要设定成 ntpd 这个 daemon 可以写入的权限。
		<li>该档案所记录的数值单位为∶百万分之一秒 (ppm)。
		</span></ul>
		driftfile 后面接的档案会被 ntpd 自动更新,所以他的权限一定要能够让 ntpd 写入才行。在 CentOS 4.x 
		预设的 NTP 伺服器中,使用的 ntpd 的 owner 是 ntp ,这部份可以查阅 /etc/sysconfig/ntpd 就可以知道啦!
		</div>

		<hr /><li><span class=text_import1>keys [key_file]</span></li>
		<div class=block2>
		除了以 restrict 来限制用户端的连线之外,我们也可以透过金钥系统来给用户端认证,
		如此一来可以让主机端更放心了。不过在这个章节里面我们暂不讨论这个部分,
		有兴趣的朋友可以参考 ntp-keygen  这个指令的相关说明喔!<br /><br />
		</div>

		根据上面的说明,我们最终可以取得这样的设定档案内容喔!<br />

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>vi /etc/ntp.conf</span>
<span class=term_say># 在保留大部分的预设值的情况下,我们作了几个小部分的修改喔∶
# 1. 先处理权限方面的问题∶</span>
<span class=term_write>restrict default nomodify notrap noquery
restrict 220.130.158.71  <span class=term_say>&lt;==底下这三行在开放主机进入的权限</span>
restrict 220.130.158.51
restrict 220.130.158.52
restrict 127.0.0.1   mask 255.0.0.0  <span class=term_say>&lt;==内部与 LAN 的使用权限</span>
restrict 192.168.1.0 mask 255.255.255.0 nomodify</span>

<span class=term_say># 2. 设定主机来源!</span>
<span class=term_write>server 220.130.158.71 prefer  <span class=term_say>&lt;==以这部主机为最优先</span>
server 220.130.158.51
server 220.130.158.51</span>

<span class=term_say># 3.原本内定的一个内部时间资料,不需要更动他</span>
server  127.127.1.0     # local clock
fudge   127.127.1.0 stratum 10

<span class=term_say># 4. 就是那个时间差异分析的咚咚,保留预设值即可。</span>
driftfile /var/lib/ntp/drift
broadcastdelay  0.008

<span class=term_say># 5.暂时不会使用的 keys 相关认证功能。</span>
keys            /etc/ntp/keys
</pre></td></tr></table>

		然后准备一下修订一下 /etc/sysconfig/ntpd 吧!<br />

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>vi /etc/sysconfig/ntpd</span>
OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid"
SYNC_HWCLOCK=<span class=term_write>yes</span>
<span class=term_say># 将他改成 yes 吧!这样 BIOS 的时间也会跟著改变的!</span>
</pre></td></tr></table>

		这样就设定妥当了,准备来启动 NTP 服务吧!<br /><br />
	</div>

	<hr /><a NAME="server_start"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class="text_h2">NTP 的启动与观察</span><br />
	<div class=block2>
		设定完 ntp.conf 之后就可以启动 ntp 伺服器了。启动与观察的方式如下∶<br />

<table class="term"><tr><td class="term"><pre>
<span class=term_hd>1. 启动 NTP </span>
[root@linux ~]# <span class=term_command>/etc/init.d/ntpd start</span>

<span class=term_hd>2. 观察启动的埠口看看∶</span>
[root@linux ~]# <span class=term_command>netstat -tlunp</span>
Proto Recv-Q Send-Q Local Address      Foreign Address  PID/Program name
udp        0      0 192.168.1.254:123  0.0.0.0:*        15118/ntpd
udp        0      0 127.0.0.1:123      0.0.0.0:*        15118/ntpd
udp        0      0 0.0.0.0:123        0.0.0.0:*        15118/ntpd
udp        0      0 :::123             :::*             15118/ntpd
<span class=term_say># 主要是 UDP 封包,且在 port 123 这个埠口的啦!</span>
</pre></td></tr></table>

		这样就表示我们的 NTP 伺服器已经启动了,不过要与上层 NTP 伺服器连线则还需要一些时间,
		<span class=text_import2>通常启动 NTP 后约在 15 分钟内才会和上层 NTP 伺服器顺利连接上。</span>
		那要如何确认我们的 NTP 伺服器有顺利的更新自己的时间呢?你可以使用底下几个指令来查阅喔∶<br />

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>ntpstat</span>
synchronised to NTP server (220.130.158.71) at stratum 3
   time correct to within 495 ms
   polling server every 64 s
<span class=term_say># 这个指令可以列出我们的 NTP 伺服器有跟上层连线否。由上述的输出结果可以知道,
# 时间有校正约 495 * 10^(-6) 秒,且每格 64 秒会主动去更新时间喔!</span>
</pre></td></tr></table>


<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>ntptrace -n 127.0.0.1</span>
127.0.0.1: <span class=term_write>stratum 3</span>, offset -0.034965, synch distance 0.109233
220.130.158.71: <span class=term_write>stratum 2</span>, offset -0.000873, synch distance 0.031625
220.130.158.50: timed out, nothing received
***Request timed out
<span class=term_say># 这个指令则可以列出目前我们的 NTP 伺服器与上层 NTP 伺服器彼此之间的关系。
# 由于我们已经和第二层连接上,但第二层与第一层就不是我们能管理的棉。
# 所以那个 timed out 可以不理他没关系的。</span>
</pre></td></tr></table>

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>ntpq -p</span>
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*220-130-158-71. 220.130.158.50   2 u   53   64   77   36.800  -10.496   1.890
 220-130-158-51. .INIT.          16 u    -   64    0    0.000    0.000 4000.00
+220-130-158-51. 220.130.158.50   2 u   49   64   77   33.448  -10.431   2.581
 LOCAL(0)        LOCAL(0)        10 l   51   64   77    0.000    0.000   0.004
</pre></td></tr></table>

		这个 ntpq -p 可以列出目前我们的 NTP 与相关的上层 NTP 的状态,上头的几个栏位的意义为∶<br />

		<ul>
		<li><span class=text_import2>remote</span>∶亦即是 NTP 主机的 IP 或主机名称棉~注意最左边的符号,
		如果有『+』代表目前正在作用当中的上层 NTP ,如果是『*』代表也有连上线,不过是作为次要连线的 NTP 主机。
		<li style="padding: 5px 0 0 0"><span class=text_import2>refid</span>∶参考的上一层 NTP 主机的位址
		<li style="padding: 5px 0 0 0"><span class=text_import2>st</span>∶就是 stratum 阶层棉!
		<li style="padding: 5px 0 0 0"><span class=text_import2>when</span>∶几秒钟前曾经做过时间同步化更新的动作;
		<li style="padding: 5px 0 0 0"><span class=text_import2>poll</span>∶下一次更新在几秒钟之后;
		<li style="padding: 5px 0 0 0"><span class=text_import2>reach</span>∶已经向上层 NTP 伺服器要求更新的次数
		<li style="padding: 5px 0 0 0"><span class=text_import2>delay</span>∶网路传输过程当中延迟的时间,单位为 10^(-6) 秒
		<li style="padding: 5px 0 0 0"><span class=text_import2>offset</span>∶时间补偿的结果,单位与 10^(-6) 秒
		<li style="padding: 5px 0 0 0"><span class=text_import2>jitter</span>∶Linux 系统时间与 BIOS 硬体时间的差异时间,
		单位为 10^(-6) 秒。
		</ul>

		事实上这个输出的结果告诉我们,时间真的很准了啦!因为差异都在 0.0001 秒以内,
		可以符合我们的一般使用了。另外,你也可以检查一下你的 BIOS 时间与 Linux 系统时间的差异,
		就是 /var/lib/ntp/drift 这个档案的内容,就能了解到咱们的 Linux 系统时间与 BIOS
		硬体时钟到底差多久?单位为 10^(-6) 秒啦!<br /><br />
	</div>

	<hr /><a NAME="server_firewall"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class="text_h2">安全性设定</span><br />
	<div class=block2>
		NTP 伺服器在安全的相关性方面,其实刚刚我们在 /etc/ntp.conf 里面的 restrict 
		参数中就已经设定了 NTP 这个 daemon 的服务限制范围了!不过,在防火墙 iptables 
		的部分,还是需要开启连线监听的啦!所以,在您的 iptables 规则的 scripts 当中,需要加入这一段 
		(我是以开放 192.168.1.0/24 这个网域作为范例的!)<br />

<table class="term"><tr><td class="term"><pre>
<span class=term_write>iptables -A INPUT -p UDP -i $EXTIF -s 192.168.1.0/24  --dport 123 -j ACCEPT</span>
</pre></td></tr></table>

		若还要开放其他的网段或者主机,请自行修改您的防火墙机制咯!<br />
	</div>
</div>


<hr /><a NAME="client"></a><img src="images/penguin-m.gif" alt="大标题的图示" height="34" width="25" align="middle" /><span class="text_h1">用户端的时间更新方式</span><br />
<div class=block1>
	上头介绍了 NTP 伺服器的安装与设定,如果我们仅有十部不到的主机时,老实说,实在没有架设 NTP 伺服器的需求。
	只要能够在你的主机上头以 NTP 用户端软体来进行网路校时就能够同步化时间了,没必要时时刻刻进行时间的校正吧!^_^!
	底下我们会介绍几个重要的概念,了解一下为何电脑关机了时间还能够继续记忆呢?<br /><br />

	<hr /><a NAME="client_systime"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class="text_h2">Linux 系统时间与硬体时间</span><br />
	<div class=block2>
		在咱们的 Linux 作业系统当中其实有两个时间喔,分别是∶<br />
		<ul><span class=text_import2>
		<li>一个是 BIOS 记录的实际时间,这也是硬体所记录的;
		<li>一个是 Linux 自己的系统时间,由 1970/01/01 开始记录的时间参数。
		</span></ul>
		当 Linux 开机后,他会主动的读出 BIOS 所记录的时间,然后开始用自己的方式来计算时间了。
		当我们使用 date 之类的指令来查询或者是设定时间时,该时间指的仅是 Linux 的时间而已,
		并没有更动到 BIOS 内所记录的时间呐!除非你使用 hwclock 来写入或者是读出 BIOS 的时间。<br /><br />

		而由于 BIOS 会记录时间而且会持续计时,因此我们关机后再开机时,会发现时间其实是有顺利的累积上来的。
		为了要维持 BIOS 所记录的资讯,因此<span class=text_import2>主机板上面的电池就很重要了,
		因为他可以让 BIOS 在关机的时候还继续的记录硬体资讯以及维持时间的累计。</span>
		所以如果你发现开机后整个 BIOS 时间竟然恢复成为系统出厂值,很可能就是主机板上面的电池没电了。
		如果你将 BIOS 断电处理时,嘿嘿!时间可能也会恢复成为系统出厂值啊。<br /><br />

		由于每个 BIOS 内部的时间计算器可能有点误差,因此与我们的 Linux 时间多多少少就会产生差异,
		这个差异在时间拉长之后,就会发现他的重要性了。所以才会需要进行网路校时嘛!您说是吧~<br /><br />
	</div>

	<hr /><a NAME="client_timezone"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class="text_h2">Linux 系统时区与手动校时工作∶ 
	date, hwclock</span><br />
	<div class=block2>
		我们在前面说过, Linux 的时区档案就是 /etc/localtime ,这是一个时间格式的档案而不是 ASCII 类型的档案喔!
		(file /etc/localtime 可以看出),至于所有的 Time Zone 则放置在 /usr/share/zoneinfo 这个目录下。请注意∶<br />
		<ul><span class=text_import2>
		<li>当 /etc/localtime 存在时,系统的时区以该档案代表的时区来显示、
		<li>当 /etc/localtime 不存在时,系统的时区主要以 GMT (或 UTC) 为准;
		</span></ul>

		所以,如果您想要变更您 Linux 系统的时区,那么只要在 /usr/share/zoneinfo 里面找到您需要的时区档案,
		然后将他复制一份成为 /etc/localtime 就可以顺利的更新时区设定了!另外,同时建议修正一下 
		<span class=text_import2>/etc/sysconfig/clock</span> 这个档案里面的 ZONE 设定值!以我们台湾的 Time zone 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -