NTP服务器未联网,怎么配置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NTP服务器未联网,怎么配置相关的知识,希望对你有一定的参考价值。

我现在有个纯局域网想配置NTP服务器,目前环境中没有连接外网,也就是说无法同步到外网的NTP服务器。我现在想在局域网中的一台linux上配置NTP服务器,通过更新这台linux的系统时间,达到同步更新到每个NTP客户端系统的目的。这个该怎么修改配置文件,请赐教。

二、配置ntp服务器端
restrict 0.0.0.0 mask 0.0.0.0 nomodify notrap noquery

restrict 192.168.166.0 mask 255.255.255.0 nomodify

restrict 127.0.0.1

server 210.72.145.44 prefer

server 127.127.1.0

fudge 127.127.1.0 stratum 8

driftfile /var/lib/ntp/drift

keys /etc/ntp/keys

说明:关于权限设定部分
权限的设定主要以 restrict 这个参数来设定,主要的语法为:
restrict IP地址 mask 子网掩码 参数
其中 IP 可以是IP地址,也可以是 default ,default 就是指所有的IP
参数有以下几个:
ignore :关闭所有的 NTP 联机服务
nomodify:客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时。
notrust :客户端除非通过认证,否则该客户端来源将被视为不信任子网
noquery :不提供客户端的时间查询
注意:如果参数没有设定,那就表示该 IP (或子网)没有任何限制!

三、查看NTP服务的运行状况
#watch ntpq -p

参数说明:
remote: 它指的就是本地机器所连接的远程NTP服务器
refid: 它指的是给远程服务器(e.g. 193.60.199.75)提供时间同步的服务器
st: 远程服务器的层级别(stratum). 由于NTP是层型结构,有顶端的服务器,多层的Relay Server再到客户端. 所以服务器从高到低级别可以设定为1-16. 为了减缓负荷和网络堵塞,原则上应该避免直接连接到级别为1的服务器的.
t: 这个.....我也不知道啥意思^_^
when: 我个人把它理解为一个计时器用来告诉我们还有多久本地机器就需要和远程服务器进行一次时间同步
poll: 本地机和远程服务器多少时间进行一次同步(单位为秒). 在一开始运行NTP的时候这个poll值会比较小,那样和服务器同步的频率也就增加了,可以尽快调整到正确的时间范围.之后poll值会逐渐增大,同步的频率也就会相应减小
reach: 这是一个八进制值,用来测试能否和服务器连接.每成功连接一次它的值就会增加
delay: 从本地机发送同步要求到服务器的round trip time
offset: 这是个最关键的值, 它告诉了我们本地机和服务器之间的时间差别. offset越接近于0,我们就和服务器的时间越接近
jitter: 这是一个用来做统计的值. 它统计了在特定个连续的连接数里offset的分布情况. 简单地说这个数值的绝对值越小我们和服务器的时间就越精确

四、客户端配置
ntpdate 192.168.166.100
LINUX做为客户端自动同步时间
如果想定时进行时间校准,可以使用crond服务来定时执行。
编辑 /etc/crontab 文件
加入下面一行:
30 8 * * * root /usr/sbin/ntpdate 192.168.166.100; /sbin/hwclock -w #192.168.0.1是NTP服务器的IP地址
然后重启crond服务
service crond restart
这样,每天 8:30 Linux 系统就会自动的进行网络时间校准。
WINDOWS 需要打开windows time服务和RPC的二个服务
如果在打开windows time 服务,时报 错误1058,进行下面操作
1.运行 cmd 进入命令行,然后键入
w32tm /register 进行注册
正确的响应为:W32Time 成功注册。
2.如果上一步正确,用 net start "windows time" 或 net start w32time 启动服务。

五、报错说明
当用ntpdate -d 来查询时会发现导致 no server suitable for synchronization found 的错误的信息有以下2个:

错误1.Server dropped: Strata too high
在ntp客户端运行ntpdate serverIP,出现no server suitable for synchronization found的错误。
在ntp客户端用ntpdate –d serverIP查看,发现有“Server dropped: strata too high”的错误,并且显示“stratum 16”。而正常情况下stratum这个值得范围是“0~15”。
这是因为NTP server还没有和其自身或者它的server同步上。
以下的定义是让NTP Server和其自身保持同步,如果在/ntp.conf中定义的server都不可用时,将使用local时间作为ntp服务提供给ntp客户端。
server 127.127.1.0 fudge

127.127.1.0 stratum 8

在ntp server上重新启动ntp服务后,ntp server自身或者与其server的同步的需要一个时间段,这个过程可能是5分钟,在这个时间之内在客户端运行ntpdate命令时会产生no server suitable for synchronization found的错误。
那么如何知道何时ntp server完成了和自身同步的过程呢?
在ntp server上使用命令:

# watch ntpq -p

出现画面:

Every 2.0s: ntpq -p Thu Jul 10 02:28:32 2008
remote refid st t when poll reach delay offset jitter
==============================================================================
192.168.30.22 LOCAL(0) 8 u 22 64 1 2.113 179133. 0.001
LOCAL(0) LOCAL(0) 10 l 21 64 1 0.000 0.000 0.001

注意LOCAL的这个就是与自身同步的ntp server。
注意reach这个值,在启动ntp server服务后,这个值就从0开始不断增加,当增加到17的时候,从0到17是5次的变更,每一次是poll的值的秒数,是64秒*5=320秒的时间。
如果之后从ntp客户端同步ntp server还失败的话,用ntpdate –d来查询详细错误信息,再做判断。

错误2.Server dropped: no data
从客户端执行netdate –d时有错误信息如下:
transmit(192.168.30.22)
transmit(192.168.30.22)
transmit(192.168.30.22)
transmit(192.168.30.22)
transmit(192.168.30.22)
192.168.30.22: Server dropped: no data
server 192.168.30.22, port 123
.....
28 Jul 17:42:24 ntpdate[14148]: no server suitable for synchronization found
出现这个问题的原因可能有2:

1.检查ntp的版本,如果你使用的是ntp4.2(包括4.2)之后的版本,在restrict的定义中使用了notrust的话,会导致以上错误。
使用以下命令检查ntp的版本:
# ntpq -c version

下面是来自ntp官方网站的说明:
The behavior of notrust changed between versions 4.1 and 4.2.
In 4.1 (and earlier) notrust meant "Don't trust this host/subnet for time".
In 4.2 (and later) notrust means "Ignore all NTP packets that are not cryptographically authenticated." This forces remote time servers to authenticate themselves to your (client) ntpd
解决:
把notrust去掉。

2.检查ntp server的防火墙。可能是server的防火墙屏蔽了upd 123端口。
可以用命令
#iptables INPUT -p udp -m udp --dport 123 -j ACCEPT
如果觉得麻烦就直接把防火墙停掉
#service iptables stop

来关掉iptables服务后再尝试从ntp客户端的同步,如果成功,证明是防火墙的问题,需要更改iptables的设置。追问

我不向其他NTP请求更新时间,做到以我为主,这个怎么配置?

参考技术A 修改配置文件/etc/ntp.conf,把里面默认的server设置都注释掉,添加本地环回地址为server,如下:
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server 127.127.1.0
启动系统ntpd服务后使用ntpstat查看状态。如果显示“synchronised to local net at stratum 6”,表示启动成功。
再使用netstat -nlpu命令查看,如果123端口正常监听,再把123/udp添加进防火墙就没啥问题了。

配置NTP服务ntpd/ntp.conf

host1上安装ntp组件

yum -y install ntp

 

host1上调整时间

 

这一步为确保host1上的时间与本地时间保持一致,如果可以联网的情况下执行命令

 
  1. ntpdate 0.centos.pool.ntp.org #该网址为centos网络上的时间同步服务器

  2. 一般情况下,我们的集群为内网环境,无法和外网进行联网同步之间,那么手动执行命令调整时间
date -s '2008-05-23 01:01:01' + '%F %T' #2008-05-23 01:01:01为将要设定的时间

host1上修改配置文件/etc/ntp.conf

vi /etc/ntp.conf

添加下面两行,表示将本地的硬件时间也作为同步的时间源之一,这样在不联网的时候可以把本机时间作为同步时间源, 在内网环境下,可以把配置文件中其他的server都删除掉。 

server 127.127.1.0 # local clock 

fudge 127.127.1.0 stratum 10

如果集群是在一个封闭的局域网内,可以屏蔽掉默认的server:
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst

 

host1上配置客户端的授权

restrict 192.168.71.221 mask 255.255.255.250 nomodify notrap

也就是给指定的机器(客户端)设置访问NTP Server的权限,这是通过restrict配置项实现的,以下是它的格式说明。

 

 

其中parameter的参数主要有:
ignore        :    拒绝所有类型的ntp连接
nomodify    :    客户端不能使用ntpc与ntpq两支程式来修改服务器的时间参数
noquery        :    客户端不能使用ntpq、ntpc等指令来查询服务器时间,等于不提供ntp的网络校时
notrap        :    不提供trap这个远程时间登录的功能
notrust        :    拒绝没有认证的客户端
nopeer        :    不与其他同一层的ntp服务器进行时间同步

让我们通过一个例子来解释一下,在 /etc/ntp.conf中加入如下一行:

restrict 10.221.18.112 mask 255.255.255.240 nomodify notrap

这一行的含义是授权10.221.18.112网段上的所有机器可以从这台机器上查询和同步时间。这里的配置涉及到了一些网络知识。 对于第一个参数[address] 它可能是一个IP,也可能是一个网段,这取决于后面给出的子网掩码。如果这里的子网掩码是255.255.255.255,那么配置就变成了只授权给IP是10.221.18.112的那一台机器连接!但是这里子网掩码是255.255.255.240,则此时的10.221.18.112就是一个网络标识了!它代表的是这样一个网段:

网络标识
(网段名)
主机广播地址
起始结束
10.221.18.11210.221.18.11310.221.18.12610.221.18.127
 

host1上启动ntp组件

 
  1. service ntpd start #启动ntpd时间服务器

  2. chkconfig ntpd on #开机自启动

需要同步时间的服务器ntp组件安装

这里指的就是host2,host3

host2,host3上安装ntp组件

在host2,host3上分别执行命令安装ntp,跟上面《host1上安装ntp组件》安装方式一致,其余安装方式也参考上面

yum -y install ntp

host2,host3上修改配置文件/etc/ntp.conf

vi /etc/ntp.conf

删除其他的server 开头的配置项,这里一定要删除,只同步我们配置的那台服务器,添加上面设置的NTP服务器地址 

server host1

host2,host3上启动ntp组件并测试

 
  1. service ntpd start #启动ntpd时间服务器

  2. chkconfig ntpd on #开机自启动

查看与时间同步服务器的时间偏差

 
  1. [root@host2 ~]# ntpdc -c loopinfo

  2. offset: 0.001014 s #时间偏差极小,即同步了

  3. frequency: 29.720 ppm

  4. poll adjust: 30

  5. watchdog timer: 929 s

查看当前同步的时间服务器,查看没问题就安装成功了

 
  1. [root@host2 ~]# ntpq -p

  2. remote refid st t when poll reach delay offset jitter

  3. ==============================================================================

  4. *host1 202.112.29.82 3 u 764 1024 377 0.369 7.155 7.045

  5. #这里出现host1就表示host2与host1自动同步时间,host1前面的*表示正在使用的时间同步服务器,如果配置多个,还有出现+开头的,表示候选的时间同步服务器

至此ntp时间同步服务器全部搭建成功,host1作为被同步时间的时间同步服务器,host2,host3自动与host1进行时间同步。补充说明:以上配置为最基础的ntp配置,其他还有很多可以配置的选项。时间同步也可以手动采用ntpdate host1的方式进行,另外后续用cloudera manager安装cdh的时候,一定要采用本文方式安装,如果用crontab + ntpdate host1的方式,cloudera manager是无法判断是否安装了ntp的,会报"The host’s NTP service is not synchronized to any remote server."这样的错误或警告。

开发者涨薪指南 48位大咖的思考法则、工作方式、逻辑体系

以上是关于NTP服务器未联网,怎么配置的主要内容,如果未能解决你的问题,请参考以下文章

配置NTP服务ntpd/ntp.conf

NTP时间服务器搭建及配置

NTP服务器的配置和使用

centos6.3 ntp时间同步怎么配置 ?

sntp 服务器如何配置

搭建NTP时间服务器