标签:linux ntp ntp server
系统时间和硬件时间
硬件时间:记录在主板CMOS上的时间,由主板上的纽扣电池供电运行,电脑关机后也在正常运行。
系统时间:Linux kernel中的时钟,操作系统启动时,会去读取硬件时间,之后就独立运行。
运行久了,两者之间会有较大的偏差。集群也一样,运行久了不同的机器之间在时间上会有偏差。这是就需要进行时间上的同步。
1)查看系统时间:date
date直接查看:
[root@baby-virt-4 ~]# date Sat Jun 6 00:01:08 CST 2015
也可以对输出进行格式化:
[root@baby-virt-4 ~]# date +"%Y-%m-%d %H:%M:%S" 2015-06-06 00:00:58
重设系统时间:date -s 或 date --set="pattern"
[root@baby-virt-4 ~]# date --set="2015-06-11 15:15:00" Thu Jun 11 15:15:00 CST 2015 [root@baby-virt-4 ~]# date +"%Y-%m-%d %H:%M:%S" 2015-06-11 15:15:16
2)查看硬件时间:hwclock
hwclock直接查看:
[root@baby-virt-4 ~]# hwclock Thu 11 Jun 2015 11:18:26 PM CST -0.345021 seconds
重设硬件时间:
[root@baby-virt-4 ~]# hwclock --set --date="2015-06-06 00:00:00" [root@baby-virt-4 ~]# hwclock Sat 06 Jun 2015 12:00:06 AM CST -0.594816 seconds
硬件时间同步至系统时间:hwclock -s 或 hwclock --hctosys
系统时间同步至硬件时间:hwclock -w 或 hwclock --systohc
时间和时区
时区(Time Zone)是地球上的区域使用同一个时间定义。在不同的时区,时间也不一致,为了统一这个时间,就有了UTC(协调世界时,又称世界统一时间),计算机设置的就是这个时间,在从时间服务器出同步时间时,对方提供的也是这个时间,然后在本地计算机由于时区文件的设置,使得显示的时间为当地时区的时间。下面就介绍下如何设置时区。
在/usr/share/zoneinfo目录下有已经编译好的timezone文件,各国的大城市基本都在这儿了,可以通过file查看文件格式:
[root@baby-CentOS zoneinfo]# file UTC UTC: timezone data, version 2, 1 gmt time flag, 1 std time flag, no leap seconds, no transition times, 1 abbreviation char
如果想查看某个时区的时间可通过zdump命令,直接指定某个时区文件进行查看
[root@baby-CentOS zoneinfo]# zdump America/New_York America/New_York Thu Jun 11 04:22:14 2015 EDT
那么如何设置本机的时区呢?这里有两种方法:
1)修改/etc/localtime这个文件,可以复制/usr/share/zoneinfo目录下某个时区文件/etc目录下,重命名位localtime:
[root@baby-CentOS zoneinfo]# cp -a America/New_York /etc/localtime [root@baby-CentOS zoneinfo]# date Thu Jun 11 04:28:17 EDT 2015
也可以直接将/etc/localtime文件软链接至/usr/share/zoneinfo目录下的某个时区文件:
[root@baby-CentOS zoneinfo]# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime [root@baby-CentOS zoneinfo]# date Thu Jun 11 16:32:28 CST 2015
2)修改TZ环境变量也可以实现时区的更换,通过tzselect命令选择时区(按照提示输入1,2.....就行),选择完成之后会输出类似这样的信息:
You can make this change permanent for yourself by appending the line TZ=‘Asia/Shanghai‘; export TZ to the file ‘.profile‘ in your home directory; then log out and log in again.
直接在命令行输入 TZ=‘Asia/Shanghai‘; export TZ 即可。在date查看时间时,系统是先去查找TZ环境变量,TZ没有设置采取寻找/etc/localtime文件,所以TZ环境变量设置之后会覆盖/etc/localtime文件信息,但是环境变量的设置在下次登录时就无效了,若要永久有效,可将命令写到/etc/profile文件中。
时间服务器搭建
在集群环境中,时间的准确性和统一性非常重要,ntp就用来解决这个问题。NTP(Network Time Protocol,网络时间协议)是用来使网络中的各个计算机时间同步的一种协议。它的用途是把计算机的时钟同步到世界协调时UTC,其精度在局域网内可达0.1ms。我们可以将本地的几台计算机同步到网上的NTP server,然后再将这几台计算机做成NTP Relay Server,给本地的其他计算机提供同步服务。下面开始介绍如何搭建。
[root@baby-virt-4 ~]# yum install ntp
/etc/ntp.conf是ntp的主配置文件,介绍下里面的参数(部分参数直接copy from官方网站,具体怎么用我也不清楚):
server #指定向哪台ntp server同步时间
restrict #访问控制(对指定的ip地址进行访问控制)
restrict参数:
Parameters Definitions
ignore Deny all packets and queries #估计是所有从123号端口进来的数据包都丢弃
kod Send Kiss-Of-Death packet on access violation
#若违反了连接规则,则直接发送Kiss-Of-Death数据包
nomodify Deny ntpq / ntpdc queries that attempt to modify the server
#客户端不能更改服务端的时间参数
notrap Deny control message trap service #......
noquery Deny all ntpq / ntpdc queries #拒绝所有ntpq和ntpdc的查询
noserve Deny all queries - except ntpq / ntpdc
#拒绝除ntpq和ntpdc的所有查询,这项添加后客户端将无法同步
notrust Deny access unless cryptographically authenticated (ver 4.2 onwards)
#客户端除非通过认证,否则该客户端来源将被视为不信任子网
nopeer Deny all packets that attempt to establish a peer association
#
#restrict default kod nomodify notrap nopeer noquery
#restrict -6 default kod nomodify notrap nopeer noquery
#restrict 127.0.0.1
#默认的是上面这几项,允许本地的所有操作,对所有的ipv4,ipv6进行这几项设置“kod nomodify
#notrap nopeer noquery”
#
#restrict 192.168.0.0 mask 255.255.255.0 notrap nomodify
#也可以通过上面的设置放宽对指定网段的限制
#
#restrict default kod nomodify notrap nopeer noquery noserve
#restrict -6 default kod nomodify notrap nopeer noquery noserve
#restrict 127.0.0.1
#restrict cn.pool.ntp.org kod nomodify notrap nopeer noquery
#restrict 0.cn.pool.ntp.org kod nomodify notrap nopeer noquery
#restrict 192.168.0.0 mask 255.255.255.0 notrap nomodify
#server cn.pool.ntp.org prefer #指定网络上的NTP server
#server 0.cn.pool.ntp.org #指定网络上的NTP server
#还可以通过上面的设置只对192.168.0.0/24这个网段开放同步服务,这个需要在最上面的两行加上noserve,
#不过这样会阻止NTP server进来的信息,使得这台时间服务器服务和指定的NTP server进行同步,
#还需要加上红色的两行。
标签:linux ntp ntp server
原文地址:http://ljbaby.blog.51cto.com/10002758/1660954