linux服务管理之ntp时间服务器配置

发布时间:2020-09-02编辑:脚本学堂
本文介绍了linux下ntp服务的配置方法,ntp时间同步服务器,ntp时间同步,ssh双向等效性验证时间同步服务器,需要的朋友参考下。

一、ntp相关知识

什么是时间同步服务器

Network Time Protocol(NTP)是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶毒的协议攻击。

NTP提供准确时间,首先要有准确的时间来源,这一时间应该是国际标准时间UTC。 NTP获得UTC的时间来源可以是原子钟、天文台、卫星,也可以从Internet上获取。这样就有了准确而可靠的时间源。时间按NTP服务器的等级传播。按照离外部UTC 源的远近将所有服务器归入不同的Stratum(层)中。Stratum-1在顶层,有外部UTC接入,而Stratum-2则从Stratum-1获取时间,Stratum-3从Stratum-2获取时间,以此类推,但Stratum层的总数限制在15以内。所有这些服务器在逻辑上形成阶梯式的架构相互连接,而Stratum-1的时间服务器是整个系统的基础。

linux中,时间同步在真实环境中使用较多,不同机器时间不一致,向同一台数据库服务器写数据会出问题。这仅仅只是一个应用。

先了解linux系统中与时间相关的的一些linux命令
 

#查看时间 
[root@serv01 ~]# date 
Wed Aug 7 17:47:44 CST 2013 
[root@serv01 ~]# date -s "" 
  
#查看时区 
[root@larrywen /]# cat /etc/sysconfig/clock 
# The time zone of the system is defined bythe contents of /etc/localtime. 
# This file is only for evaluation bysystem-config-date, do not rely on its 
# contents elsewhere. 
ZONE="Asia/Chongqing" 
  
#可以重新设置时区 
[root@larrywen /]# system-config-date 
  
#查看不同地区的时区信息 
[root@larrywen /]# ls /usr/share/zoneinfo/ 
Africa     Australia  Cuba     Etc     GMT0       Iceland      Japan     MST      Poland      right     Universal  Zulu 
America    Brazil     EET      Europe  GMT-0      Indian       Kwajalein  MST7MDT Portugal    ROC        US 
Antarctica Canada     Egypt    Factory GMT+0      Iran         Libya      Navajo  posix       ROK        UTC 
Arctic     CET        Eire     GB      Greenwich  iso3166.tab  MET       NZ       posixrules  Singapore WET 
Asia       Chile      EST      GB-Eire Hongkong   Israel       Mexico     NZ-CHAT PRC         Turkey     W-SU 
Atlantic   CST6CDT    EST5EDT  GMT     HST        Jamaica      Mideast   Pacific  PST8PDT     UCT       zone.tab 
  
#设置时区不重要,重要的是不同机器之间的时间同步起来 
[root@serv01 ~]# cat /etc/sysconfig/clock 
ZONE="Asia/Chongqing" 
[root@serv01 ~]# date 
Wed Aug 7 09:52:31 CST 2013 
  
#修改时区 
[root@serv01 ~]# date 
Wed Aug 7 09:52:31 CST 2013 
#修改成日本时区 
[root@serv01 ~]# vim /etc/sysconfig/clock 
[root@serv01 ~]# cat /etc/sysconfig/clock 
ZONE="Asia/Tokyo" 
#拷贝内容 
[root@serv01 ~]# cp/usr/share/zoneinfo/Asia/Tokyo /etc/localtime 
cp: overwrite `/etc/localtime'? Y 
#查看时间,发现立即改变,不需要重启 
[root@serv01 ~]# date 
Wed Aug 7 10:55:44 JST 2013 
  
#使用工具修改时间
#安装工具 
[root@serv01 ~]# yum install/usr/bin/system-config-date -y 
[root@serv01 ~]# yum installsystem-config-date -y 
#安装system-config-date的时候会把ntp服务器安装上 
  
#支持X Window的形式登录 
[root@larrywen 0807]# ssh 192.168.1.11 -X 
root@192.168.1.11's password: 
Last login: Wed Aug  7 18:19:30 2013 from 192.168.1.1 
/usr/bin/xauth:  creating new authority file /root/.Xauthority 
#修改时间,改成重庆时区 
[root@serv01 ~]# system-config-date 
Gtk-Message: Failed to load module"pk-gtk-module": libpk-gtk-module.so: cannot open shared object file:No such file or directory 
[root@serv01 ~]# cat /etc/localtime 
[root@serv01 ~]# date 
Wed Aug 7 10:03:22 CST 2013 

2)、硬件时钟和软件时钟
linux将时钟分为系统时钟(systemclock)和硬件(real time clock,简称rtc)时钟两种。
系统时间是指当前linux kernel中的时钟,也就是软件时钟。(脚本学堂 www.jb200.com 整理)
而硬件时钟则是主板上由电池供电的那个主板硬件时钟,这个时钟可以在bios的“standard bios feture”项中进行设置。
 

#同步硬件时钟和软件时钟 
[root@serv01 ~]# clock --help 
hwclock - query and set the hardware clock(RTC) 
  
Usage: hwclock [function] [options...] 
  
Functions: 
  -s | --hctosys     set the system time from the hardware clock 
  -w | --systohc      set the hardware clock to the currentsystem time 
  
#ntp:Network TimeProtocal 
 

 
二、ntp同步时间
 

#第一步,安装ntp
[root@serv01 ~]# yum install ntp* -y 
  
#查询安装的RPM包 
[root@serv01 ~]# rpm -qa|grep ntp 
ntp-4.2.4p8-2.el6.x86_64 
ntpdate-4.2.4p8-2.el6.x86_64 
fontpackages-filesystem-1.41-1.1.el6.noarch 
[root@serv01 ~]# chkconfig|grep ntp 
ntpd                 0:off       1:off       2:off       3:off       4:off       5:off       6:off 
ntpdate               0:off       1:off       2:off       3:off       4:off       5:off       6:off 
  
[root@serv01 ~]# ls /etc/ntp.conf 
/etc/ntp.conf 
[root@serv01 ~]# rpm -ql ntp 
  
<span style="color:#ff0000">#第二步,修改配置文件</span> 
[root@serv01 ~]# vim /etc/ntp.conf 
[root@serv01 ~]# man 5 ntp.conf 
  
[root@serv01 ~]# vim /etc/ntp.conf 
[root@serv01 ~]# cat /etc/ntp.conf 
#配置如下 
restrict 192.168.1.0 mask 255.255.255.0nomodify notrap 
#注释上一级时间同步服务器 
#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.0stratum 10     
  
#第三步,启动服务 
[root@serv01 ~]# /etc/init.d/ntpd start 
Starting ntpd:                                            [  OK  ] 
#重启后生效 
[root@serv01 ~]# chkconfig ntpd on 
[root@serv01 ~]# chkconfig|grep ntpd 
ntpd                 0:off       1:off       2:on       3:on       4:on       5:on       6:off 
ntpdate               0:off       1:off       2:off       3:off       4:off       5:off       6:off 
[root@serv01 ~]# 
  
#serv02的配置 
[root@serv02 ~]# vim /etc/ntp.conf 
[root@serv02 ~]# cat /etc/ntp.conf 
server 192.168.1.11 
[root@serv02 ~]# vim /etc/ntp/step-tickers 
[root@serv02 ~]# cat /etc/ntp/step-tickers 
# List of servers used for initialsynchronization. 
192.168.1.11 
[root@serv02 ~]# date 
Wed Aug 7 18:30:18 CST 2013 
[root@serv02 ~]# /etc/init.d/ntpdate start 
ntpdate: Synchronizing with time server:                   [  OK  ] 
[root@serv02 ~]# date 
Wed Aug 7 10:29:39 CST 2013 

三、ssh双向等效性验证时间同步服务器
 

#serv01 
[root@serv01 ~]# ssh-keygen 
[root@serv01 ~]# ssh-copy-id -i~/.ssh/id_rsa.pub 192.168.1.12 
[root@serv01 ~]# ssh-copy-id -i~/.ssh/id_rsa.pub 192.168.1.11 
  
#serv02 
[root@serv02 ~]# ssh-keygen 
[root@serv02 ~]# ssh-copy-id -i~/.ssh/id_rsa.pub 192.168.1.11 
  
#可以查看同步的时间 
[root@serv01 ~]# ssh 192.168.1.11 date; ssh192.168.1.12 date; 
Wed Aug 7 10:34:50 CST 2013 
Wed Aug 7 10:34:50 CST 2013 
  
#修改时间 
[root@serv01 ~]# date -s"10:38:00" 
Wed Aug 7 10:38:00 CST 2013 
  
#查看serv02的时间 
[root@serv02 ~]# date 
Wed Aug 7 10:35:42 CST 2013 
#关闭服务 
[root@serv02 ~]# /etc/init.d/ntpdate stop 
#开启服务 
[root@serv02 ~]# /etc/init.d/ntpdate start 
ntpdate: Synchronizing with timeserver:                   [  OK  ] 
#可以看到已经同步了 
[root@serv01 ~]# ssh 192.168.1.11 date; ssh192.168.1.12 date 
Wed Aug 7 10:38:57 CST 2013 
Wed Aug 7 10:38:57 CST 2013 
  
[root@serv02 ~]# ntpq -p 192.168.1.11 
    remote           refid      st t when poll reach   delay  offset  jitter 
============================================================================== 
*LOCAL(0)        .LOCL.          10 l  33   64  377   0.000    0.000   0.000 
  
#使用命令同步,并将同步命令做成死循环 
[root@serv02 ~]# ntpdate 192.168.1.11 
 7Aug 23:02:44 ntpdate[1342]: adjust time server 192.168.1.11 offset 0.000041 sec 
#可以看到已经同步了 
[root@serv01 ~]# ssh 192.168.1.11 date; ssh192.168.1.12 date 
Wed Aug 7 23:02:53 CST 2013 
Wed Aug 7 23:02:53 CST 2013 
[root@serv01 ~]# date -s "10:50" 
Wed Aug 7 10:50:00 CST 2013 
  
[root@serv02 ~]# ntpdate 192.168.1.11 
 7Aug 10:51:10 ntpdate[1372]: step time server 192.168.1.11 offset -43989.248450sec 
[root@serv01 ~]# ssh 192.168.1.11 date; ssh192.168.1.12 date 
Wed Aug 7 10:51:15 CST 2013 
Wed Aug 7 10:51:15 CST 2013 
  
#写成死循环 
[root@serv02 ~]# while :; do ntpdate192.168.1.11; sleep 3; done 
 7Aug 10:53:27 ntpdate[1380]: adjust time server 192.168.1.11 offset -0.000066sec 
 7Aug 10:53:31 ntpdate[1382]: adjust time server 192.168.1.11 offset 0.000133 sec 
[root@serv01 ~]# date -s "10:57" 
Wed Aug 7 10:57:00 CST 2013 
[root@serv01 ~]# ssh 192.168.1.11 date; ssh192.168.1.12 date 
Wed Aug 7 10:57:12 CST 2013 
Wed Aug 7 10:57:13 CST 2013 
  
#可以放到后台执行 
[root@serv02 ~]# while :; do ntpdate192.168.1.11; sleep 3; done > /dev/null 2>&1 & 
  
#写到配置文件,下次启动自动执行 
[root@serv02 ~]# vim /etc/rc.local 
[root@serv02 ~]# tail -n1 /etc/rc.local 
while :; do ntpdate 192.168.1.11; sleep 3;done >/dev/null 2>&1 & 
  
#另外一种方式(不安全:在同一网段的任何人都可以使用) 
serv01 
[root@serv01 ~]# chkconfig xinetd on 
[root@serv01 ~]# vim /etc/xinetd.d/ 
chargen-dgram   daytime-dgram   discard-dgram   echo-dgram      tcpmux-server   time-stream     
chargen-stream  daytime-stream  discard-stream  echo-stream     time-dgram    
#将disbale由yes改为no  
[root@serv01 ~]# vim/etc/xinetd.d/time-stream 
#将disbale由yes改为no  
[root@serv01 ~]# vim/etc/xinetd.d/time-dgram 
#也可以这样打开 
[root@serv01 ~]# chkconfig time-stream on 
[root@serv01 ~]# chkconfig time-dgram on 
  
#启动xinetd服务 
[root@serv01 ~]# /etc/init.d/xinetd start 
Starting xinetd:                                          [  OK  ] 
  
#安装openssh-clients 
[root@serv01 ~]# yum installopenssh-clients -y 
#制作公钥 
[root@serv01 ~]# ssh-keygen 
#拷贝到本机 
[root@serv01 ~]# ssh-copy-id -i.ssh/id_rsa.pub 192.168.1.11 
#拷贝到serv02 
[root@serv01 ~]# ssh-copy-id -i.ssh/id_rsa.pub 192.168.1.12 
#设置时间 
[root@serv01 ~]# date -s"11:36:00" 
Wed Aug 7 11:36:00 CST 2013 
#安装rdate 
[root@serv02 /]# yum install rdate -y 
#同步时间 
[root@serv02 /]# rdate -s 192.168.1.11 
[root@serv01 ~]# ssh 192.168.1.11 date; ssh192.168.1.12 date; 
Wed Aug 7 11:36:29 CST 2013 
Wed Aug 7 11:36:28 CST 2013 
  
#可以写死循环 
[root@serv02 ~]# while :; do rdate -s192.168.1.11; sleep 3; done >/dev/null 2>&1 &^C 
[root@serv02 ~]# vi /etc/rc.local 
[root@serv02 ~]# tail -n1 /etc/rc.local 
while :; do rdate -s 192.168.1.11; sleep 3;done >/dev/null 2>&1 &

以上就是linux下ntp服务的安装与配置方法,希望对大家有所帮助。