移植ntpd时遇上一个奇怪的问题,我的ntpdate能连上外网ntp服务器并且对时,但是连接我移植的ntpd服务器时不行。
错误输出为 no server suitable for synchronization found
我们自己的嵌入式系统用的netfilter,也不是ntpd服务器启动对时的问题,我已经等待了很长的时间。
ntpdate -d的输出如下
sylixos@sylixos-Ubuntu:/etc$ sudo ntpdate -d 10.9.0.133
22 Aug 00:11:13 ntpdate[30532]: ntpdate 4.2.0@1.1161-r Mon Jun 29 22:01:06 CST 2020 (2)
Looking for host 10.9.0.133 and service ntp
host found : 10.9.0.133
transmit(10.9.0.133)
transmit(10.9.0.133)
transmit(10.9.0.133)
transmit(10.9.0.133)
transmit(10.9.0.133)
10.9.0.133: Server dropped: no data
server 10.9.0.133, port 123
stratum 0, precision 0, leap 00, trust 000
refid [10.9.0.133], delay 0.00000, dispersion 64.00000
transmitted 4, in filter 4
reference time: 00000000.00000000 Thu, Feb 7 2036 14:28:16.000
originate timestamp: 00000000.00000000 Thu, Feb 7 2036 14:28:16.000
transmit timestamp: e2ea70ae.ad99c801 Sat, Aug 22 2020 0:11:26.678
filter delay: 0.00000 0.00000 0.00000 0.00000
0.00000 0.00000 0.00000 0.00000
filter offset: 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000
delay 0.00000, dispersion 64.00000
offset 0.000000
22 Aug 00:11:27 ntpdate[30532]: no server suitable for synchronization found
但是我在window下通过w32tm /stripchart /computer:10.9.0.133是可以正常链接ntpd,并且获得需要的输出
C:\Users\asus>w32tm /stripchart /computer:10.9.0.133
正在跟踪 10.9.0.133 [10.9.0.133:123]。
当前时间是 2020/8/11 下午 2:45:20。
14:45:20, d:+00.0011314s o:-12.6288649s [@ | ]
14:45:22, d:+00.0010360s o:-12.6288060s [@ | ]
14:45:24, d:+00.0010212s o:-12.6288022s [@ | ]
14:45:26, d:+00.0010072s o:-12.6287933s [@ | ]
我的ntpd.conf配置文件尽可能的删除了无关的部分,不知道是不是缺少了什么
server pool.ntp.org
restrict default nomodifynotrapnoquery
restrict 10.9.0.1 mask 255.255.0.0 notrustnomodifynotrap
#restrict default ignore
server 127.127.1.0 #local clock
fudge 127.127.1.0 stratum 10
我刚刚修改了配置文件
driftfile /var/lib/ntp/drift
#restrict 127.0.0.1
#restrict -6 ::1
restrict 10.9.0.1 mask 255.255.0.0 nomodify notrap
#server 192.168.11.3
#server 192.168.11.4
#server ntp1.aliyun.com
#server time.nist.gov
#service ntpd restart
server 127.127.1.0 prefer #local clock //屏蔽掉了外部时间服务器,并且将本地时间作为优先
fudge 127.127.1.0 stratum 8
我尝试排除外部时间服务器的影响,结果出现了意想不到的情况
12 Aug 14:21:46 ntpdate[6319]: ntpdate 4.2.0@1.1161-r Tue Aug 4 16:24:00 CST 2020 (14)
Looking for host 10.9.3.200 and service ntp
host found : 10.9.3.200
transmit(10.9.3.200)
receive(10.9.3.200)
transmit(10.9.3.200)
receive(10.9.3.200)
transmit(10.9.3.200)
receive(10.9.3.200)
transmit(10.9.3.200)
receive(10.9.3.200)
transmit(10.9.3.200)
10.9.3.200: Server dropped: strata too high
server 10.9.3.200, port 123
stratum 16, precision -19, leap 11, trust 000
refid [10.9.3.200], delay 0.02649, dispersion 0.00015
transmitted 4, in filter 4
reference time: 00000000.00000000 Thu, Feb 7 2036 14:28:16.000
originate timestamp: e2de0854.01eb076c Wed, Aug 12 2020 14:19:00.007
transmit timestamp: e2de08fa.b6a6bd3b Wed, Aug 12 2020 14:21:46.713
filter delay: 0.02736 0.02678 0.02679 0.02649
0.00000 0.00000 0.00000 0.00000
filter offset: -166.706 -166.706 -166.706 -166.706
0.000000 0.000000 0.000000 0.000000
delay 0.02649, dispersion 0.00015
offset -166.706565
12 Aug 14:21:46 ntpdate[6319]: no server suitable for synchronization found
非常奇怪,在我使用内部时间以后反而出现
10.9.3.200: Server dropped: strata too high
server 10.9.3.200, port 123
stratum 16, precision -19, leap 11, trust 000
这个问题网上的回答都是使用内部时间解决的,很明显这并不适用于我。
我最初怀疑是服务器没有办法获取到本地时间,可是仔细一想,我windows是获取到了本地的时间的,也就是说服务器应该是拿到了本地时间才能发送给windows
使用调试模式打开ntpd得到输出
addto_syslog: precision = 2.034 usec
create_sockets(123)
bind() fd 5, family 2, port 123, addr 0.0.0.0, flags=8
bind() fd 6, family 2, port 123, addr 10.9.3.200, flags=8
bind() fd 7, family 2, port 123, addr 127.0.0.1, flags=0
init_io: maxactivefd 7
" unknown, line ignored: keyword "
" invalid host address, line ignored1
" invalid host address, line ignored
" unknown, line ignored: keyword "
" unknown, line ignored: keyword "notrap
" unknown, line ignored: keyword "
resolving 10.9.0.153
" unknown, line ignored: keyword "
addto_syslog: attempt to configure invalid address 127.127.1.0
" unknown, line ignored: keyword "
addto_syslog: fudge 127.127.1.0 stratum value in error
" unknown, line ignored: keyword "
" unknown, line ignored: keyword "
signal_no_reset over
addto_syslog: fork() failed, can't start ntp_intres: Function not implemented
signal_no_reset over
for
auth_agekeys: at 1 keys 1 expired 0