关于授时

来源:互联网 发布:美美购 淘宝u站 编辑:程序博客网 时间:2024/05/22 23:27

http://ntp.buptnet.edu.cn/ntp_chinese/


以前用公网的不知名 NTP Server ,一直很稳定。不过上次一次不稳导致一次重大事故,哎。。
想都没想到会这个地方出问题,这种基础服务还是自己搞比较好。
想做成只允许公司的服务器对时间。
如果用ip段来划分会没效率而且会漏掉,想做成客户端用key的方式认证再同步时间的方式。

查了些文档,自己总结了一下,留给自己以后看。
参考几个文档都详细的很 大家可以去参考。
鸟哥的文档:http://linux.vbird.org/linux_server/0440ntp.php
http://www.lupaworld.com/home-space-uid-56821-do-blog-id-237311.html
http://www.blogjava.net/spray/archive/2008/07/10/213964.html
还有一个小日本的变态文档,一个ntp可以写出2百多页。看不懂,找了几个主要的猜一下。
 ntpcook-20070413-1.part1.rar    ntpcook-20070413-1.part2.rar   
===========================================================================

NTP Server 作为默认项已经在RHEL上安装,只是没配置实用。
配置项在 /etc/ntp.conf
下面是几个主要的配置项:
restrict [目标ip or hostname] mask [netmask_IP] [parameter]

其中 parameter 的參數主要有底下這些:

  • ignore: 拒絕所有類型的 NTP 連線;
  • kod: 使用kod技术阻止"Kiss of Death"包(一种DOS攻击)对服务器的破坏.
  • nomodify: 用戶端不能使用 ntpc 與 ntpq 這兩支程式來修改伺服器的時間參數, 但用戶端仍可透過這部主機來進行網路校時的;
  • noquery: 用戶端不能夠使用 ntpq, ntpc 等指令來查詢時間伺服器,等於不提供 NTP 的網路校時囉;
  • notrap: 不提供 trap 這個遠端事件登錄 (remote event logging) 的功能。
  • notrust: 拒絕沒有認證的用戶端。 (这点是重点,机器的认证都靠他)
如果不需要限制,只需要加 nomodify kdo这个限制,然后在ip设置全开就行。
注:这里的 [ip or hostname] 除了 对时 的客户端,还包括校时的上层server。
    如果上层server没配置就是default配置,建议对各个server都配置策略比较保险。
    这些策略是没有先后顺序的,可以随便写。

上层 NTP Service :
server [IP or hostname] [minpool n] [maxpool n] 
[prefer]
可以有多个,加上 prefer 作为主服务器。
minpool 和 paxpool 是最大最小的同步时间按,后面的n是2的n次方的秒数。
例如 minpool 4 =>  4^2=16秒
用下来感觉 prefer 和 minpool 有些互斥,同时使用会prefer会失效。

本机的层级数
fudge ip stratum n
stratum表示设置一个0-15的一个层数.值越小,表明离时间源更近,更准确,stratum为16时表示没有进行同步.
贴一张小日本变态文档图



如果需要验证key再能同步时间,就需要下面的配置
keys filename
trustedkey key_id
requestkey key_id
controlkey key_id

key 文件的位置。
trustedkey表示使用哪个keyid查询同步ntpd的时间.
requestkey和controlkey也用于ntp的工具,如ntpdc等.

说到这里就需要写一下如何生成key:
ntp-keygen -M
执行后会在本地生成 MD5的key文件,还有公钥私钥文件。
我们只需要 MD5的key,里面有16个key。复制到 /etc/ntp/keys 并使ntp用户可读。
下面只需要在ntp中指定使用那个就好,如:
trustedkey 1 2   #使用第一 第二个key

日志文件:
logfile /var/log/ntp

把时间写入 BIOS:
修改 /etc/sysconfig/ntpd
  1. OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid"

  2. # Set to 'yes' to sync hw clock after successful ntpdate
  3. SYNC_HWCLOCK=yes

  4. # Additional options for ntpdate
  5. NTPDATE_OPTIONS=""
一般系统在启动的时候会读去bios时间,但启动之后就各走各的。
何况系统还会通过ntp去校时,2者时间肯定不同。
可以通过 hwclock来看bios时间。
把时间写入bios可以保证下次重启时间不错。

好了,主要的内容都介绍了。下面是我自己配置的一些东西。

  1. # default
  2. restrict default kod nomodify notrap nopeer noquery
  3. # Up link
  4. restrict 210.72.145.44 mask 255.255.255.255 kod nomodify
  5. restrict 133.100.11.8 mask 255.255.255.255 kod nomodify
  6. restrict clock.redhat.com kod nomodify
  7. # 认证用户可以对时
  8. restrict 0.0.0.0 mask 0.0.0.0 kod nomodify notrap nopeer noquery notrust
  9. restrict 127.0.0.1 mask 255.255.0.0 kod
  10. restrict 127.0.0.1
  11. # 定义服务器
  12. server 210.72.145.44 prefer
  13. server clock.redhat.com
  14. server 133.100.11.8 minpoll 4 maxpoll 4
  15. # 刚才算出来的key
  16. keys /etc/ntp/keys
  17. # 使用的key
  18. trustedkey 1 2
  19. # log file
  20. logfile /var/log/ntp

现在 ntpd架设好了,我们来通过 ntpdate来测试一下
ntpdate -d 是使用debug的方式来查看ntp校准的过程。
不带 key认证
  1. [root@10 ~]# ntpdate -d x.x.x.
  2.  9 Jul 21:20:16 ntpdate[12981]: ntpdate 4.2.2p1@1.1570-o Thu May 14 13:01:42 UTC 2009 (1)
  3. Looking for host x.x.x.x and service ntp
  4. host found : x.x.x.x
  5. transmit(x.x.x.x)
  6. transmit(x.x.x.x)
  7. transmit(x.x.x.x)
  8. transmit(x.x.x.x)
  9. transmit(x.x.x.x)
  10. x.x.x.x: Server dropped: no data
  11. server x.x.x.x, port 123
  12. stratum 0, precision 0, leap 00, trust 000
  13. refid [x.x.x.x], delay 0.00000, dispersion 64.00000
  14. transmitted 4, in filter 4
  15. reference time: 00000000.00000000 Thu, Feb 7 2036 14:28:16.000
  16. originate timestamp: 00000000.00000000 Thu, Feb 7 2036 14:28:16.000
  17. transmit timestamp: d1c2d413.ebcfe586 Sat, Jul 9 2011 21:20:19.921
  18. filter delay: 0.00000 0.00000 0.00000 0.00000 
  19.          0.00000 0.00000 0.00000 0.00000 
  20. filter offset: 0.000000 0.000000 0.000000 0.000000
  21.          0.000000 0.000000 0.000000 0.000000
  22. delay 0.00000, dispersion 64.00000
  23. offset 0.000000

  24.  9 Jul 21:20:20 ntpdate[12981]: no server suitable for synchronization found
服务器不会返回相关数据
  1. [root@10 ~]# ntpdate -d -a 1 -k ./ntp_keys x.x.x.
  2.  9 Jul 21:22:59 ntpdate[13040]: ntpdate 4.2.2p1@1.1570-o Thu May 14 13:01:42 UTC 2009 (1)
  3. Looking for host x.x.x.x and service ntp
  4. host found : x.x.x.x
  5. transmit(x.x.x.x)
  6. receive(x.x.x.x)
  7. receive: authentication passed
  8. transmit(x.x.x.x)
  9. receive(x.x.x.x)
  10. receive: authentication passed
  11. transmit(x.x.x.x)
  12. receive(x.x.x.x)
  13. receive: authentication passed
  14. transmit(x.x.x.x)
  15. receive(x.x.x.x)
  16. receive: authentication passed
  17. transmit(x.x.x.x)
  18. server x.x.x.x, port 123
  19. stratum 2, precision -20, leap 00, trust 000
  20. refid [x.x.x.x], delay 0.06380, dispersion 0.00066
  21. transmitted 4, in filter 4
  22. reference time: d1c2d2f5.bbcd2f73 Sat, Jul 9 2011 21:15:33.733
  23. originate timestamp: d1c2d4b3.9b59897f Sat, Jul 9 2011 21:22:59.606
  24. transmit timestamp: d1c2d4b3.8ea0cae6 Sat, Jul 9 2011 21:22:59.557
  25. filter delay: 0.06882 0.06567 0.06419 0.06380 
  26.          0.00000 0.00000 0.00000 0.00000 
  27. filter offset: 0.031020 0.030583 0.031800 0.030589
  28.          0.000000 0.000000 0.000000 0.000000
  29. delay 0.06380, dispersion 0.00066
  30. offset 0.030589

  31.  9 Jul 21:22:59 ntpdate[13040]: adjust time server x.x.x.x offset 0.030589 sec
基本完成。欢迎指正。
原创粉丝点击