如何保持 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:timedatectltimedatectl 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

相關內容