······【NTP服務概述】
NTP(Network Time Protocol)服務主要用於同步服務器時間。
nptd 可以運行在多種模式下,包括對稱的 主動、被動(active/passive),客戶端、服務端(client/server),廣播、多播(broadcast/multicase/manycase)。
通常運行模式是以Daemon方式持續跟蹤同步時鍾源時間;當然也可以只運行一次,從外部時鍾源同步時間(從上次紀錄的頻度誤差文件中讀取頻度誤差值)。
廣播與多播模式下客戶端能夠自動發現時鍾源服務器,並計算各個服務器的時延然后自動完成配置。
NTP服務端口為123,使用UDP協議傳輸。
NTP使用樹狀的層級(stratum)時鍾源,層級數字越小優先級越高,低層級的NTP服務同步高層級的NTP服務。
低層級的服務同時也可以向更低層級的NTP服務提供時鍾校准功能。
0層的服務器采用的是原子鍾、GPS鍾等物理設備,stratum 1與stratum 0 是直接相連的,往后的stratum與上一層stratum通過網絡相連,同一層的server也可以交互。
2014年暴露的NTP服務重大漏洞,ntp-4.2.8p9之前的版本都會受影響。造成基於網絡包發射的分布式拒絕服務和本地負載升高導致的提權風險。
出於安全考慮,NTP服務器盡量不開放無用的端口,添加有效restrict條目,盡快升級最新版本。
該文檔不包含NTP加密傳輸和某些冷門的配置,如有需要,可以自行查閱man文檔: man ntp_auth, man ntp.conf等。
······【ntp配置文件詳解】
【時鍾源配置】
server address |
選取的參考時鍾源 |
peer address |
與本機一起作為共同時鍾源對外服務,在服務啟動初始化時,兩台服務器會自行協議主備關系 |
broadcast address |
作為時鍾源向指定廣播域發送時鍾信息 |
manycastclient address |
接受廣播的NTP信息客戶端配置 |
【時鍾源配置常用選項】
burst |
時鍾源可以訪問時發送8個包,默認發送間隔2秒。只用於server |
iburst |
時鍾源不可訪問時發送8個包,默認發送間隔2秒。只用於server |
minpool/maxpool |
最小/最大輪詢時間間隔,間隔為2的minpool/maxpool次方,取值4-17。只用於peer和server命令。 |
noselect |
指定時鍾源不再有效,只用於peer和server命令。 |
prefer |
指定時鍾源標志為偏好,只用於peer和server命令。 |
ttl |
指定報文生存周期,僅用於broadcast和manycastclient命令。 |
【driftfile】
將自己主機的bios芯片震盪頻率與上層的Time server頻率比較,將誤差記錄在這個文件里,條目設置格式:
driftfile /etc/ntp/drift |
【pidfile】
記錄應用程序進程ID(PID)文件保存的路徑,設置格式:
pidfile /var/run/ntpd.pid |
【logfile】
日志文件保存路徑,設置格式:
logfile /var/log/ntp.log |
【tinker】
該命令修改當前系統給定的時鍾統合算法(the clock discipline algorithm),和芯片硬件相關。該默認值已經優化過了,一般不需修改。
常用字段解釋如下:
panic
指定一個時間偏移躍變的閾值,默認是1000秒。
如果設置為0,該功能將會關閉,任意一個時鍾偏移同步都將會被接受。
就是說默認情況下如果時間偏移超過1000秒,將會判斷為異常時間,不會進行同步,但是如果設置成0就會禁用這一個功能,當ntp server時間異常波動大於1000秒時,會導致本地的時間發生突變,這可能會導致某些應用異常。
step
指定時間同步步長,單位是秒,默認是0.128秒。
如果設置為0,該進步式時間調整功能將會關閉。注意:如果改值設置為0或者大於0.5秒時,操作系統內核的時間discipline也會被禁用。
······【訪問權限配置】
ntpd實現了基於網段/掩碼的通用權限控制列表,主要目的是為了防止有問題的外部時鍾源影響本地時鍾服務,restrict意為允許指定IP訪問,並使用NTP部分功能,discard定義了發包間隔時間的規則,超過發送間隔的報文將被丟棄。
設置格式為:
discard [ average avg ] [ minimum min ] [ monitor prob ] restrict numericaddress [mask numeric_mask] [flag] [...] |
【訪問權限配置常用Flag】
ignore |
忽略匹配源目的地址發送的所有包 |
noquery |
忽略ntpq和ntpdc查詢命令,不影響ntpd服務 |
nomodify |
忽略修改NTP服務器狀態的命令(如修改運行時間,配置等命令) |
notrap |
拒絕向某些主機提供模式6的trap服務,trap服務為NTP的子系統,主要為遠程日志程序所使用 |
noserve |
除了ntpq和ntpdc,拒絕所有報文 |
nopeer |
拒絕peer, broadcast,manycastclient的連接報文 |
······【配置示例】
#記錄系統時鍾頻率差異文件 driftfile /var/lib/ntp/drift
# pid: 進程ID號文件 pidfile /var/run/ntpd.pid
# ntp服務記錄日志路徑 logfile /var/log/ntp.log
# 不准外部請求修改/查詢本地ntp配置,-6意為IPv6地址 restrict default kod nomodify notrap nopeer noquery restrict -6 default kod nomodify notrap nopeer noquery restrict 127.0.0.1
# 默認的本地時鍾源,沒有NTP服務可用時,使用它為局域網用戶提供服務,這里層級可以設置低一點 server 127.127.1.0 fudge 127.127.1.0 stratum 5
# NTP服務的ACL權限控制,放通外網NTP服務器 restrict ntp1.aliyun.com restrict ntp2.aliyun.com
# 選擇以下外網服務器,拒絕外部查詢和配置更改等請求 server ntp1.aliyun.com iburst minpoll 4 maxpoll 10 server ntp2.aliyun.com iburst minpoll 4 maxpoll 10 |
······【附錄:有效的國內時鍾源服務器】
ntp1.aliyun.com (阿里雲ntp服務器地址,從ntp1到ntp6)
us.ntp.org.cn (美國)
cn.ntp.org.cn (中國)