如何保持 Debian 内部时钟同步(与 NTP 服务器)?

如何保持 Debian 内部时钟同步(与 NTP 服务器)?

我有一台运行最新 Debian 7.5(喘息)安装的家庭服务器。我刚刚发现服务器的内部时钟设置为 ± 3 分钟将来

我知道我可以使用 NTP 将 Debian(以及主板内部时钟)与 NTP 同步,因此我按照 french 中描述的步骤安装了 NTPDebian 维基(这英文页面不太详细)。

我使用以下命令来同步内部时钟:

ntpdate -B -q 192.168.0.254

时钟已成功调整。但这是一个临时解决方案,因此我安装了 NTP 守护进程并在文件中添加了本地服务器/etc/ntp.conf

# pool.ntp.org maps to about 1000 low-stratum NTP servers.  Your server will
# pick a different set every time it starts up.  Please consider joining the
# pool: <http://www.pool.ntp.org/join.html>

# added
server 192.168.0.254

server 0.debian.pool.ntp.org iburst
server 1.debian.pool.ntp.org iburst
server 2.debian.pool.ntp.org iburst
server 3.debian.pool.ntp.org iburst

这是正确的解决方案吗?事实上,我惊讶地发现ntp守护进程尚未安装。我想知道 Debian 的默认安装是否安装了一个守护进程来保持内部时钟同步。所有 Debian 安装都会时移到管理员安装为止吗ntpd

请告诉我ntp守护进程不会毫无用处,因为 Debian 有内置的同步机制。

答案1

如果您希望时钟同步,Debian 希望您自己安装 ntp。几乎您所要做的就是apt-get install ntp。默认安装(没有任何任务)相当少。

我相信 GNOME 桌面任务至少会默认安装它(以及许多其他软件包)。不确定其他桌面是否也会如此。

默认情况下没有安装和运行任何其他时间同步方法。

答案2

对于 Debian GNU/Linux 10 (Buster) 和下一个主要版本:

systemd-timesyncd又名timesyncd:SystemD-TimeSyncD)是ntpd.

在 Debian 中查看 TimeSyncD NTP 守护进程的运行状态信息:
cmd:systemctl status systemd-timesyncd
你可能会注意到/看到,Status信息中的行显示为“闲置的“。
如果Active信息中的行未显示”积极的跑步)”,然后启动它:
cmd:systemctl start systemd-timesyncd

如果您尚未启用“SYSTEMD-TIMESYNCD”,请启用并启动它:
cmd: systemctl enable systemd-timesyncd.service
cmd:systemctl start systemd-timesyncd.service

如果 SystemD-TimeSyncD 未启用,则您可能必须删除 NTPD(如果之前已安装):
cmd:apt purge ntp

这个新的systemd-timesyncd守护进程还可以执行 SNTP 客户端功能。

问题:
在 Debian 计算机中查看本地时间时,本地时间不正确:
cmd: date
View status of系统时钟同步(SCS),运行:
任一,cmd:timedatectl
或,cmd:timedatectl status
您可能会注意到/看到上面的以下输出时间日期控件命令:SCS 不工作或时间不同步,即:Debian 计算机未获取、更新和显示正确的时间信息:

系统时钟同步:
     NTP服务:积极的

查找靠近您计算机位置的 NTP 服务器:

时间信息提供服务在 NTP 服务器中运行。

如果您的 Debian 计算机位于美国,或者您想在美国使用 NTP 服务器,请访问此站点:
    https://tf.nist.gov/tf-cgi/servers.cgi
选择至少两个地理上更接近您的 Debian 计算机物理地理位置的 NTP 服务器。
选择 IP 地址的 IPv4 类型。如果您的 Debian 计算机仅使用 IPv6 或也使用 IPv6,则选择 IP 地址的 IPv6 类型。

更新“TIMESYNCD.CONF”:

命令:nano /etc/systemd/timesyncd.conf

然后添加以下3行,如果不存在时间同步配置文件:

[时间]
NTP=132.163.96.1
FallbackNTP=132.163.96.2,132.163.96.3,132.163.96.4,132.163.96.6

在“NTP=”行中仅指定一台服务器。
在“FallbackNTP=”行中指定多个服务器。
在上面我显示的是来自“美国科罗拉多州”的 NTP 服务器,因为我的 Debian 计算机的位置位于美国加利福尼亚州,靠近美国科罗拉多州。

如果您的计算机/设备的 DNS 客户端(或 DNS 服务器/守护程序)启动TimeSyncD NTP 客户端(或 NTP 服务器/守护进程),然后在“NTP=”或“FallbackNTP=”行中您应该使用 NTP 服务器的 IP 地址。
但是,如果您的计算机/设备的 DNS 客户端(或 DNS 服务器/守护进程)启动TimeSyncD NTP 客户端(或 NTP 服务器/守护进程),然后在“NTP=”或“FallbackNTP=”行中,您可以使用 NTP 服务器的主机名(又名:服务器名称),例如:time-a-b.nist.gov而不是它的 IP 地址132.163.96.1
另请注意,即使您的计算机/设备的 DNS 客户端(或 DNS 服务器/守护进程)启动TimeSyncD NTP 客户端(或 NTP 服务器/守护进程)您仍然可以在“NTP=”或“FallbackNTP=”行中使用 NTP 服务器的主机名,因为 TimeSyncD NTP 客户端和本地 NTP 服务器/守护进程将再次尝试获取/同步时间,所以第二次或下一次就会成功。
如果您的 Debian 计算机/设备有/没有任何 DNS 客户端(或 DNS 服务器/守护进程),那么您必须使用 NTP 服务器的 IP 地址。

您必须更改上面显示的 NTP 服务器,基于您的 Debian 计算机的实际位置。

例如:如果您的 Debian 计算机位于欧洲,
则转到此处:
    https://www.pool.ntp.org/zone/europe
上述网站还列出了其他位置的其他 NTP 服务器。

由于全球许多服务器、常规台式机/笔记本电脑等客户端计算机、网络设备、智能手机等都在使用 NTP 服务器,
因此 NTP 服务器经常过载,
因此 NTP 服务器可能会延迟或需要时间才能完成对您的计算机/的响应设备的查询。

请向 NTP 服务器运营商捐赠/贡献,以便他们能够负担得起更快/更好的服务器。

激活新设置:

创建或更新timesyncd.conf文件后,运行以下命令:
cmd:(timedatectl show-timesync --all验证新的 NTP 配置)
cmd:(systemctl restart systemd-timesyncd 重新启动本地 TimeSyncD NTP 守护程序)
cmd:(timedatectl set-ntp true启用并启动 NTP 使用)

现在您可以查看系统时钟同步的状态,运行以下任一命令:
cmd:timedatectl或者timedatectl status
您应该看到以下行:

系统时钟同步:是的
     NTP服务:积极的

cmd:(timedatectl timesync-status查看TimeSyncD NTP服务连接信息)

如果运行该命令systemctl status systemd-timesyncd,它应该显示“...首次同步到时间服务器...”。

运行date命令,它应该显示正确的时间,这次:
cmd:date
显示的时间应该与正确的时间匹配,并且它将基于您预先选择的时区。

(有时时间服务器可能会延迟发送正确的时间响应,因此请耐心等待)。

完毕


其他设置/信息:

cmd: timedatectl list-timezones(查看时区)
cmd: timedatectl set-timezone America/Los_Angeles(当您想要将时区设置为 时PST,即 UTC-08:00,请执行此操作)
cmd: timedatectl set-timezone UTC(当您要将时区设置为 时,请执行此操作UTC。此UTC时间在所有时间中始终相同所有时间的位置,从此时开始,通过添加或减去特定数字来计算每个其他时区UTC)。

我如何查看或获取 NTP 服务器(又名:主机名)或 NTP 池服务器使用的实际 IP 地址?
命令:nslookup 1.europe.pool.ntp.org

如果您启用了防火墙(又名:nftables、iptables 等),那么您应该在 NTP 相关的 UDP 规则中指定 NTP 服务器的(多个)IP 地址,以减少通过 NTP 的滥用。

答案3

显然,使用 SystemD,涉及的不同基础设施timedatectl已经就位(尽管旧方法仍然有效)。

看看 Arch 的人是怎么写的:https://wiki.archlinux.org/index.php?title=Systemd-timesyncd&oldid=797636#:~:text=systemd-timesyncd%20is,clock%20to%20it

相关内容