NTP for Linux
一、服务概述
NTP(network time protocol 网络时间协议)服务器是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源做同步化,提供高精度的时间校正,在LAN上与标准时间差小于1毫秒,WAN相差几十毫秒,并且通过加密确认的方式来防止攻击。
二、NTP的基本工作原理
如图所示。Device A和Device B通过网络相连,它们都有自己独立的系统时钟,需要通过NTP实现各自系统时钟的自动同步。为便于理解,作如下假设:
在Device A和Device B的系统时钟同步之前,Device A的时钟设定为10:00:00am,Device B的时钟设定11:00:00am。
Device B作为NTP时间服务器,即Device A将使自己的时钟与Device B的时钟同步。
NTP报文在Device A和Device B之间单向传输所需要的时间为1秒。
系统时钟同步的工作过程如下:
Device A发送一个NTP报文给Device B,该报文带有它离开Device A时的时间戳,该时间戳为10:00:00am(T1)。
当此NTP报文到达Device B时,Device B加上自己的时间戳,该时间戳为11:00:01am(T2)。
当此NTP报文离开Device B时,Device B再加上自己的时间戳,该时间戳为11:00:02am(T3)。
当Device A接收到该响应报文时,Device A的本地时间为10:00:03am(T4)。
至此,Device A已经拥有足够的信息来计算两个重要的参数:
NTP报文的往返时延Delay=(T4-T1)-(T3-T2)=2秒。
Device A相对Device B的时间差offset=((T2-T1)+(T3-T4))/2=1小时。
这样,Device A就能够根据这些信息来设定自己的时钟,使之与Device B的时钟同步
###以上原理参考http://ntp.neu.edu.cn/archives/92 东北大学网络授时服务#####
三、NTP服务的安装配置
[root@localhost softs]# wget http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/ntp-4.2.6p5.tar.gz
[root@localhost softs]# tar xf ntp-4.2.6p5.tar.gz -C /usr/src/
[root@localhost softs]# cd /usr/src/ntp-4.2.6p5/
[root@localhost ntp-4.2.6p5]# ./configure --prefix=/usr/local/ntp --enable-all-clocks --enable-parse-clocks
[root@localhost ntp-4.2.6p5]# make
[root@localhost ntp-4.2.6p5]# make install
解释一下相关的配置文件
1、/etc/ntp.conf 这是ntp默认的主配置文件,不同的linux版本,可能改文件米目录不一样
2、/usr/share/zoneinfo 规定了各个时区的配置文件,例如,上海
[root@localhost Asia]# ls /usr/share/zoneinfo/Asia/Shanghai
Shanghai
3、/etc/sysconfig/clock linux 主要时区的设定文件。每次启动后linux操作系统会自动读取这个文件来设定系统显示的时间。
[root@localhost Asia]# cat /etc/sysconfig/clock
ZONE="Asia/Shanghai" 这里会使用上海这个文件的时间
4、/etc/localtime 显示时间本地系统时间的设定文件,如果clock文件中规定了使用的时间设定文件为/usr/share/zoneinfo/Asia/Shanghai,linux系统会复制一份为/etc/localtim额,所以系统的时间显示就会以Shanghai这个时间为准。
ntp服务默认的主配置文件
/etc/ntp.conf
[root@localhost bin]# cat /etc/ntp.conf | grep -v ^# | grep -v ^$
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1 -----------因为没有parameter部分,所以,该地址不受任何限制
restrict -6 ::1
server 0.rhel.pool.ntp.org--------上级时间服务器
server 1.rhel.pool.ntp.org
server 2.rhel.pool.ntp.org
server 127.127.1.0 ----------- local clock
fudge 127.127.1.0 stratum 10 -----fudge用户为这个时钟设置级别,对待内部系统时钟比较理想的情况是将时间源作为级别10来对待
driftfile /var/lib/ntp/drift -----------与上级时间服务器联系所花费的时间,记录在drift这个文件中
keys /etc/ntp/keys
权限的设定主要以 restrict 这个参数来设定,主要的语法为:restrict IP mask netmask_IP parameter
其中 IP 可以是软件地址,也可以是 default ,default 就类似 0.0.0.0
nomodify: 表示 Client 端不能更改 Server 端的时间参数,不过, Client 端仍然可以透过 Server 端来进行网络校时。
notrust: Client 除非通过认证,否则该 Client 来源将被视为不信任网域
noquery: 不提供 Client 端的时间查询 ; 如果 paramter 完全没有设定,那就表示该 IP 没有任何限制!
restrict 127.0.0.1 # 开启内部递归网络接口 lo
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
ntpd 5424 root 16u IPv4 18575 UDP *:ntp
ntpd 5424 root 17u IPv4 18577 UDP localhost.localdomain:ntp
ntpd 5424 root 18u IPv4 18578 UDP 192.168.254.153:ntp
23 Oct 15:05:12 ntpdate[23303]: step time server 192.168.254.153 offset 48.683654 sec 成功
相关的执行文件
/bin/date 查询、修改日期时间的命令
/sbin/hwclock 主机的BIOS时间与系统时间是分开的,所以使用date命令只是改的系统时间,要想将修改的时间写进bios必须还要root用户执行这个命令才可以。
/usr/sbin/ntpd ntp服务的守护进程
/usr/sbin/ntpdate ntp客户端用来连接ntp服务器的命令文件
/usr/sbin/ntpq 标准网络计时协议查询程序
/usr/sbin/ntptrace 跟踪网络计时协议主机链到它们的控制时间源
/sbin/clock 调整电脑硬件时间RTC,执行这个命令可以显示现在时刻。将硬件时间与系统时间调成一致。
接下来再用一下hwclock命令
下一个命令ntpq
remote refid st t when poll reach delay offset jitter
==============================================================================
*LOCAL(0) .LOCL. 10 l 62 64 377 0.000 0.000 0.001
remote 响应这个请求的ntp服务器的名称; refid NTP服务器使用的上一级NTP服务器; stremote服务器的级别;when 上次请求成功到现在的秒数;poll本地机和远程机多久同步一次;reach测试能否跟服务器连接;delay从本地鸡发送同步请求道ntp服务器的round trip time;offset主机与时间源同步的时候的时间偏移量(ms);jitter统计值
ntptrace ----查看ntp与上层服务器的关系,下面表示与第十层已经连上了
[root@localhost bin]# ntptrace -n 127.0.0.1
127.0.0.1: stratum 11, offset 0.000000, synch distance 0.000000
顺便介绍一下windows客户端的时间同步
win +R 打开运行,输入cmd
在命令行输入“net stop w32time”,在输入"net start w32time",最后输入net time /setsntp:"192.168.254.153"
提示:其实NTP服务的配置非常简单,好像貌似也没什么用,但是如果你是在玩集群的话,那你可要重视了,呵呵 !
NTP for Linux的更多相关文章
- linux服务器应用NTP配置时间同步
linux服务器应用NTP配置时间同步 • 为什么建议使用ntpd而不是ntpdate? #####原因很简单,ntpd是步进式的逐渐调整时间,而ntpdate是断点更新,比如现在服务器时间是9.18 ...
- Linux集群环境下NTP服务器时间同步
NTP介绍 NTP(Network Time Protocol,网络时间协议)是用来使网络中的各个计算机时间同步的一种协议.它的用途是把计算机的时钟同步到世界协调时UTC(Universal Time ...
- CentOS7 NTP 安装配置
NTP 网络时间协议用来同步网络上不同主机的系统时间.你管理的所有主机都可以和一个指定的被称为 NTP 服务器的时间服务器同步它们的时间.而另一方面,一个 NTP 服务器会将它的时间和任意公共 NTP ...
- 配置ntp服务
配置ntp服务(hadoop搭建可参考) 一:修改选定的服务器的本地时间 date -s '2016-10-07 16:29:30' +'%F %T' //需要设置的时间 二:修改后将时间写入到硬件时 ...
- 【linux】linux shell 日期格式化
获得当天的日期 date +%Y-%m-%d 输出: 2011-07-28 将当前日期赋值给DATE变量DATE=$(date +%Y%m%d) 有时候我们需要使用今天之前或者往后的日期,这时可以 ...
- linux中用shell获取昨天、明天或多天前的日期
linux中用shell获取昨天.明天或多天前的日期 时间 -- :: BlogJava-专家区 原文 http://www.blogjava.net/xzclog/archive/2015/12/0 ...
- linux中用shell获取时间,日期
linux中用shell获取昨天.明天或多天前的日期:在Linux中对man date -d 参数说的比较模糊,以下举例进一步说明:# -d, --date=STRING display time d ...
- linux在shell date获取时间的相关操作
获得当天的日期 date +%Y-%m-%d 输出: 2011-07-28 将当前日期赋值给DATE变量DATE=$(date +%Y%m%d) 有时候我们需要使用今天之前或者往后的日期,这时可以使用 ...
- Centos 7配置ntp时间同步
1.NTP时钟同步方式说明 NTP在linux下有两种时钟同步方式,分别为直接同步和平滑同步: 1)直接同步 使用ntpdate命令进行同步,直接进行时间变更.如果服务器上存在一个1 ...
随机推荐
- python在windows下连接mysql数据库
一,安装MySQL-python python 连接mysql数据库需要 Python interface to Mysql包,包名为 MySQL-python ,PyPI上现在到了1.2.5版本.M ...
- H264(ES)如何打包成H264(PES)
http://blog.csdn.net/u013898698/article/details/64919036 http://blog.csdn.net/cabbage2008/article/de ...
- Maven 管理的WEB项目发布到Tomcat上
1.需要Tomcat服务器 这里可以使用已下载好的Tomcat也可以使用Maven来自动引入Tomcat插件. 通过Maven引入Tomcat服务器 在项目的pom.xml文件中project 标签中 ...
- SQL注入工具实践
程序简介 超级SQL注入工具(SSQLInjection)是一款基于HTTP协议自组包的SQL注入工具,支持出现在HTTP协议任意位置的SQL注入,支持各种类型的SQL注入,支持HTTPS模式注入. ...
- ZOJ 3327 Friend Number
构造. (1)如果数字中带有$0$: 1.只有个位是$0$,这种情况就是给输入的数字$+10$再输出即可. 2.其余情况就是给输入的数字$+1$再输出即可. (2)如果数字中没有$0$: 从个位开始一 ...
- java.lang.ClassCastException: xut.bookshop.entity.User_$$_javassist_3 cannot be cast to javassist.util.proxy.Proxy
报错信息 java.lang.ClassCastException: xut.bookshop.entity.User_$$_javassist_3 cannot be cast to javassi ...
- Xamarin 中Visual Studio创建项目提示错误
Xamarin 中Visual Studio创建项目提示错误 错误信息:Object reference not set to an instance of an object 出现这种情况,是由于没 ...
- 【枚举】Petrozavodsk Summer Training Camp 2016 Day 6: Warsaw U Contest, XVI Open Cup Onsite, Sunday, August 28, 2016 Problem G. Equation
f(n)定义为n的十进制表示下所有位的平方和. 问你方程K*f(n)=n在a<=n<=b中的解的个数. 发现f(n)最大不超过2000,可以直接枚举f(n),然后判断K*f(n)的位的平方 ...
- codevs 1080 线段树练习--用树状数组做的
1080 线段树练习 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 一行N个方格,开始每个格子里都有一个整数.现在动态 ...
- Java高级架构师(一)第32节:Nginx的进程结构、基本配置
核心模块.事件模块.标准Http模块.可选Http模块.邮件模块.第三方模块和补丁.