Time Server - NTP
1. Giới thiệu về NTP
Giao thức mạng thời gian (Network Time Protocol - NTP) là một giao thức mạng để đồng bộ hóa đồng hồ giữa các hệ thống máy tính trong mạng dữ liệu có thời gian biến đổi. NTP nằm ở tầng ứng dụng trong mô hình OSI. Từ năm 1985, NTP là một trong những giao thức Internet cổ nhất vẫn đang được sử dụng. NTP được thiết kế bởi David L. Mills của Đại học Delaware.
NTP nhằm mục đích đồng bộ thời gian thế giới phối hợp (UTC) trên tất cả các máy tính tham gia với sai số chỉ trong vài mili giây.
Các điểm chính của NTP:
- Trái đất có tổng cộng 24 múi giờ, với thời gian chuẩn là thời gian Greenwich (GMT).
- Thời gian đúng nhất được tính bằng đồng hồ nguyên tử (Atomic clock), ví dụ như UTC (Coordinated Universal Time).
- Linux hỗ trợ hai loại thời gian, một là thời gian hệ thống tính từ ngày 1/1/1970 và một là thời gian phần cứng được ghi lại trong BIOS.
- Trên Linux, có thể đồng bộ thời gian qua mạng, phổ biến nhất là sử dụng máy chủ NTP, dịch vụ này chạy trên cổng udp 123.
- Các tệp múi giờ được lưu trữ chủ yếu trong thư mục
/usr/share/zoneinfo/
, và múi giờ địa phương được tham khảo trong/etc/localtime
. - Máy chủ NTP là một dịch vụ phân cấp, vì vậy máy chủ NTP sẽ đồng bộ thời gian với máy chủ thời gian cấp trên, do đó không thể sử dụng cùng lúc hai lệnh
nptd
vàntpdate
. - Trạng thái kết nối của máy chủ NTP có thể được kiểm tra bằng cách sử dụng
ntpstat
vàntpq -p
. - Phần mềm khách NTP được cung cấp bởi lệnh
ntpdate
. - Khi muốn thao tác thời gian thủ công trên Linux, cần sử dụng lệnh
date
để đặt thời gian, sau đó sử dụnghwclock -w
để ghi thời gian vào BIOS. - Sai số thời gian giữa các máy chủ NTP không được vượt quá 1000 giây, nếu không dịch vụ NTP sẽ tự động tắt.
Để biết thêm chi tiết về NTP, bạn có thể tham khảo: Linux Private Kitchen of Bird Brother - NTP Time Server
2. Dịch vụ ntpd
Môi trường: CentOS
Cài đặt qua yum
Cài đặt NTP trên CentOS rất đơn giản, chỉ cần chạy lệnh sau:
Cấu hình ntpd
Tệp cấu hình của ntp nằm tại /etc/ntp.conf
, dưới đây là một cấu hình mẫu:
Lưu ý: Nếu thay đổi cấu hình, bạn phải khởi động lại dịch vụ NTP (
systemctl restart ntpd
) để cấu hình mới có hiệu lực.
Mở rộng giới hạn tường lửa
Cổng dịch vụ NTP là 123
, sử dụng giao thức udp, do đó tường lửa của máy chủ NTP phải mở cổng udp 123 này ra bên ngoài.
Nếu tường lửa sử dụng iptables
, chạy lệnh sau:
Nếu tường lửa sử dụng firewalld
, chạy lệnh sau:
Lệnh dịch vụ ntpd
Kiểm tra trạng thái dịch vụ ntp
Xác minh dịch vụ NTP hoạt động bình thường
Chạy ntpstat
để kiểm tra xem máy chủ NTP có kết nối với máy chủ NTP cấp trên hay không, nếu thành công, bạn sẽ thấy thông tin tương tự như sau:
Xem trạng thái của máy chủ NTP và máy chủ NTP cấp trên
3. Lệnh ntpdate
Lưu ý: Dịch vụ NTP là một dịch vụ phân cấp, do đó máy chủ NTP sẽ đồng bộ thời gian với máy chủ thời gian cấp trên. Vì vậy, không thể sử dụng cùng lúc hai lệnh
nptd
vàntpdate
.
Đồng bộ thời gian thủ công
Lệnh ntpdate
là phần mềm khách NTP, nó được sử dụng để yêu cầu đồng bộ thời gian.
Cú pháp:
ntp_server
có thể được chọn từ [máy chủ NTP trong nước](#máy chủ NTP trong nước).
Ví dụ:
Đồng bộ thời gian tự động theo lịch trình
Nếu bạn muốn đồng bộ thời gian tự động theo lịch trình, bạn có thể sử dụng công cụ Crontab. Thực chất là sử dụng crontab để thực hiện định kỳ một lần lệnh đồng bộ thời gian thủ công ntp.
Ví dụ: Chạy lệnh sau, bạn có thể đồng bộ hóa thời gian hệ thống vào mỗi ngày lúc 3 giờ sáng: