NTP, hay Network Time Protocol, là một giao thức được sử dụng để đồng bộ tất cả các đồng hồ hệ thống trong mạng để sử dụng cùng một thời gian. Khi sử dụng thuật ngữ NTP, bài viết đề cập đến chính giao thức và các chương trình client và server đang chạy trên những máy tính được kết nối mạng. NTP thuộc bộ giao thức TCP/IP truyền thống và có thể dễ dàng được phân loại là một trong những thành phần lâu đời nhất của nó.
Khi bạn thiết lập đồng hồ ban đầu để đồng bộ với NTP, phải mất 6 lần trao đổi trong vòng 5 đến 10 phút trước khi đồng hồ được thiết lập. Sau khi đồng hồ trong mạng được đồng bộ, client sẽ cập nhật đồng hồ của mình với server sau mỗi 10 phút. Điều này thường được thực hiện thông qua một lần trao đổi tin nhắn (giao dịch) duy nhất. Các giao dịch này sử dụng cổng số 123 của hệ thống.
Bài viết này sẽ mô tả quy trình từng bước về cách:
- Cài đặt và cấu hình NTP server trên máy Ubuntu.
- Cấu hình NTP client để đồng bộ thời gian với server.
Bài viết đã chạy các lệnh và quy trình được đề cập trên hệ thống Ubuntu 22.04 LTS và Ubuntu 24.04.
Mục lục bài viết
- Cài đặt và cấu hình NTP server trên máy tính host
- Bước 1: Cập nhật chỉ mục kho lưu trữ gói
- Bước 2: Cài đặt NTP Server bằng apt-get
- Bước 3: Xác minh cài đặt (tùy chọn)
- Bước 4: Chuyển sang NTP server pool gần nhất với vị trí của bạn
- Bước 5: Khởi động lại NTP server
- Bước 6: Xác minh rằng NTP server đang chạy
- Bước 7: Cấu hình tường lửa để client có thể truy cập NTP server
- Cấu hình NTP client để đồng bộ thời gian với NTP server
- Bước 1: Cài đặt ntpdate
- Bước 2: Chỉ định IP và hostname của NTP server trong file hosts
- Bước 3: Kiểm tra xem thời gian của client có được đồng bộ với NTP server không
- Bước 4: Vô hiệu hóa service systemd timesyncd trên client
- Bước 5: Cài đặt NTP trên client
- Bước 6: Cấu hình file /etc/ntp.conf để thêm NTP server làm time server mới
- Bước 7: Khởi động lại NTP server
- Bước 8: Xem hàng đợi đồng bộ thời gian
Cài đặt và cấu hình NTP server trên máy tính host
Thực hiện theo các bước sau để cài đặt NTP server trên Ubuntu server:
Lưu ý: Bài viết đang sử dụng dòng lệnh Ubuntu, Terminal, để cài đặt và cấu hình NTP. Bạn có thể mở ứng dụng Terminal thông qua tìm kiếm launcher ứng dụng hoặc phím tắt Ctrl + Alt + T.
Bước 1: Cập nhật chỉ mục kho lưu trữ gói
Để cài đặt các phiên bản phần mềm mới nhất từ kho lưu trữ Internet, chỉ mục kho lưu trữ cục bộ của bạn phải phù hợp với chúng. Chạy lệnh sau dưới dạng sudo để cập nhật chỉ mục kho lưu trữ cục bộ của bạn:
$ sudo apt update

Bước 2: Cài đặt NTP Server bằng apt-get
Vui lòng chạy lệnh sau dưới dạng sudo để cài đặt daemon NTP server từ kho lưu trữ APT:
$ sudo apt install ntp
Xin lưu ý rằng chỉ người dùng được ủy quyền mới có thể thêm, xóa và cấu hình phần mềm trên Ubuntu.

Hệ thống có thể yêu cầu bạn nhập mật khẩu sudo và cung cấp cho bạn tùy chọn Y/n để tiếp tục cài đặt. Nhập Y rồi nhấn Enter; NTP server sau đó sẽ được cài đặt trên hệ thống của bạn. Tuy nhiên, quá trình này có thể mất một thời gian, tùy thuộc vào tốc độ Internet của bạn.
Bước 3: Xác minh cài đặt (tùy chọn)
Bạn có thể xác minh cài đặt NTP của mình và cũng kiểm tra số phiên bản bằng cách chạy lệnh sau trong Terminal:
$ sntp --version

Bước 4: Chuyển sang NTP server pool gần nhất với vị trí của bạn
Khi bạn cài đặt NTP server, nó thường được cấu hình để lấy thời gian thích hợp. Tuy nhiên, bạn có thể chuyển sang server pool gần nhất với vị trí của mình. Điều này bao gồm thực hiện một số thay đổi trong file /etc/ntp.conf.
Mở file trong trình chỉnh sửa nano dưới dạng sudo bằng cách chạy lệnh sau:
$ sudo nano /etc/ntp.conf

Trong file này, bạn sẽ có thể thấy danh sách pool. Nhiệm vụ ở đây là thay thế danh sách pool này bằng pool của time server gần nhất với vị trí của bạn. Dự án pol.ntp.org cung cấp dịch vụ NTP đáng tin cậy từ một cụm time server thời gian. Để chọn danh sách pool theo vị trí của bạn, hãy truy cập trang sau:
https://support.ntp.org/bin/view/Servers/NTPPoolServers

Trang này yêu cầu chúng ta thêm các dòng sau vào file ntp.conf:
server 0.us.pool.ntp.org
server 1.us.pool.ntp.org
server 2.us.pool.ntp.org
server 3.us.pool.ntp.org
Đây là giao diện file sau khi thêm các dòng trên vào:

Thoát file bằng cách nhấn Ctrl + X và nhập y để lưu thay đổi.
Bước 5: Khởi động lại NTP server
Để các thay đổi trên có hiệu lực, bạn cần khởi động lại NTP server. Chạy lệnh sau dưới dạng sudo để thực hiện:
$ sudo service ntp restart
Bước 6: Xác minh rằng NTP server đang chạy
Bây giờ, hãy kiểm tra trạng thái của service NTP thông qua lệnh sau:
$ sudo service ntp status

Trạng thái Active xác minh rằng NTP server đang hoạt động.
Bước 7: Cấu hình tường lửa để client có thể truy cập NTP server
Cuối cùng, đã đến lúc cấu hình tường lửa UFW của hệ thống để các kết nối đến có thể truy cập NTP server tại cổng UDP số 123.
Chạy lệnh sau dưới dạng sudo để mở cổng 123 cho lưu lượng truy cập đến:
$ sudo ufw allow from any to any port 123 proto udp

Ubuntu server của bạn hiện đã được cấu hình làm NTP server.
Cấu hình NTP client để đồng bộ thời gian với NTP server
Bây giờ, hãy cấu hình Ubuntu client để đồng bộ thời gian với NTP server.
Bước 1: Cài đặt ntpdate
Lệnh ntpdate sẽ cho phép bạn kiểm tra thủ công cấu hình kết nối của mình với NTP server. Mở ứng dụng Terminal trên client và nhập lệnh sau dưới dạng sudo:
$ sudo apt-get install ntpdate

Bước 2: Chỉ định IP và hostname của NTP server trong file hosts
Để NTP server của bạn được giải quyết bằng hostname trong client, bạn cần cấu hình file /etc/hosts của mình.
Mở file hosts dưới dạng sudo trong trình soạn thảo nano bằng cách nhập lệnh sau:
$ sudo nano /etc/hosts
Bây giờ, hãy thêm IP của NTP server và chỉ định hostname như sau trong file này:

Thoát file bằng cách nhấn Ctrl + X rồi lưu bằng cách nhập y.
Bước 3: Kiểm tra xem thời gian của client có được đồng bộ với NTP server không
Lệnh ntpdate sau đây sẽ cho phép bạn kiểm tra thủ công xem thời gian có được đồng bộ giữa hệ thống client và server không:
$ sudo ntpdate NTP-server-host
Đầu ra lý tưởng nhất là hiển thị độ lệch thời gian giữa hai hệ thống.
Bước 4: Vô hiệu hóa service systemd timesyncd trên client
Vì chúng ta muốn client đồng bộ thời gian với NTP server, hãy vô hiệu hóa service timesyncd trên client.
Nhập lệnh sau để thực hiện:

Bước 5: Cài đặt NTP trên client
Chạy lệnh sau dưới dạng sudo để cài đặt NTP trên client:
$ sudo apt-get install ntp
Bước 6: Cấu hình file /etc/ntp.conf để thêm NTP server làm time server mới
Bây giờ, chúng ta muốn client của mình sử dụng NTP host server của riêng mình làm time server mặc định. Để thực hiện việc này, chúng ta cần chỉnh sửa file /etc/ntp.conf trên client.
Chạy lệnh sau dưới dạng sudo để mở file trong trình soạn thảo Nano:
$ sudo nano /etc/ntp.conf
Sau đó, thêm dòng sau vào file, trong đó NTP-server-host là hostname bạn đã chỉ định cho NTP server của mình:
server NTP-server-host prefer iburst
Đây là giao diện file sau khi đã chỉ định time server:

Nhấn Ctrl + X để đóng file và nhập y để lưu các thay đổi.
Bước 7: Khởi động lại NTP server
Để các thay đổi trên có hiệu lực, bạn cần khởi động lại service NTP. Chạy lệnh sau dưới dạng sudo để thực hiện:
$ sudo service ntp restart
Bước 8: Xem hàng đợi đồng bộ thời gian
Bây giờ client và server của bạn đã được cấu hình để đồng bộ thời gian. Bạn có thể xem hàng đợi đồng bộ thời gian bằng cách chạy lệnh sau:
$ ntpq -ps
Bạn sẽ có thể thấy NTP-server-host là host/source đồng bộ thời gian trong hàng đợi.
Vậy là đây là tất cả những gì bạn cần biết về việc cài đặt và cấu hình NTP để đồng bộ thời gian trên các máy Ubuntu được kết nối mạng của bạn. Quá trình này có vẻ hơi phức tạp, nhưng nếu bạn thực hiện cẩn thận tất cả các bước trên, máy của bạn sẽ được đồng bộ ngay lập tức.