我有很多运行 debian 的服务器,它们都必须将时钟同步到在各自默认网关上运行的 NTP 服务器。由于许多不同的网段上有许多服务器,因此我必须找出网关IP地址是什么,并/etc/ntp.conf
为每个服务器手动更改。
由于这花了一些时间,而且我知道网络结构会不时发生变化,我想知道是否有一些简单的方法(比每年左右手动更改IP地址更容易)将ntp客户端设置为“自动同步到默认网关”模式。这样的事情可能吗?
答案1
与 Jeff Schaller 讨论后,我刚刚添加了一个init.d
名为的简单脚本,set-gateway-as-ntp
该脚本在 ntp 之前运行,并将网关地址添加到/etc/ntp.conf
:
#! /bin/sh
### BEGIN INIT INFO
# Provides: setgatewayasntp
# Required-Start: $network
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# X-Start-Before: $ntp
# Short-Description: Set gateway as NTP server
# Description: Set gateway address to /etc/ntp.conf
### END INIT INFO
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="Set Gateway as NTP"
. /lib/init/vars.sh
. /lib/lsb/init-functions
case "$1" in
start)
gateway_ip=`ip route show default | awk '/default/ {print $3}'`
sed -i /etc/ntp.conf -e "s/^server .*/server $gateway_ip/"
;;
stop)
;;
*)
echo "Usage: $SCRIPTNAME {start|stop}" >&2
exit 3
;;
esac
:
我对这个解决方案并不感到非常自豪,但它解决了我的问题。
答案2
最简单的解决方案是在 dhcp 租约中提供 ntp-servers optino:
subnet 192.168.10.0 netmask 255.255.255.0 {
option routers 192.168.10.1;
option ntp-servers 192.168.10.1, 192.168.10.50;
BLAH BLAH
}
默认情况下,debian 的 ntp 软件包附带一个 dhcp-exit 挂钩,它将 dhcp 租约中列出的 ntpserver 添加到 ntp.conf 中。