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

使用NTP协议服务器时间同步

2014-03-10 15:10 274 查看
NTP是用来使系统和一个精确的时间源保持时间同步的协议。建议大家在自己管理的网络中建立至少一台时间服务器来同步本地时间,这样可以使得在不同的系统上处理和收集日志和管理更加容易。我们分别从windows和linux的系统来简单介绍如何同步,有不对之处请大家指出,非常感谢。

windows之间的同步
windows可以互为NTP服务器,所以同步起来相当方便。

使用 net time 命令
windows自身带的net time命令比较方便查看另台windows的时间以及与其同步,语法如下:


NET TIME
[\\computername | /DOMAIN[:domainname] | /RTSDOMAIN[:domainname]] [/SET]
[\\computername] /QUERYSNTP
[\\computername] /SETSNTP[:ntp server list]


常用的指令如:

查看:net time \\Ip adress

同步:net time \\IP adress /set

问题:使用net time可能会遇到这样的异常:

发生系统错误 5。

拒绝访问。


原因:这种情况,如果windows是在域中的不会出现,但如果是在域外同步域内的时间就会异常。其实造成这种异常是由于权限造成的。

解决:如果你能访问对方的共享,就算和对方达成了信任关系,于是就可以使用net time。同理,因为windows加入域后就认为已经达成了信任,所以也是可以使用net time.

通常我们可以使用net use命令先和对方建立一个IPC$空连接,来达到信任的关系,语法如下:


NET USE
[devicename | *] [\\computername\sharename[\volume] [password | *]]
[/USER:[domainname\]username]
[/USER:[dotted domain name\]username]
[/USER:[username@dotted domain name]
[/SMARTCARD]
[/SAVECRED]
[[/DELETE] | [/PERSISTENT:{YES | NO}]]

NET USE {devicename | *} [password | *] /HOME

NET USE [/PERSISTENT:{YES | NO}]


例如:

net use \\192.168.0.8\ipc$


然后按提示输入用户名和密码建立链接。

使用第三方软件
我们也可以使用第三方的软件来实现,这里我下载了一个小巧的软件(ntpdate.exe),可以到这里下载。使用语法很简单:


ntpdate.exe ip



linux之间的同步
linux之间不能直接同步,只能与NTP服务器同步,NTP服务器的搭建下文描述。

使用ntpdate同步
使用ntpdate比较简单。格式如下:


ntpdate [-46bBdqsuv] [-a key#] [-e delay] [-k file] [-p samples] [-o version#] [-t timeo] server ...


使用如:

ntpdate 192.168.0.2



使用ntpd同步

我使用Debian来演示如何使用ntpd。首先需要安装,这个很简单:

apt-get install ntp


安装后你可以使用vi打开/etc/ntp.conf,看到默认的配置了一下几个NTP服务器:

server 0.debian.pool.ntp.org iburst
server 1.debian.pool.ntp.org iburst
server 2.debian.pool.ntp.org iburst
server 3.debian.pool.ntp.org iburst


可以根据需要修改同步的服务器.

重启ntpd:


/etc/init.d/ntp restart


注意,一旦启动ntp就不能使用ntpdate来同步时间了,否则会提示:

the NTP socket is in use, exiting


ntp服务一旦启动,它也作为NTP服务器在运行。

虽然使用crontab+ntpdate可以达到长期的时间校正,但最好是使用ntpd,因为ntpd在实际同步时间时是一点点的校准过来时间的,最终把时间慢慢的校正对。而ntpdate不会考虑其他程序是否会阵痛,直接调整时间。一个是校准时间,一个是调整时间。

linux与winodows之间的同步

linux和windows不能直接相互通讯,但我们可以让Linux和windows分别向NTP服务器进行时间同步了,这样两者的时间就可以同步了。配置linux为NTP服务器比较简单,如上面使用ntpd。这里介绍下如何把windows配置成NTP服务器。

配置linux NTP服务器

如上所述:使用ntpd同步。

配置windows NTP服务器

配置window NTP服务至少有两种方式:使用系统的W32Time服务和第三方软件。而使用W32Time需要手动修改注册表,个人觉得既不安全又不便捷。所以建议使用第三方软件来实现。

下载地址:http://www.meinbergglobal.com/english/sw/ntp.htm,目前最新的是“ntp-4.2.6p5@london-o-lpv-win32-setup.exe”。

安装步骤:

选择“Agree”以及设置安装路径;

NEXT,NEXT后可以配置一些时区,可以先不用选择;



NEXT后,需要创建一个用户来启动服务,可以选择系统账户;



安装结束后,NTP的安装目录里打开配置文件etc/ntp.conf,将下面的两行前面的#号去掉

# server127.127.1.0
# fudge127.127.1.0 stratum 12



启动NTP

使用命令:

net stopntp && net start ntp


或菜单:“开始”—“程序”—“Meinberg”—“Network Time Protocol”—“Service Control”—“Restart/Start/Stop NTP Service”

PS:NTP默认使用的123端口,务必设置防火墙放行。

这样一个windows NTP服务器就搭建好了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: