Debian
使用主機作為 ntp-client 和 lxc-router 作為 ntp-server
我在我的 Debian 主機上安裝了 ntpd 以使硬體 RTC 保持“最新”狀態。通過共享系統時鐘,時間會自動傳播到所有已安裝的容器 (lxc)。其中一個容器執行我的路由器。
我想用這個路由器將它的時間傳播到我網路中所有感興趣的設備,所以它們自己不需要網際網路連接。我不想將主機用作伺服器(希望被禁用
interface ignore all
)。如何在容器中安裝和配置純 ntp-server,它以系統時鐘為唯一參考?它永遠不會自己設置時鐘。
如何安裝和配置一個純 ntp 客戶端,它不接受來自其他對等方的傳入連接並洩漏盡可能少的資訊?
NTP 的配置與我所說的直覺不同。預設情況下,它會安裝一個客戶端,該客戶端讀取和寫入系統時鐘並開始偵聽所有介面和網橋*,並*急切地使用它們來提供有關其狀態的資訊而無需身份驗證。
我很難收集所有資訊和文件來(希望)正確地做到這一點。甚至預設配置文件也包含一些手冊頁未涵蓋的語句。
在不提供過多資訊和服務的情況下,以下配置似乎可以正常工作。
這是要安裝在主機上以強制執行僅客戶端操作的配置:
>> my-host:/etc/ntp.conf # stop listening for incoming connections an all interfaces including 0.0.0.0 and [::] interface ignore all interface ignore wildcard # only allow listening on the interface used to contact the time servers interface listen 10.2.20.2 # your pools or servers pool 0.debian.pool.ntp.org iburst pool 1.debian.pool.ntp.org iburst pool 2.debian.pool.ntp.org iburst pool 3.debian.pool.ntp.org iburst # by default drop all incoming connections on all interfaces restrict default ignore # unrestriced control for local connections restrict 127.0.0.1 restrict ::1 # Needed for adding pool entries restrict source notrap nomodify noquery
重新啟動服務為我們提供了一個易於理解的偵聽套接字列表。(
my-host:ntp
由於 NTPd 的工作方式,無法避免。)my-host:# netstat -a|grep ntp udp 0 0 my-host:ntp 0.0.0.0:* udp 0 0 localhost:ntp 0.0.0.0:* udp6 0 0 localhost:ntp [::]:*
這是要安裝在路由器容器上以強制執行僅伺服器操作的配置(由系統時鐘作為時間源支持,感謝@BillThor):
>> router:/etc/ntp.conf # don't update the system's clock disable kernel # local clock as preferred and only source server 127.127.1.0 prefer # stop listening for incoming connections an all interfaces including 0.0.0.0 and [::] interface ignore all interface ignore wildcard # whitelist addresses to listen on for NTP clients interface listen 10.1.2.1 interface listen 10.2.2.2 interface listen 10.3.2.3 interface listen 10.4.2.4 interface listen 10.5.2.5 # set "serve" as the only permission given to all listening interfaces per default restrict default kod notrap nomodify nopeer noquery limited # unrestriced control for local connections restrict 127.0.0.1 restrict ::1 # broadcast time (optional) broadcast 10.1.255.255 broadcast 10.2.255.255 broadcast 10.3.255.255 broadcast 10.4.255.255 broadcast 10.5.255.255
重新啟動服務為我們提供了本地時鐘作為首選源和(可選)廣播目標列表
router:# ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== *LOCAL(0) .LOCL. 5 l 16 64 3 0.000 0.000 0.000 10.1.255.255 .BCST. 16 B - 64 0 0.000 0.000 0.000 10.2.255.255 .BCST. 16 B - 64 0 0.000 0.000 0.000 10.3.255.255 .BCST. 16 B - 64 0 0.000 0.000 0.000 10.4.255.255 .BCST. 16 B - 64 0 0.000 0.000 0.000 10.5.255.255 .BCST. 16 B - 64 0 0.000 0.000 0.000
…以及為本地網路提供服務的可理解的偵聽套接字列表。
router:# netstat -a|grep ntp udp 0 0 router-lan5:ntp 0.0.0.0:* udp 0 0 router-lan4:ntp 0.0.0.0:* udp 0 0 router-lan3:ntp 0.0.0.0:* udp 0 0 router-lan2:ntp 0.0.0.0:* udp 0 0 router-lan1:ntp 0.0.0.0:* udp 0 0 localhost:ntp 0.0.0.0:* udp6 0 0 localhost:ntp [::]:*
(
disable kernel
感謝@PaulGear)禁止守護程序設置系統時鐘,這在典型容器中是不允許的。否則,它會用以下內容淹沒日誌:ntpd[1568]: adj_systime: Operation not permitted
在啟動時仍然有一些無害的故障,我不知道如何擺脫:
ntpd[1568]: start_kern_loop: ntp_loopfilter.c line 1119: ntp_adjtime: Operation not permitted ntpd[1568]: set_freq: ntp_loopfilter.c line 1082: ntp_adjtime: Operation not permitted