NTP时钟同步方式说明
NTP在linux下有两种时钟同步方式,分别为直接同步和平滑同步:
直接同步
使用ntpdate命令进行同步,直接进行时间变更。如果服务器上存在一个12点运行的任务,当前服务器时间是13点,但标准时间时11点,使用此命令可能会造成任务重复执行。因此使用ntpdate同步可能会引发风险,因此该命令也多用于配置时钟同步服务时第一次同步时间时使用。
平滑同步
使用ntpd进行时钟同步,可以保证一个时间不经历两次,它每次同步时间的偏移量不会太陡,是慢慢来的,这正因为这样,ntpd平滑同步可能耗费的时间比较长。
标准时钟同步服务
>三、什么是NTP
为了实现时间同步,我们就需要用户NTP(Network Time Protocol)这个协议。如图1所示。简单地说,NTP是用来使系统和一个精确的时间源保持时间同步的协议。笔者建议管理员最好在自己管理的网络中建立至少一台时间服务器来同步本地时间。
如 果在一个公司的局域网中,如果让每个员工通过手动的方式每隔一段时间去校准时间,不但不利于管理,而且校准目标时间源也不一定准确。公司局域网络中不同计 算机的时间偏差尤其是客户机/服务器之间的时间偏差,就会对一些要求时间同步的服务产生影响。比如,为了管理方便,服务器设置了一到下班时间便 账号过期,用户无法访问Internet网络。而如果你的电脑时间与服务器的时间不同步,当你为你下班时间未到,正准备发送邮件时,或许在服务器的时间 上,你的账号便过期了,从而导到无法发送邮件。解决这种问题的方法很简单,就是建立一个能提供精确时间的服务器,局域网内的所有电脑统一通过这台时间服务 器进行时间同步、校准。
四、NTP服务器安装
现在,我们就来介绍一下,如何在Linux系统下,建立一个NTP服务器吧。在本文中,我们采用的是Fedora 2 *** 作系统作为例子 (其它版本Linux也可以,系统的配置类似)。
使用 RPM 安装
首先输入如下指令
rpm -q ntp
查询本机是否安装了NTP软件包。如果没有安装的话,找到您的 Linux 的安装光盘,mount 上后,查找以NTP开头的软件包名,然后安装上去,就可以了!
rpm –ivh ntp-412-5i386rpm
五、NTP服务的设置
1.NTP软件包的结构
NTP服务的配置文件:
/etc/ntpconf :这个是 NTP 服务的主要配置文件,不同的Linux版本文件所在的目录可能会不同!
与NTP服务有关的Linux 系统文件及目录:
/usr/share/zoneinfo:这是个目录,在这个目录下是规定了各主要时区的时间设定文件,例如中国大陆地区的时区设置文件是 /usr/share/zoneinfo/Asia/Shanghai 。
/etc /sysconfig/clock:这个文件是Linux 的主要时区设定文件。每次启动后,Linux 会自动读取这个文件来设定系统预设要显示的时间!比如这个文件内容为“ZONE=Asia/Shanghai”,这表示我们的时间设定使用 /usr/share/zoneinfo/Asia/Shanghai 这个文件!
/etc/localtime:这个文件是本地系 统的时间设定文件! 假设clock 文件里面规定了使用的时间设定文件为 /usr/share/zoneinfo/Asia/Shanghai, Linux 系统就会将 Shanghai那个文件复制一份为 /etc/localtime ,所以系统的时间显示就会以 Shanghai 那个时间设定文件为准。假设这台主机到了美国纽约,您只要将 /etc/sysconfig/clock 里面的ZONE 设定成为ZONE="America/New_York" 并且将/usr/share/zoneinfo/America/New_York复制成为 /etc/localtime ,其它什么设置都不需要改动,系统的显示时间就是美国纽约当地的时间了!
与 NTP 及系统时间有关的执行文件:
/bin/date: Linux 系统上面的日期与时间修改及输出命令。
/sbin /hwclock:因为主机的 BIOS 时间与 Linux 系统时间是分开的,所以使用 date 这个指令调整了时间之后,只是调整了linux的系统时间,还需要使用 hwclock 才能将修改过后的时间写入 BIOS。这个命令必须root用户才能执行 。
/usr/sbin/ntpd:NTP服务的守护进程文件,需要启动它才能提供NTP服务。
/usr/sbin/ntpdate:NTP客户端用来连接NTP服务器命令文件。
2.NTP服务端的设置
编辑 /etc/ntpconf 文件
关于权限设定部分
权限的设定主要以 restrict 这个参数来设定,主要的语法为:
restrict IP地址 mask 子网掩码 参数
其中 IP 可以是IP地址,也可以是 default ,default 就是指所有的IP
参数有以下几个:
ignore :关闭所有的 NTP 联机服务
nomodify:客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时。
notrust :客户端除非通过认证,否则该客户端来源将被视为不信任子网
noquery :不提供客户端的时间查询
注意:如果参数没有设定,那就表示该 IP (或子网)没有任何限制!
上级时间服务器的设定
由于我们配置的NTP 服务器需要网络上面时间比较准确的NTP服务器来更新自己的时间,所以在我们的 NTP 服务器上面要配置一部上级时间服务器来进行校准!在 Internet 上面提供了许多时间服务器,从下面地址找一个离你最近的
>验证NTP服务器时钟
我们可以使用ntpq命令,检查本地服务器的时钟如何通过NTP实现同步。
控制对NTP服务器的访问
在默认情况下,NTP服务器允许来自所有主机的入站查询。如果你想过滤入站NTP同步连接,可以在防火墙中添加一条规则,以过滤流量。
# iptables -A INPUT -s 19216810/24 -p udp --dport 123 -j ACCEPT
# iptables -A INPUT -p udp --dport 123 -j DROP
该规则将允许来自19216810/24的NTP服务器(经由端口UDP/123),拒绝来自其他所有网络的流量。你可以更新规则以符合自己的要求。
配置NTP客户端
1 Linux
NTP客户端主机需要ntpdate程序包来对照服务器同步其时间。可以使用yum或apt-get,很容易安装该程序包。安装该程序包后,运行带服务器IP地址的命令。
# ntpdate <server-IP-address>
如果是基于RHEL和Debian的系统,命令完全一样。
2 Windows
如果你使用Windows,在日期和时间设置下寻找“Internet时间”。
3 思科设备
如果你想同步思科设备的时间,可以从全局配置模式使用下面这个命令。
# ntp server <server-IP-address>WindowsXP时间服务器配置
1在注册表中将服务NTPServer的Enabled属性设置为1Type改为NTP。
2如果外部时间源获取时间将Config/AnnounceFlags设置为5
3将parameters\NtpServer地址改为外部时间源的IP地址或者DNS,在使用DNS是后面要加上”,0x1”多个地址之间用空格隔开。
4其他参数是可选的参数,可根据需要配置。
5重启w32time服务在命令行中,net stop w32time && net start
w32time就配置完成了。
6此外,要保证windows
防火墙是关闭的。或者启动防火墙时,在例外中添加C:\WINDOWS\system32\w32timedll端口号:123类型UDP。
经过以上六步服务器端就设置完成了。
WindowsXP客户端的配置
1将NtpServer地址设置为服务器的地址。
2服务类型改为NTP。
3SpecialPolInterval自动同步时间间隔根据需要配置比如15分钟轮询一次(设置为900,因为单位为秒)。
4将默认的时间服务器设置为服务器的地址, XP默认是微软的时间服务器timewindowscom。在注册表中
HKEY_LOCAL_MACHINE\SOFTWARE\WINDOWS\CurrentVersion\DateTime\Servers
新建一个字符串值(名字3),输入服务器的IP地址。
并将默认值改为3这样在时期时间属性\Internet时间默认的时间同步服务器就成为我们设置的了。
备 CentOS 服务器
现在让我们来开始在 CentOS 上设置 NTP 服务器。
首先,我们需要保证正确设置了服务器的时区。在 CentOS 7 中,我们可以使用 timedatectl 命令查看和更改服务器的时区(比如,"Australia/Adelaide",LCTT 译注:中国可设置为 Asia/Shanghai )
# timedatectl list-timezones | grep Australia
# timedatectl set-timezone Australia/Adelaide
# timedatectl
继续并使用 yum 安装需要的软件
# yum install ntp
然后我们会添加全球 NTP 服务器用于同步时间。
# vim /etc/ntpconf
server 0oceaniapoolntporg
server 1oceaniapoolntporg
server 2oceaniapoolntporg
server 3oceaniapoolntporg
默认情况下,NTP 服务器的日志保存在 /var/log/messages。如果你希望使用自定义的日志文件,那也可以指定。
logfile /var/log/ntpdlog
如果你选择自定义日志文件,确保更改了它的属主和 SELinux 环境。
# chown ntp:ntp /var/log/ntpdlog
# chcon -t ntpd_log_t /var/log/ntpdlog
现在初始化 NTP 服务并确保把它添加到了开机启动。
# systemctl restart ntp
# systemctl enable ntp
验证 NTP Server 时钟
我们可以使用 ntpq 命令来检查本地服务器的时钟如何通过 NTP 同步。
控制到 NTP 服务器的访问
默认情况下,NTP 服务器允许来自所有主机的查询。如果你想过滤进来的 NTP 同步连接,你可以在你的防火墙中添加规则过滤流量。
# iptables -A INPUT -s 19216810/24 -p udp --dport 123 -j ACCEPT
# iptables -A INPUT -p udp --dport 123 -j DROP
该规则允许从 19216810/24 来的 NTP 流量(端口 UDP/123),任何其它网络的流量会被丢弃。你可以根据需要更改规则。
配置 NTP 客户端
1 Linux
NTP 客户端主机需要 ntpupdate 软件包来和服务器同步时间。可以轻松地使用 yum 或 apt-get 安装这个软件包。安装完软件包之后,用服务器的 IP 地址运行下面的命令。
# ntpdate <server-IP-address>
基于 RHEL 和 Debian 的系统命令都相同。
2 Windows
如果你正在使用 Windows,在日期和时间设置(Date and Time settings)下查找网络时间(Internet Time)。
3 Cisco 设备
如果你想要同步 Cisco 设备的时间,你可以在全局配置模式下使用下面的命令。
# ntp server <server-IP-address>
来自其它厂家的支持 NTP 的设备有自己的用于网络时间的参数。如果你想将设备和 NTP服务器同步时间,请查看设备的说明文档。
结论
总而言之,NTP 是在你的所有主机上同步时钟的一个协议。我们已经介绍了如何设置 NTP 服务器并使支持 NTP 的设备和服务器同步时间。
步骤如下:n Enable NTP mode:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters
将“TYPE”的值改为"NTP"
n Enable the NTP Client:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config
将“AnnounceFlags”值改为5
n Specify the upstream NTP servers to sync from:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders
设定 “NtpServer”值为3 个 NTP servers
例如: 1poolntporg,0x1 2poolntporg,0x1 3poolntporg,0x1(3个服务器之间用空格)
注意:在Windows2008域控中,NtpServer这个键值在:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters下。
n Specify a 2-minute interval:
KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient
设定:“SpecialPollInterval”值为120
n启用NTP功能
KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer
设定:“Enabled”值为1执行ntpdate xxxxxxxxxxxx(ntp服务器地址)。
Linux下配置NTP服务器
配置方法:
1、ntp服务安装
NTP服务在RHEL5x中式默认安装的软件包,可用rpm -qa |grep
ntp检查是否安装,如果未安装可使用如下命令安装与删除NTP服务器软件包
#使用rpm方式安装
rpm -ivh ntp-422p1-8el5i386rmp
#使用yum方式安装
yum -y install ntpi
#使用rpm方式删除
rpm -e ntp-422pl-8el5i386rpm
#使用yum方式删除
yum -y remove ntpi
2、ntp服务配置
在ntp服务安装完成后,需要修改ntp服务配置文件。ntp服务主配置文件/etc/ntpconf
21 ntp服务的启动、暂停
NTP属于system
V服务,其启动、暂停相关命令如下:
#启动
service ntpd
start
#停止
Service ntpd
stop
#重新加载
service ntpd
reload
#查看当前启动状态
service ntpd
status
22 ntp服务自动加载
设置ntp服务下一次开机运行状态可通过命令配置
#在运行级别2、3、4、5上设置为自动运行
chkconfig
ntpd on
#在运行级别2、3、4、5上设置为不自动运行
chkconfig
ntpd off
#在运行级别3、5上设置为自动运行
chkconfig
ntpd --level 35 on
#在运行级别3、5上设置为不自动运行
chkconfig
ntpd --level 35 off
23 配置信息
配置ntp,将Internet上的时间服务器作为内部标准时间来源,过程如下
1)修改/etc/ntpconf文件
restrict default kod nomodify notrap nopeer noquery
restrict 127001
restrict -6::1
restrict 19216800 mask 2552552550 nomodify notrap
restrict 19216810 mask 2552552550 nomodify notrap
#指定Internet上的时间服务器
restrict 20746232182 mask 255255255255 nomodify notrap noquery
server 20746232182
server 12712710
fudge 12712710 stratum 10
keys /etc/ntp/keys
#指定NTP服务器日志文件
logfile /var/log/ntp
2)修改/etc/ntp/stpe-tickers文件,内容如下(当ntpd服务启动时,会自动与该文件中记录的上层NTP服务进行时间校对)
20746232182
12712710
3)修改/etc/sysconfig/ntpd文件,内容如下:
#允许BIOS与系统时间同步,也可以通过hwclock -w 命令
SYNC_HWCLOCK=yes
4)在配置完成并重新启动服务后,可通过ntpstat
命令显示本机上一次与上层ntp服务器同步时间的情况,也可以使用ntpq -p 查看本机与上层ntp服务器通信情况,
24 图形界面配置NTP
图形界面下直接用system-config-date, 在“Network Time Protocol”选项页指定NTP服务器后勾选“Synchronize system clock before startingservice”,将ntpd服务设置为自动运行即可。
25 客户端访问
1)Linux客户端可通过图形界面进行配置,也可以通过ntpdate命令立即与NTP服务器及行时间校对。
ntpdate 192168010
2)Windows客户端,只需双击任务栏右下角的时钟,选择“Internet时间”选项页,输入NTP服务IP地址或FQDN,并勾选“自动与Internet时间服务器同步”即可。
Windows默认7天自动更新一次,可通过修改注册表HKEY_LOCAL_MACHINE\SYSTEM
\CurrentControlSet\services\W32Time\TimeProviders\NtpClient\SpecialPollInterval 默认单位为妙,修改后重新启动即可生效。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)