跳转至主要内容

在您的模块上拥有正确的时间对于各种活动都是至关重要的,包括日志同步和安全证书验证。从15.1版开始,VOS提供了一个网络时间协议守护程序(ntpd)的端口,强烈建议你运行它。

通常情况下,要运行ntpd,你需要向它提供一个时间服务器的列表,网络上的主机也运行ntpd,并且会向任何询问的主机提供时间。互联网上有大量的时间服务器,你可以使用。看看http://www.pool.ntp.org/en/,它是按地区组织服务器的。

我建议列出一台或三台(或更多)服务器,千万不要列出两台。ntpd试图通过比较服务器的响应来确定哪台服务器最好。如果只列出两个服务器,ntpd有可能无法做出决定,最终不使用任何一个服务器。

但是,如果你的公司的政策阻止你访问互联网上的时间服务器,而你又没有公司指定的时间服务器,你应该怎么办?在这种情况下,你也许可以使用本地的Microsoft Windows域控制器(DC)或备份域控制器(BDC)。大多数DC和BDC都会提供时间服务。

那么作为一个VOS管理员,如何才能找到本地的DC或BDC呢?最简单的方法是询问,但假设这不是一个选项,你可以运行数据包监控,自己寻找。工作站和域控制器都会在UDP138端口上定期广播。

命令

>system>stcp>command_library>packet_monitor -interface #INTERFACE-numeric(数字)。
-time_stamp -verbose -pkt_hdr -hex_header -hex_dump -length 1500 -filter -port 138。
图1 - packet_monitor命令

将会显示这些广播(确保用你的IP接口的名称代替INTERFACE)。不幸的是,为了找到时间服务器,你需要查看数据包中的十六进制数据,而且由于可能会有很多数据包要经过,你需要将数据包转储到一个文件中。我的pm.cm命令宏(你可以在这里找到这个宏)会自动创建一个out文件,并作为一个启动的进程运行跟踪。out文件的名字是pm.(date).(time).out。命令如下

pm #INTERFACE-no_arp -no_icmp -port 138。
图2 - pm命令宏

无论你如何开始跟踪,让它运行15到20分钟,你应该从网络上的每个DC和BDC得到一个广播。接下来搜索其中含有字符串'c0 3'和'c0 2'的行;也就是小写的C、0、四个空格和3或2。这个数字对应的是偏移量c0处的上位字节。该字节可以被解码为

ABCD EFGH
^^^^ ^^^^
|||| ||||--主机为工作站
|||| ||||------主机是服务器
|||||---- 主机不是SQL服务器。
|||| |----- 主机不是域控制器。
||||------- 主机是备份域控制器
|||-------- 主机是一个时间服务器。
|--------- 主机不是苹果主机。
|---------- 呼叫:---------- 主机不是Novell主机。
图3 - 服务器类型字节解码

正如你所看到的,搜索前三两个可能不会得到所有的时间服务器,但除非你运行一个专属的小说或苹果网站,它应该得到至少一个DC或BDC。

d pm.11-02-06.17:25:06.out -match 'c0    2'
ready  17:47:13

d pm.11-02-06.17:25:06.out -match 'c0    3'

%phx_vos#m15_mas>SysAdmin>Noah_Davids>pm.11-02-06.17:25:06.out  11-02-06 17:47

     c0    33 10 82  0  f  1 55 aa   0                       3 <<U*
     c0    33 10 84  0  f  1 55 aa   0                       3 <<U*
     c0    33 10 84  0  f  1 55 aa   0                       3 <<U*
     c0    33 10 82  0  f  1 55 aa   0                       3 <<U*
     c0    33 10 84  0  f  1 55 aa   0                       3 <<U*
     c0    33 10 84  0  f  1 55 aa   0                       3 <<U*
     c0    33 10 84  0  f  1 55 aa   0                       3 <<U*
     c0    33 10 82  0  f  1 55 aa   0                       3 <<U*
     c0    33 10 84  0  f  1 55 aa   0                       3 <<U*
     c0    33 10 82  0  f  1 55 aa   0                       3 <<U*
     c0    33 10 84  0  f  1 55 aa   0                       3 <<U*

ready  17:47:29
图4--packet_monitor线路匹配时间服务器和备份域控制器

仅仅找到"c0"行是不够的。你还需要找到发送数据包的主机的地址。在 >system>gnu_library>bin 目录下的 grep 命令可以在多行中找到匹配的内容。

grep -e 'c0    3' -e 'c0    2' -e UDP pm.11-02-06.17:25:06.out
. . . .
UDP from 192.168.33.180.138 to 192.168.33.255.138 Cksum 7ca3, 220 data bytes.
UDP from 192.168.33.249.138 to 192.168.33.255.138 Cksum c89a, 209 data bytes.
     c0    33 10 82  0  f  1 55 aa   0                       3 <<U*
. . . .
UDP from 192.168.33.50.138 to 192.168.33.255.138 Cksum 9526, 193 data bytes.
UDP from 192.168.33.248.138 to 192.168.33.255.138 Cksum d05f, 209 data bytes.
     c0    33 10 84  0  f  1 55 aa   0                       3 <<U*
. . . .
UDP from 192.168.33.202.138 to 192.168.33.255.138 Cksum cf35, 219 data bytes.
UDP from 192.168.33.253.138 to 192.168.33.255.138 Cksum 9505, 209 data bytes.
     c0    33 10 82  0  f  1 55 aa   0                       3 <<U*
. . . .
UDP from 192.168.33.131.138 to 192.168.33.255.138 Cksum aa35, 222 data bytes.
UDP from 192.168.33.252.138 to 192.168.33.255.138 Cksum 7343, 209 data bytes.
     c0    33 10 84  0  f  1 55 aa   0                       3 <<U*
. . . . .
图5--packet_monitor线显示被发现的时间服务器。

时间服务器的地址出现在紧靠"c0"行的那几行。在上图中,我们已经确定了192.168.33.249、192.168.33.248、192.168.33.253和192.168.33.252。

现在我们已经确定了那些宣传自己是时间服务器的主机,那么我们如何确保它们能够工作呢?ntpdate命令可以用来手动查询每个时间服务器。使用"-q"参数只查询时间服务器,此时我们不希望ntpdate也设置模块的时间。

ntpdate -q 192.168.33.248。
寻找主机192.168.33.248和服务ntp。
找到主机:dc48.noahslab.stratus.com。
服务器192.168.33.248,stratum 4,偏移量-0.117418,延迟0.04202。
2月6日 17:53:10 ntpdate[1427079382]: 调整时间服务器 192.168.33.248 偏移量 -0。
+.117418秒
准备好了 17:53:10

ntpdate -q 192.168.33.249。
寻找主机192.168.33.249和服务ntp。
找到主机:dc49.noahslab.stratus.com。
服务器192.168.33.249,stratum 4,偏移量-0.038709,延迟0.04355。
2月6日 17:53:25 ntpdate[1427079382]: 调整时间服务器 192.168.33.249 偏移量 -0。
+.038709秒
准备好了 17:53:25

ntpdate -q 192.168.33.252。
查找主机192.168.33.252和服务ntp。
找到主机:dc52.noahslab.stratus.com。
服务器192.168.33.252,层数3,偏移量0.015733,延迟0.04216。
6 Feb 17:53:38 ntpdate[1427079382]: 调整时间服务器 192.168.33.252 offset 0.
+015733 秒
准备好了 17:53:38
图6 - 使用ntpdate测试发现的时间服务器 - 工作服务器

假设其中一个服务器有一个防火墙策略,即使它建议它提供时间,它也不能提供时间,ntpdate将显示以下内容。

ntpdate -q 192.168.33.254。
寻找主机192.168.33.254和服务ntp。
找到主机:dc54.noahslab.stratus.com。
服务器192.168.33.254。 0层,偏移量0.000000,延迟0.00000。
6 Feb 17:54:00 ntpdate[1427079382]: 没有适合同步的服务器
+d
准备就绪 17:54:00
图7 - 使用ntpdate测试发现的时间服务器 - 非工作服务器

现在你已经知道了你可以使用什么时间服务器,你可以按以下方式编写>system>ntp>ntp.conf文件。所有黑色的内容都来自sample_ntp.conf.17.0文件,新的字符是在 绿化.注 意在"server foo.bar.somewhere.com"一行前面加上的注释字符。restrict语句通过防止其他主机对ntp守护进程进行非时间查询,提高了系统的安全地位。

# 服务器指令表示从哪里获取时间。
# 它们可以是DNS或IP值,每个指令一个。
# 服务器foo.bar.somewhere.com

服务器192.168.33.248 burst iburst
服务器192.168.33.249 burst iburst
服务器192.168.33.252 burst iburst

# logile的家。  选择一个好的相对路径--VOS绝对路径
# 路径名无法正确解析。
logfile >system>ntp>ntp.logfile。

# driftfile的主页。
driftfile >system>ntp>ntp.drift。

# 这些语句将防止从本地主机以外的任何主机进行非时间查询。
限制默认noquery
限制127.0.0.1
图8 - 更新的 >system>ntp>ntp.conf文件

启动ntpd命令(在>system>ntp目录下有一个sample_start_ntpd.17.0),几分钟后你应该会看到类似下面的内容。192.168.33.252 前面的"*"表示那是 ntpd 选择的服务器。192.168.33.248前面的"+"表示在192.168.33.252没有响应的情况下的另一个好选择。只要在第一列中有一行是"*",您就知道该模块的时间将与时间服务器同步。但是,请记住,当模块和时间服务器之间的初始差异较大时,时间可能需要一段时间才能收敛。

ntpq -n
ntpq> 同行
     遥测达到延时偏移抖动时,远程遥控遥控遥控。
==============================================================================
+192.168.33.248  192.168.33.252   4 u    - 1024  377    1.312  -1549.3 639.489
 192.168.33.249  192.168.33.252   4 u  626 1024  377  132.423   15.202  27.797
*192.168.33.252  192.168.33.51    3 u  802 1024  377    0.964  -27.486   2.993
图9 - 使用ntpq确认时间同步。

最后,ntpd既是客户端又是服务器,所以一旦它在一个VOS模块上运行,它就可以作为其他模块或网络上任何其他模块的时间服务器。

© 2024Stratus Technologies.