您的位置:首页 > 编程语言 > PHP开发

freebsd的NTP(时间)服务

2012-01-18 09:24 267 查看
NTP网络时间协议简介

NTP协议全称网络时间协议(Network Time Procotol)。它的目的是在国际互联网上传递统一、标准的时间。具体的实现方案是在网络上指定若干时钟源网站,为用户提供授时服务,并且这些网站间应该能够相互比对,提高准确度。

NTP最早是由美国Delaware大学的Mills教授设计实现的,从1982件最初提出到现在已发展了将近20年,2001年最新的NTPv4精确度已经达到了200毫秒。对于实际应用,又有确保秒级精度的SNTP(简单的网络时间协议)。

NTP是一个跨越广域网或局域网的复杂的同步时间协议,它通常可获得毫秒级的精度。RFC2030[Mills 1996]描述了SNTP(Simple Network Time Protocol),目的是为了那些不需要完整NTP实现复杂性的主机,它是NTP的一个子集。通常让局域网上的若干台主机通过因特网与其他的NTP主机同步时钟,接着再向局域网内其他客户端提供时间同步服务。

NTP协 议是OSI参考模型的高层协议,符合UDP传输协议格式,拥有专用端口123。

随着时间的推移, 计算机的时钟会倾向于漂移。 网络时间协议 (NTP) 是一种确保您的时钟保持准确的方法。

FreeBSD 附带了 ntpd(8) NTP 服务器, 它可以用于查询其它的 NTP 服务器, 并配置本地计算机的时钟,或者为其它机器提供服务。

一般配置:NTP 是通过 /etc/ntp.conf 文件来进行配置的, 其格式在 ntp.conf(5) 中进行了描述。 下面是一个例子:

server 219.216.##.## prefer  (别学这条,这是我内部网的时间服务器)
server s2j.time.edu.cn       (大连理工大学的ntp服务)
server s2f.time.edu.cn       (东北地区中心的ntp服务)
server s1e.time.edu.cn       (清华教育网中心的Ntp服务)
server s1a.time.edu.cn       (北邮的一级ntp服务器)
server time.windows.com      (呵呵,Windows都默认的)

server asia.pool.ntp.org     (国际的,ntp.org对亚洲的)
server pool.ntp.org          (国际的,对全球的)
driftfile /var/db/ntp.drift

  这里, server 选项指定了使用哪一个服务器,每一个服务器都独立一行。 如果某一台服务器上指定了 prefer (偏好) 参数, 如上面的 ntplocal.example.com, 则会优先选择这个服务器。如果偏好的服务器和其他服务器的响应存在显著的差别, 则丢弃它的响应,否则将使用来自它的响应, 而不理会其他服务器。 一般来说, prefer 参数应该标注在非常精确的 NTP 时源, 例如那些包含特殊的时间监控硬件的服务器上。

  而 driftfile 选项,则指定了用来保存系统时钟频率偏差的文件。 ntpd(8) 程序使用它来自动地补偿时钟的自然漂移, 从而使时钟即使在切断了外来时源的情况下,仍能保持相当的准确度。

  另外, driftfile 选项也保存上一次响应所使用的 NTP 服务器的信息。 这个文件包含了 NTP 的内部信息, 它不应被任何其他进程修改。

默认情况下, NTP 服务器可以被整个 Internet 上的主机访问。 如果在 /etc/ntp.conf 中指定 restrict 参数,则可以控制允许哪些机器访问您的服务器。
  如果希望拒绝所有的机器访问您的 NTP 服务器, 只需在 /etc/ntp.conf 中加入:

restrict default ignore

注意: 这样做会禁止您的服务器访问在本地配置中列出的服务器。 如果您需要令 NTP 服务器与外界的 NTP 服务器同步时间, 则应允许指定服务器。 请参见联机手册 ntp.conf(5) 以了解进一步的细节。

  如果只希望子网内的机器通过您的服务器同步时钟, 而不允许它们配置为服务器,或作为同步时钟的节点来时用, 则加入

restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

  这里, 需要把 192.168.1.0 改为您网络上的 IP 地址, 并把 255.255.255.0 改为您的子网掩码。

  /etc/ntp.conf 可能包含多个 restrict 选项。 要了解进一步的细节, 请参见 ntp.conf(5) 的 Access Control Support(访问控制支持) 小节。

要让 NTP 服务器在系统启动时随之开启, 需要把 ntpd_enable="YES" 加入到 /etc/rc.conf 中。如果希望向 ntpd(8) 传递更多参数,需要编辑 /etc/rc.conf 中的
ntpd_flags

  要在不重新启动机器的前提下启动服务器, 需要手工运行 ntpd, 并带上 /etc/rc.conf 中的
ntpd_flags
所指定的参数。 例如:

# ntpd -p /var/run/ntpd.pid   ??????

eg:我的rc.conf中

ntpd_enable="YES"
#ntpd_flags="-p /var/run/ntpd.pid"


rc.conf: 37 lines, 894 characters.
1.ntptrace xxx.xxx.xxx.xxx

查找要对时的服务器状态,可以trace到一级时钟服务器,

2.ntpq -p

显示当前时钟服务器状态

3.ntpdata xxx.xxx.xxx.xxx

与时钟服务器对时,着先时钟服务器要先对时,才能用来提钟时钟服务

4.ntpd

既可以自动对时,又可对外提供时钟服务,先要配置/etc/ntp.conf

restrict 0.0.0.0 mask 0.0.0.0 notrust nomodify notrap //控制访问

server xxx.xxx.xxx.xxx //对时的外部服务器

server 127.127.1.0

fudge 127.127.1.0 stratum 10

driftfile /etc/ntpd.drift

5.开机对时,/etc/rc.conf中添加

ntpdate_enable="YES"

ntpdate_program="/usr/sbin/ntpdate"

ntpdate_flags="-b"

6.每天(好像是每天)对时且对外提供时钟服务, 在/etc/rc.conf中添加
xntpd_enable="YES"

xntpd_program="/usr/sbin/ntpd"

xntpd_flags="-p /var/run/ntpd.pid"

7.端口

时钟服务器端口为123,udp , netstat -an

实例:教育网上做的时钟服务器:

vi /etc/ntp.conf
---------------------
server s1e.time.edu.cn prefer

server s2c.time.edu.cn

server s1c.time.edu.cn

server 210.72.145.44

driftfile /var/db/ntp.drift

--------------------------------

vi /etc/rc.conf
----------------------
ntpd_enable="YES"

ntpd_program="/usr/sbin/ntpd"

ntpd_config="/etc/ntp.conf"

ntpd_sync_on_start="YES"

ntpd_flags="-p /var/run/ntpd.pid -f /var/db/ntpd.drift"

------------------------------------------------------------

在MS windows中使用,直接在“更改时间和日期设置”中的“Internet时间”中将自己设好的本地时钟服务器地址写入即可,注意你的本地防火墙必须放行NTP才可以。

在UNIX/linux下使用这个时钟服务器:

# vi /etc/ntp.conf

server 219.216.*.* prefer #这里指向你自己建好的内网时钟服务器

driftfile /etc/ntpd.drift

或者追加下面内容到crontab,这样,每过一个小时0分的时候就自动更新。

vi /etc/crontab

0 * * * * root ntpdate [ntp server IP] >/dev/null 2>&1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息