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

A.L*_*A.L 18 debian ntpd ntp

我有一台运行最新 Debian 7.5 (wheezy) 安装的家庭服务器。

我刚刚发现服务器将其内部时钟设置为未来± 3 分钟。

我知道我可以使用 NTP 将 Debian(和主板内部时钟)与 NTP 同步,所以我按照法语Debian Wiki英文页面不太详细)中描述的步骤安装了 NTP 。

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

ntpdate -B -q 192.168.0.254
Run Code Online (Sandbox Code Playgroud)

时钟调整成功。但这是一个临时解决方案,所以我安装了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
Run Code Online (Sandbox Code Playgroud)

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

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

der*_*ert 24

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

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

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


phk*_*phk 6

请注意,systemd 显然涉及不同的基础设施timedatectl(尽管旧方法仍然有效),请参阅 Arch 人员对此的描述:https : //wiki.archlinux.org/index.php/systemd-timesyncd


atE*_*rik 6

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

\n

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

\n

在 Debian 中查看 TimeSyncD NTP 守护进程的运行状态信息:
\ncmd: systemctl status systemd-timesyncd
\n您可能会注意到/看到,Status信息中的行显示“ Idle ”。
\n如果Active信息中的行未显示“活动正在运行)”,则启动它:
\ncmd:systemctl start systemd-timesyncd

\n

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

\n

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

\n

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

\n

问题:
\n在 Debian 计算机中查看本地时间时,本地时间不正确:
\ncmd:date
\n查看系统时钟同步(SCS)的状态,运行:
\neither,cmd:timedatectl
\nor,cmd:timedatectl status
\n您可能会注意到/看到上述timedatectl命令的输出如下: SCS 不工作或时间不同步,即: Debian 计算机未获取、更新和显示正确的时间信息:

\n
\n

系统时钟同步:
\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0NTP 服务:活动

\n
\n

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

\n

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

\n

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

\n

更新“TIMESYNCD.CONF”:

\n

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

\n

如果timesyncd.conf中不存在,则添加以下 3 行:

\n
\n

[时间]
\nNTP=132.163.96.1
\nFallbackNTP=132.163.96.2,132.163.96.3,132.163.96.4,132.163.96.6

\n
\n

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

\n

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

\n

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

\n

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

\n

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

\n

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

\n

激活新设置:

\n

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

\n

现在您可以查看系统时钟同步的状态,运行以下任一命令:
\ncmd:timedatectltimedatectl status
\n您应该看到以下行:

\n
\n

系统时钟同步:
\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0NTP 服务:活动

\n
\n

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

\n

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

\n

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

\n

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

\n

完毕

\n
\n

其他设置/信息:

\n

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

\n

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

\n

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

\n