`
willzh
  • 浏览: 300191 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

用NTP网络时间协议同步你的IT系统

阅读更多
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) 是一种确保您的时钟保持准确的方法。它为路由器、交换机、工作站和服务器之间提供了一种时间同步的机制。所以NTP Server经常应用于一些有时间同步要求的IT系统环境中。

一、服务端设置

Mac OS X Server似乎默认就有了,只说一下Linux下如何设置。
在Ubuntu Linux中应用NTP Server非常方便:
1. 安装
sudo apt-get install ntp


2. 配置
配置文件是/etc/ntp.conf

a. 找到server一项,添加你喜欢的Time Server
server time.asia.apple.com  iburst dynamic

b. 设置权限,我的所有restrict条目如下
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery

# Local users may interrogate the ntp server more closely.
restrict 127.0.0.1
restrict ::1

# Clients from this (example!) subnet have unlimited access, but only if
# cryptographically authenticated.
#restrict 192.168.123.0 mask 255.255.255.0 notrust
restrict 192.168.0.0 mask 255.255.255.0


3. 重启ntp服务器
/etc/init.d/ntp restart

4. 查看服务器是否工作正常
在服务器运行
ntpq -p


二、工作站同步

好了,测试一下吧,假设你的新服务器IP地址为192.168.0.7。在客户端运行如下命令:
ntpdate -u 192.168.0.7

同步成功后,将会显示如下:
6 Mar 15:44:24 ntpdate[9921]: adjust time server 192.168.0.7 offset -0.007277 sec

三、交换机同步

Cisco IOS
ciscorouter> enable
password: *********
ciscorouter# config t
ciscorouter(config)# ntp update-calendar
ciscorouter(config)# ntp server 192.168.0.4
ciscorouter(config)# ntp server 192.168.0.7
ciscorouter(config)# exit
ciscorouter# wr mem


Dell 6248
dell6248-corner>en
dell6248-corner#configure 
dell6248-corner(config)#sntp server 192.168.0.7
dell6248-corner(config)#


四、一些常见的时间服务器

210.72.145.44  ── (国家授时中心服务器IP地址)
133.100.11.8  ── 日本 福冈大学
time-a.nist.gov 129.6.15.28 ── NIST, Gaithersburg, Maryland
time-b.nist.gov 129.6.15.29 ── NIST, Gaithersburg, Maryland
time-a.timefreq.bldrdoc.gov 132.163.4.101 ── NIST, Boulder, Colorado
time-b.timefreq.bldrdoc.gov 132.163.4.102 ── NIST, Boulder, Colorado
time-c.timefreq.bldrdoc.gov 132.163.4.103 ── NIST, Boulder, Colorado
utcnist.colorado.edu 128.138.140.44 ── University of Colorado, Boulder
time.nist.gov 192.43.244.18 ── NCAR, Boulder, Colorado
time-nw.nist.gov 131.107.1.10 ── Microsoft, Redmond, Washington
nist1.symmetricom.com 69.25.96.13 ── Symmetricom, San Jose, California
nist1-dc.glassey.com 216.200.93.8 ── Abovenet, Virginia
nist1-ny.glassey.com 208.184.49.9 ── Abovenet, New York City
nist1-sj.glassey.com 207.126.98.204 ── Abovenet, San Jose, California
nist1.aol-ca.truetime.com 207.200.81.113 ── TrueTime, AOL facility, Sunnyvale, California
nist1.aol-va.truetime.com 64.236.96.53 ── TrueTime, AOL facility, Virginia


五、使用Python脚本来获取时间

#!/usr/bin/python
from socket import *
import struct,os,time,sys

# Script to set Linux hardware clock (/usr/sbin/hwclock) from an NTP
# time server.   Run as "setclock.py" to simply print the time from
# the NTP server.  Run as "setclock.py --set" to set the Linux
# hardware clock (as the super user, of course).

# Based on Simon Foster's simple SNTP client from ASPN Python cookbook.
# Adapted by Paul Rubin; this script lives at:
#    http://www.nightsong.com/phr/python/setclock.py

time_server = ('time.apple.com', 123)
# time.apple.com is a stratum 2 time server.  (123 is the SNTP port number).
# More servers info can be found at
#
#   http://www.eecis.udel.edu/~mills/ntp/servers.htm
#
# Note it's considered antisocial to use a stratum 1 server (like NIST)
# for purposes like this which don't need extreme accuracy (i.e. syncing
# your own big NTP network).  See www.ntp.org for more info.
#
# You could also use time.windows.com (Microsoft server) which syncs
# all Windows XP machines everywhere, so it can presumably handle lots
# of clients.

# number of seconds between NTP epoch (1900) and Unix epoch (1970).
TIME1970 = 2208988800L      # Thanks to F.Lundh

client = socket( AF_INET, SOCK_DGRAM )
data = '\x1b' + 47 * '\0'
client.sendto(data, time_server)
data, address = client.recvfrom( 1024 )
if data:
    print 'Response received from', address,'\n'
    t = struct.unpack( '!12I', data )[10]
    if t == 0:
        raise 'invalid response'
    ct = time.ctime(t - TIME1970)
    print 'Current time = %s\n' % ct
    if len(sys.argv) > 1 and sys.argv[1] == "--set":
        os.system("/usr/sbin/hwclock --set '--date=%s'"% ct)
else:
    raise 'no data returned'



上面这个脚本原址在这里,http://www.nightsong.com/phr/python/setclock.py。使用方式如下:
$ python setclock.py
Response received from ('17.151.16.23', 123)

Current time = Fri Mar  6 16:03:19 2009

1
0
分享到:
评论
1 楼 kandari 2012-02-15  
有没有openSUSE的

相关推荐

    C# 从NTP服务器获取时间并同步本地时间WinForm

    NTP协议是一种分布式时间同步协议,设计目的是使计算机系统间的时钟保持同步。它通过交换时间戳信息来估算和调整本地时钟与远程服务器时钟之间的偏差。NTP支持多种同步模式,包括服务器/客户端模式、对等模式等。 ...

    NTP内网时间同步

    在IT行业中,时间同步是一项至关...总的来说,"NTP内网时间同步"涉及的知识点包括:NTP协议原理、Java编程、安卓系统时间管理、网络通信以及异常处理。理解并掌握这些内容对于进行高效且可靠的内网时间同步至关重要。

    C# NTP 时钟同步 获取指定IP系统时间

    在IT领域,尤其是在分布式系统和网络编程中,准确的时间同步是至关重要的。本文将深入探讨C#中如何利用NTP(Network Time Protocol)进行时钟同步,获取指定IP地址主机的系统时间,并介绍相关概念和技术。 NTP是一...

    基于qt5、ntp协议获取服务器网络时间

    在IT领域,网络时间同步是确保系统间时间准确无误的关键技术,特别是在分布式系统和多设备协同工作中。本文将深入探讨如何基于Qt5框架和NTP(Network Time Protocol)协议来实现从服务器获取网络时间的功能。 Qt5是...

    H3C_NTP时钟同步基础配置案例

    在IT行业中,网络设备的时间同步是一项至关重要的任务,特别是在分布式系统和日志记录中,精确的时间戳对于事件的分析和故障排查是必不可少的。H3C的NTP(网络时间协议)时钟同步基础配置案例提供了对这一过程的详细...

    NTP时间同步客户端程序C#源码

    在压缩包中的"SetTime"文件可能是一个执行时间设置的函数或者类,它根据NTP协议同步后的结果来调整操作系统的系统时间。在实际应用中,可能需要考虑异常处理、重试机制以及多线程安全问题,以确保在各种网络条件下都...

    NTP时间同步工具

    `ntpd`是NTP协议的守护进程,它可以在后台持续运行,不断与NTP服务器进行通信并保持时钟同步。而`w32time`是Windows操作系统内置的服务,提供了类似的功能。 配置NTP客户端时,你需要指定一个或多个NTP服务器。这...

    VC6.0 NTP时间服务器同步代码

    在IT领域,网络时间协议(Network Time Protocol,简称NTP)是一种用于同步计算机时钟的协议,确保网络上的设备具有准确的时间。在Windows系统中,使用VC6.0(Visual C++ 6.0)这样的集成开发环境进行编程时,有时...

    与NTP服务器时间同步的类

    在IT领域,网络时间协议(Network Time Protocol,简称NTP)是一种用于同步计算机时间的协议,广泛应用于分布式系统中以确保各个设备的时间准确无误。本篇将详细讲解与NTP服务器时间同步的相关知识点,以及如何利用...

    c# NTP时钟同步,获取指定IP时间

    在IT领域,尤其是在分布式系统和网络编程中,准确的时间同步是至关重要的。本文将深入探讨C#中如何实现NTP(Network Time Protocol)时钟同步,以及如何在Windows XP和Windows 7上开启NTP服务。 NTP是一种互联网...

    系统时间跟网络时间同步

    总的来说,系统时间与网络时间的同步是保证网络服务正常运行的基础,通过NTP协议和编程语言如C#,我们可以构建自己的时间同步工具。对于个人用户而言,了解这一过程可以帮助理解系统工作原理,对于开发者来说,则是...

    系统时间跟网络时间同步工具

    在IT领域,系统时间和网络时间同步是一个常见的需求,特别是在服务器管理、分布式系统和网络设备中。本文将深入探讨“系统时间跟网络时间同步工具”的相关知识点,并基于提供的描述和标签进行详细阐述。 首先,系统...

    NTP协议规范简介分析

    总的来说,NTP协议是互联网基础设施的重要组成部分,它确保了网络上的时间一致性,对于现代网络服务和应用的正常运行起着至关重要的作用。理解NTP的工作原理和配置方法,对于任何IT专业人员来说都是必不可少的知识。

    ntp.rar_ntp_ntp 系统时间

    "ntp.rar_ntp_ntp 系统时间"这个主题涉及到Linux系统下的网络时间协议(Network Time Protocol,简称NTP)的使用,它用于同步网络中的计算机时间。NTP是一个广泛使用的协议,尤其适用于嵌入式系统,确保设备间的时间...

    NTP 时间校验客户端

    NTP协议采用了四次往返时间测量方法,也称为"round-trip delay measurement",来提高时间同步的精度。 时间同步的过程分为以下几个步骤: 1. **初始同步**:客户端向NTP服务器发送请求,包含自身的时间戳。 2. **...

    网络时间同步软件

    在IT领域,网络时间同步是一项重要的技术,尤其对于多设备协同工作、系统安全以及日志记录等场景。网络时间同步软件的主要功能是确保计算机或设备的时钟与一个可靠的网络时间源保持一致,以减少时间差异带来的问题。...

    自动同步网络时间

    总的来说,自动同步网络时间是保证IT系统可靠性和效率的关键因素。通过正确配置NTP客户端,无论是手动还是利用像"TimerSyncIntelnet"这样的工具,都可以确保计算机系统的时间与全球标准时间保持一致,从而减少潜在的...

    linux unix NTP时钟同步服务配置

    在IT领域,特别是对于Linux和Unix系统管理员而言,...总之,通过以上步骤,你可以有效地在Linux和Unix系统中配置NTP时钟同步服务,确保网络环境中的时间准确性与一致性。这对于维护系统稳定性和安全性具有重要意义。

    NTP 同步及服务器软件

    NTP(Network Time Protocol,网络时间协议)是一种用于在计算机网络中同步系统时钟的协议。它被设计用来确保分布式系统中的所有设备都有一个准确、一致的时间。在IT领域,尤其是在需要精确时间戳的场景中,如金融...

Global site tag (gtag.js) - Google Analytics