交换机无法发送ntp报文
操作系统
华为交换机无法跟Windows NTP 时钟服务器进行同步故障处理

weixin_34125592
转载
关注
0点赞·2396人阅读
故障现象:
所有华为的交换机满屏的警告日志 Reason=Clock selection failed - No selectable clock ,clock status: unsynchronized
处理过程:
1、查华为知识库,有一篇类似的故障:http://supporthuaweicom/enterprise/KnowledgebaseReadActionactioncontentId=KB1000063521,抓包的结果也一样为收到的NTP报文的rdsp值超过1秒(我的为3200ms),根据RFC1305规定, 最大的同步距离是1秒,距离的计算公式包含peerrootdispersion的值,所以一旦rdsp达到1000ms,超过了1秒这个阈值,所以本设备收到报文后认为报文非法并丢弃。
该KB的处理方法是将HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time\Config\LocalClockDispersion 的值由10改为0,改完后在cmd窗口执行命令"w32tm /config /update"来重启时间服务。
使用后仍无效。
2、查询微软KB库,配置 Windows 时间服务以使用外部时间源,配置方法如下:https://supportmicrosoftcom/zh-cn/kb/816042,NTP Server设置为cnpoolntporg,测试可用,配置完成后故障未能排除。
3、使用gpedit组策略配置-计算机配置--管理模板--windows时间服务,配置完成后问题仍然存在。
4、查询华为设备使用手册http://supporthuaweicom/ehedex/hdxdolib=DOC1000081668DZE0811M&docid=DOC1000081668&v=03&tocLib=DOC1000081668DZE0811M&tocV=03&id=dc_cfg_ntp_0019&tocURL=resources%252fdc%252fdc%255fcfg%255fntp%
二、配置ntp服务器端
restrict 0000 mask 0000 nomodify notrap noquery
restrict 1921681660 mask 2552552550 nomodify
restrict 127001
server 2107214544 prefer
server 12712710
fudge 12712710 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: 它指的是给远程服务器(eg 1936019975)提供时间同步的服务器
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 192168166100
LINUX做为客户端自动同步时间
如果想定时进行时间校准,可以使用crond服务来定时执行。
编辑 /etc/crontab 文件
加入下面一行:
30 8 root /usr/sbin/ntpdate 192168166100; /sbin/hwclock -w #19216801是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个:
错误1Server 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和其自身保持同步,如果在/ntpconf中定义的server都不可用时,将使用local时间作为ntp服务提供给ntp客户端。
server 12712710 fudge
12712710 stratum 8
在ntp server上重新启动ntp服务后,ntp server自身或者与其server的同步的需要一个时间段,这个过程可能是5分钟,在这个时间之内在客户端运行ntpdate命令时会产生no server suitable for synchronization found的错误。
那么如何知道何时ntp server完成了和自身同步的过程呢?
在ntp server上使用命令:
# watch ntpq -p
出现画面:
Every 20s: ntpq -p Thu Jul 10 02:28:32 2008
remote refid st t when poll reach delay offset jitter
==============================================================================
1921683022 LOCAL(0) 8 u 22 64 1 2113 179133 0001
LOCAL(0) LOCAL(0) 10 l 21 64 1 0000 0000 0001
注意LOCAL的这个就是与自身同步的ntp server。
注意reach这个值,在启动ntp server服务后,这个值就从0开始不断增加,当增加到17的时候,从0到17是5次的变更,每一次是poll的值的秒数,是64秒5=320秒的时间。
如果之后从ntp客户端同步ntp server还失败的话,用ntpdate –d来查询详细错误信息,再做判断。
错误2Server dropped: no data
从客户端执行netdate –d时有错误信息如下:
transmit(1921683022)
transmit(1921683022)
transmit(1921683022)
transmit(1921683022)
transmit(1921683022)
1921683022: Server dropped: no data
server 1921683022, port 123
28 Jul 17:42:24 ntpdate[14148]: no server suitable for synchronization found
出现这个问题的原因可能有2:
1检查ntp的版本,如果你使用的是ntp42(包括42)之后的版本,在restrict的定义中使用了notrust的话,会导致以上错误。
使用以下命令检查ntp的版本:
# ntpq -c version
下面是来自ntp官方网站的说明:
The behavior of notrust changed between versions 41 and 42
In 41 (and earlier) notrust meant "Don't trust this host/subnet for time"
In 42 (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的设置。
>system\\进入用户视图
] sysname C2960\\更改交换机名为C2960
] vlan batch 2 to 4094\\创建2至4094号vlan
] stp bpdu-protection\\启用BPDU保护边缘端口
] domain abc\\AAA RADIUS HWTACACS命令
] domain abc1 admin\\AAA RADIUS HWTACACS命令
] undo http server enable\\关闭设备web网管功能
] aaa\\本地认证授权
aaa] local-user abc password cipher cisco\\新建本地用户账号名abc 登录密码cisco 密文加密
aaa] local-user abc privilege level 15\\账号abc 权限级别为15(最高权限)
aaa] local-user abc service-type telnet\\账号abc 登录方式为 telnet
aaa] quit\\退出aaa配置模式
] interface Vlanif100\\进入vlan 100 配置交换机管理ip
vlanif100] ip address 19216811 2552552550\\配置vlan100为交换机默认管理vlan,设置管理地址ip为19216811 2552552550
vlanif100] undo shut\\启用vlan100
vlanif100] quit\\退出vlan100配置
] ip route-static 0000 0000 19216810254\\设置交换机网关默认路由
]user-interface con 0\\进入交换机console 0口配置模式
console0] user privilege level 15\\连接console 0的用户权限级别为15 (最高权限)
console0] authentication-mode password\\设置接入console 0口时用户需要输入密码
console0] set authentication password cipher cisco\\配置接入console 0口的用户密码为cisco 密文加密
console0] quit\\退出 console 0口配置模式
] user-interface vty 0 4\\配置远程telnet
vty0-4] user privilege level 15\\telnet 0-4口 接入的用户级别为15(最高级别)
vty0-4] authentication-mode aaa\\认证模式为aaa
vty0-4] idle-timeout 10\\10分钟内用户与设备间没有信息交互 设备将断开远程连接
vty0-4] quit\\退出telnet配置模式
] ntp-service unicast-server 19216812\\进入配置NTP服务器19216812 时间同步
] header login information ^\\设置登录时的显示信息
你好,你想问的是ntp服务器每次上电ip会变怎么办吗?发现ntp服务器每次上电ip会变可以:
1、检查NTP服务器与参考时钟源之间的网络延迟,并调整网络设置以减小延迟。
2、检查参考时钟源的精度和时钟漂移,选择精度更高的时钟源或调整NTP服务器的配置参数。
3、检查NTP服务器的设置和配置参数,确保其正常工作。ntp服务器是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源做同步化,它可以提供高精准度的时间校正。
背景我们有5台虚拟主机做时间同步,那就需要分别安装NTP服务。
主机地址为:
19216831 master
19216832 客户机1
19216833 客户机2
19216834 客户机3
19216835 客户机4
1、安装NTP
我们使用yum命令为每台机器安装ntp软件,命令如下:
yum install -y ntp
每台机器都需要安装,所以要分别在对应的主机上分别执行该命令。如下图
看到如下提示内容,则代表安装完成:
2、修改ntp的配置文件
vi /etc/ntpconf
首先我们要编辑主机的ntp服务配置文件,
我们去编辑master的机器的文件/etc/ntpconf
找到ntp时间同步的机器范围配置项
restrict 19216830 mask 2552552550 nomodify notrap
这里的意思代表,1921683的网段的机器都参与ntp的时间同步。
内容大致如下:
////存放ntp服务日志的位置
logfile /var/log/ntpdlog
////ntp依赖的互联网时间服务器地址,我们这里选择的是阿里云的时间服务器,当然还有很多其他时间服务器可以选择,看下这个地址 https://wwwntppoolorg/zone/asia ,
////兜底时间服务器,当以上三个时间服务器不可用时,就是以本机时间作为集群机器的统一时间。
server 127001
fudge 127001 stratum 10
3、主机做时间同步操作:
这里需要使用如下命令:
ntpdate -u ntp2aliyuncom(取用时间服务器的任意一台即可),出现如下提示内容,即代表我们的时间服务器是可以同步时间的。如果没有出现相应的内容,可能是由于自己的机器网络防火墙或者端口没有打开导致的。
5、查看ntpd的状态
systemctl status ntpd
如下图,则代表ntp服务运行中
代表没有做完时间同步,因为第一次时间同步需要5-10分钟时间,所以需要等待。直到看到如下提示,即可:
8、我们去完成NTP客户机的配置
vi /etc/ntpconf
我们客户机的配置的时间服务器,就不需要直接指向阿里云的机器了,直接使用我们的master主机即可。可以是主机名,也可以是ip地址。
server 19216831
同理,其他几个客户机也按照这种方式配置,保存。配置完成后,也要做服务启动,系统重启后随机自动启动,这里就不赘述了。
这样,我们就把ntp服务安装完毕了,谢谢。
我就是这样用的,很好。
Windows(2003)下配置NTP时间服务器
一、服务端设置:
因为默认情况下,WINDOWS SERVER 2003 是作为NTP客户端工作的 ,所以必须通过修改注册表,以使系统作为NTP服务器运行。注意,工作之前请先备份注册表文件。
1、通过开始菜单,输入regedit命令后打开注册表设定画面,此时请一定备份注册表文件。
2、修改以下选项的键值
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\
NtpServer内的「Enabled」设定为1,打开NTP服务器功能
3、修改以下键值
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\
AnnounceFlags设定为5,该设定强制主机将它自身宣布为可靠的时间源,从而使用内置的互补金属氧化物半导体(CMOS) 时钟。
4、在dos命令行执行以下命令,确保以上修改起作用
net stop w32time
net start w32time
推荐计划;如果该服务器和internet连接,那么为了避免服务器和internet上的ntp同步,最好追加以下配置:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\
NtpClient的「enable」设定为0 以防止作为客户端自动同步外界的时间服务
二、客户设置:
1、指定主时间服务器。在DOS方式输入“net time /setsntp:ntpsjtueducn”,这里我们指定ntpsjtueducn是主时间服务器,也可以是其它地址(2107214544)。
2、自由设定XP时间同步间隔:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\
NtpClient的「SpecialPollInterval」默认设定为604800(或86400)
0条评论