NTPネットワーク時間プロトコルでITシステムを同期


NTPプロトコル全称ネットワーク時間プロトコル(Network Time Procotol).その目的は、国際インターネット上で統一的で標準的な時間を伝えることです.具体的な実装形態は、ネットワーク上でいくつかのクロックソースウェブサイトを指定し、ユーザに時間付与サービスを提供し、これらのウェブサイト間で互いに比較し、精度を向上させるべきである.
NTPはアメリカのDelaware大学のMills教授によって最初に設計され、1982件の最初の提出から現在まで20年近く発展し、2001年に最新のNTPv 4の精度は200ミリ秒に達した.実際の応用には,秒レベルの精度を確保するSNTP(簡単なネットワーク時間プロトコル)もある.
NTPは広域ネットワークまたはローカルエリアネットワークにまたがる複雑な同期時間プロトコルであり、通常ミリ秒レベルの精度を得ることができる.RFC 2030[Mills 1996]は、NTPのサブセットである完全なNTP実装の複雑さを必要としないホストのためのSNTP(Simple Network Time Protocol)を記述する.通常、ローカルエリアネットワーク上の複数のホストは、インターネットを介して他のNTPホストとクロックを同期させ、その後、ローカルエリアネットワーク内の他のクライアントに時間同期サービスを提供する.
NTPプロトコルは、OSIリファレンスモデルの上位プロトコルであり、UDPトランスポートプロトコルフォーマットに適合し、専用ポート123を有する.
時間が経つにつれて、コンピュータの時計はドリフトする傾向があります.ネットワークタイムプロトコル(NTP)は、クロックを正確に保つ方法です.ルータ、スイッチ、ワークステーション、サーバ間の時間同期メカニズムを提供します.したがって、NTPサーバは、時間同期が必要なITシステム環境によく適用されます.
一、サービス側の設定
Mac OS X Serverはデフォルトであるようで、Linuxの下でどのように設定するかだけを話します.
Ubuntu LinuxでのNTP Serverの適用は非常に便利です.
1.インストール

sudo apt-get install ntp

2.構成
プロファイルは/etc/ntpです.conf
a.serverの1つを見つけて、あなたの好きな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,'
' t = struct.unpack( '!12I', data )[10] if t == 0: raise 'invalid response' ct = time.ctime(t - TIME1970) print 'Current time = %s
' % 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