NTP时间服务器:

       NTP(Network Time Protocol 网络时间协议)是一个用于同步计算机时钟的网络协议;它可以使计算机与其他服务器或时钟源进行时间同步,进行高精度的时间校正;NTP服务器是基于C/S架构的;NTP就是使一台或多台服务器(客户端)与时间服务器(服务端)之间进行时间同步(即客户端与服务端的时间同步),以保证时间的统一性;NTP服务器与客户端之间是基于UDP协议进行传输,使用的是UDP的123端口;

实验环境:

          OS: rhel6

          NTP服务器:192.168.10.111

          NTP客户端:192.168.10.113

1.首先在192.168.10.111 上安装NTP服务器

   # tar xf ntp-4.2.8p3.tar.gz

   # cd ntp-4.2.8p3

   # ./configure  --prefix=/usr/local/ntp  --enable-all-clocks  --enable-parse-clocks

   # make  &&  make install

2.修改主配置文件

    # vim /etc/ntp.conf

####1. 先处理权限方面的问题,包括放行上层服务器以及开放区网用户来源;
restrict default kod nomodify  nopeer noquery            <==拒绝 IPv4 的用户
restrict -6 default kod nomodify nopeer noquery        <==拒绝 IPv6 的用户

restrict 127.0.0.1              <==底下两个是默认值,放行本机来源
restrict -6 ::1

restrict 0.0.0.0 mask 0.0.0.0 nomodify  noquery       <==拒绝没有认证的用户端
restrict 192.168.10.0 mask 255.255.255.0 nomodify            <==放行区网来源

####2. 设定主机来源,请先将原本的 [0|1|2].centos.pool.ntp.org 的设定批注掉;              
server 0.cn.pool.ntp.org   prefer                <==prefer 该服务器优先
server 0.asia.pool.ntp.org
server 2.asia.pool.ntp.org

####3.预设时间差异分析文件与暂不用到的 keys 等,不需要更动它;
driftfile   /var/lib/ntp/drift
keys       /etc/ntp/keys

3.输出ntpd的man手册至man命令的查找路径

   # vim /etc/man.config,添加如下行即可

          MANPATH  /usr/local/ntp/share/man

4.输出ntpd的库文件给系统库查找路径

   # echo '/usr/local/ntp/share/ntp/lib' > /etc/ld.so.conf.d/ntpd.conf

5.而后让系统重新载入系统库

   # ldconfig

6.修改PATH环境变量,让系统可以直接使用ntpd的相关命令

   # vim /etc/profile.d/ntpd.sh

          export PATH=$PATH:/usr/local/ntp/sbin

7.重启ntpd服务并让其开机自动启动

   # chkconfig --add ntpd

   # chkconfig ntpd on

   # service ntpd restart

8.客户端端使用ntpdate 程序来执行同步

   # ntpdate ntpd-server-ip

9.在客户端添加计划任务

   # crontab -e

        */5 * * * * /usr/sbin/ntpdate 192.168.10.111 &> /dev/null

   # service crond restart

   # crontab -l


PS:

1.restrict指令指定可以进行NTP通信的IP地址或网段:

           restrict <IP 地址><子网掩码>|<网段> <子网掩码> [ ignore|nomodify|noquery|notrap|notrust|nokod ]

                     ignore:关闭所有NTP服务;

                     nomodify :表示客户端不能更改NTP服务器的时间参数,但可以通过NTP服务器进行时间校对;

                     noquery: 不提供NTP服务;

                     notrap:不提供trap远程事件登录的功能;

                     notrust: 聚聚没有通过认证的客户端;

                     kod:kod技术可以组织“Kiss of Death”包(一种DOS***)对服务器的破坏,使用此参数将开启该功能 ;

                     nopeer:不与其他同一层的NTP服务器进行时间同步;

若果没有指定选项,那就表示指定的客户端在访问NTP服务器时没有任何限制;

2.server指令指定该NTP服务器上层NTP服务器,如果有多个上层NTP服务器,则参考prefer的优先级进行时间同步,prefer越小优先级越高:

           server [IP|FQDN] [prefer]

3.broadcast指令指定进行NTP时间广播的网段,在不指定此参数时NTP服务器会对所有能访问的网段广播;

4.ntpq -p 命令查看列出目前我们的 NTP 与相关的上层 NTP 的状态:  

下面对部分参数进行说明:

              remote:可以是 NTP 主机的 IP 或主机名啰~注意最左边的符号;

                                如果有『 * 』代表目前正在作用当中的上层 NTP;

                                如果是『 + 』代表也有连上线,而且可作为下一个提供时间更新的候选者;

               refid:参考的上一层 NTP 主机的地址;

               st:就是 stratum 阶层啰!;

               when:几秒钟前曾经做过时间同步化更新的动作;

               poll:下一次更新在几秒钟之后;

               reach:已经向上层 NTP 服务器要求更新的次数;

               delay:网络传输过程当中延迟的时间,单位为 10^(-6) 秒;

               offset:时间补偿的结果,单位与 10^(-3) 秒;

               jitter:Linux 系统时间与 BIOS 硬件时间的差异时间, 单位为 10^(-6) 秒;