NTP (Network Time Protocol) là một giao thức dùng để đồng bộ hóa thời gian giữa các máy chủ với nhau, đặc biệt là các hệ thống tài chính, dịch vụ, khoa học… thì nhu cầu này đặc biệt quan trọng.
Mô hình
Giao thức NTP phân chia các time server ra thành nhiều lớp (stratum), số stratum càng nhỏ thì thời gian càng chính xác (stratum nhỏ nhất là 0). Các server có stratum bằng 0 sẽ cung cấp thời gian chuẩn cho các client có stratum là 1, các client không thể truy cập vượt cấp stratum của mình (stratum 4 chỉ có thể truy cập stratum 3 chứ không thể lấy thời gian từ stratum 2).
Sơ đồ phân lớp các NTP Server
NTP hoạt động bằng cách đo thời gian RTT (round trip time) của các gói tin trao đổi giữa client và server. Client sẽ điều chinh lại thời gian trên máy mình để đồng bộ thời gian với server. Thời gian điều chỉnh sẽ dựa trên hai thông số là timestamp khi gói tin được gởi đi và thời gian di chuyển của gói tin.
Chính vì vậy, ta nên chọn time server có độ delay thấp nhất có thể. Ví dụ như ở VN thì ta có thể chọn time server nằm trong vn.pool.ntp.org
Quy trình cơ bản khi cấu hình NTP Server là:
- NTP Server A lấy giờ chuẩn từ 1 server khác có level stratum cao hơn (từ pool.ntp.org)
- Các NTP Client khác sẽ lấy giờ từ NTP Server chuẩn này.
Cấu hình
NTP Server
Để cấu hình và cài đặt NTP Server (gói ntpd) trên CentOS 7, ta thực hiện những bước sau:
Cài đặt và cấu hình NTP server, cho phép các server trong subnet 10.0.0.0/24 truy cập được tới NTP server
yum –y install ntp vi /etc/ntp.conf […] restrict 10.0.0.0 mask 255.255.255.0 nomodify notrap server vn.pool.ntp.org iburst
Start service và enable tính năng auto start cho ntpd
systemctl start ntpd systemctl enable ntpd
Kiểm tra NTP Server đã lấy được giờ chuẩn chưa
ntpq -p
NTP Server đang lấy giờ từ một server chuẩn 128.9.176.30
NTP Client (Linux)
Đối với các client Linux lấy giờ từ NTP server, ta có 2 cách
- Cài NTP service deamon tương tự như trên, nhưng lấy thời gian từ NTP Server mà ta chỉ định (ví dụ ở đây là 10.0.0.4)
- Dùng ntpdate và set crontab sync time mỗi 5p
Cách 1
Cài NTP service deamon tương tự như trên Server, nhưng ta sẽ trỏ về địa chỉ IP/domain của server của mình và không nhận request đồng bộ thời gian từ các máy client khác.
yum –y install ntp vi /etc/ntp.conf […] #server <IP_of_your_server> iburst server 10.0.0.4 iburst restrict default ignore
Start service và enable tính năng auto start cho ntpd
systemctl start ntpd systemctl enable ntpd
Kiểm tra NTP Client đã lấy được giờ chuẩn chưa
ntpq -p
Cách 2
Dùng lệnh ntpdate để đồng bộ thời gian + set crontab cho lệnh này check thời gian theo giờ.
Đầu tiên, tiến hành cài đặt ntpdate:
yum –y install ntpdate
Cấu hình ntpdate update thời gian từ Vietnam NTP Server pool
ntpdate vn.pool.ntp.org
hoặc chỉ định một IP
ntpdate <IP_of_your_server>
Enable tính năng auto start cho ntpupdate
systemctl enable ntpdate
Cấu hình sync tự động trong crontab mỗi 5p
sudo crontab -e */5 * * * * /usr/sbin/ntpdate 10.0.0.4 2>&1 | tee -a /var/log/ntpdate.log
NTP Client (Windows)
Để đồng bộ thời gian trên Windows, ta có 2 cách:
- Dùng giao diện đồ họa
- Dùng dòng lệnh
Cách 1 – Cấu hình bằng giao diện
Với giao diện đồ họa, ta truy cập vào phần: Control Panel => Date and Time => Internet Time Settings
Thay đổi giá trị mặc định của hệ thống thành IP/domain name của NTP server mà ta muốn nhận thông tin và chọn Update now
Cách 2 – Giao diện dòng lệnh
Với giao diện dòng lệnh, ta sử dụng những lệnh sau:
#Tạm ngưng time service net stop w32time #Cấu hình trỏ tới các NTP server cần dùng w32tm /config /manualpeerlist:"vn.pool.ntp.org,0x1" /syncfromflags:manual /reliable:yes #Khởi động lại time service net start w32time #Kiểm tra lại thông tin cấu hình w32tm /query /configuration w32tm /query /status
Cấu hình trỏ NTP bằng dòng lệnh trên Windows Server 2008
Kiểm tra lại các thông tin cấu hình
Tham khảo
https://www.server-world.info/en/note?os=CentOS_7&p=ntp&f=1
https://www.server-world.info/en/note?os=Windows_Server_2012&p=ntp