Cách cấu hình ntpd trên Ubuntu: Đồng bộ thời gian đáng tin cậy cho hệ thống ổn định

.

目次

1. Giới thiệu: Tại sao đồng bộ thời gian lại quan trọng

Các vấn đề do độ trễ thời gian hệ thống gây ra

Trên các hệ thống Linux như Ubuntu, việc duy trì thời gian hệ thống chính xác là vô cùng quan trọng. Lúc đầu, một sai lệch đồng hồ nhỏ có thể trông như không đáng kể, nhưng trong các môi trường máy chủ và ứng dụng, ngay cả độ trễ thời gian nhẹ cũng có thể dẫn đến những vấn đề nghiêm trọng.

Ví dụ, các vấn đề sau có thể xảy ra:

  • Mất tính nhất quán của log Nếu dấu thời gian trong log hệ thống hoặc log ứng dụng không đồng bộ, việc xác định nguyên nhân gốc rễ của sự cố sẽ trở nên khó khăn.
  • Cron job không hoạt động đúng Các tác vụ đã lên lịch như sao lưu hoặc batch job có thể không chạy vào thời điểm đúng, gây ra hành vi không mong muốn.
  • Lỗi chứng chỉ SSL và xác thực bảo mật Giao tiếp HTTPS và xác thực SSH phụ thuộc vào thời gian hệ thống chính xác. Nếu đồng hồ sai, chứng chỉ có thể bị đánh dấu là “đã hết hạn” hoặc “chưa có hiệu lực”, dẫn đến lỗi kết nối.

Những vấn đề này trở nên đặc biệt nghiêm trọng khi nhiều máy chủ phải được đồng bộ trên một mạng lưới.

Vai trò và tầm quan trọng của NTP

Để ngăn ngừa các vấn đề trên, NTP (Network Time Protocol) được sử dụng. NTP giao tiếp với các máy chủ thời gian qua internet hoặc mạng nội bộ và tự động điều chỉnh đồng hồ hệ thống.

Trên Ubuntu, có một số công cụ liên quan đến NTP, bao gồm ntpd, chrony và systemd-timesyncd. Trong bài viết này, chúng tôi sẽ tập trung vào ntpd (Network Time Protocol daemon) và giải thích chi tiết cách cài đặt và sử dụng nó trên Ubuntu.

Đối với các máy chủ chạy liên tục trong thời gian dài hoặc các hệ thống mà tính nhất quán của log là thiết yếu, ntpd được đánh giá cao về độ ổn định.

Trong phần tiếp theo, chúng tôi sẽ bắt đầu bằng cách giải thích ntpd là gì, vai trò cốt lõi của nó, và các tùy chọn có sẵn trên Ubuntu.

2. ntpd là gì? Vai trò và các lựa chọn thay thế trên Ubuntu

Tổng quan và tính năng của ntpd

ntpd (Network Time Protocol Daemon) là một dịch vụ chạy nền giúp giữ thời gian hệ thống chính xác bằng NTP. Nó định kỳ giao tiếp với các máy chủ NTP trên internet hoặc mạng nội bộ và tự động điều chỉnh đồng hồ hệ thống.

Một tính năng quan trọng của ntpd là khả năng thực hiện “đồng bộ mượt mà”, dần dần sửa chữa độ trễ thời gian thay vì thực hiện các thay đổi đột ngột. Thiết kế này ngăn ngừa ảnh hưởng tiêu cực tới các hệ thống và ứng dụng đang chạy.

ntpd cũng hỗ trợ các tính năng NTP nâng cao như giao tiếp đối xứngxác thực, khiến nó phù hợp cho môi trường doanh nghiệp.

Các công cụ đồng bộ thời gian có sẵn trên Ubuntu

Ubuntu cung cấp một số tùy chọn để đồng bộ thời gian:

  • ntpd (gói ntp) Được sử dụng rộng rãi trong các môi trường hoạt động lâu dài và yêu cầu cấu hình chi tiết. Nó cung cấp độ linh hoạt và ổn định cao, đồng thời có thể đồng bộ chính xác với các máy chủ NTP công cộng.
  • chrony Một lựa chọn hiện đại thay thế ntpd, có độ chính xác cao và đồng bộ ban đầu rất nhanh. Nó hoạt động tốt trên các hệ thống cấu hình thấp và máy ảo, và hiện nay nhiều bản phân phối đã chuyển sang sử dụng nó làm mặc định.
  • systemd-timesyncd Dịch vụ đồng bộ thời gian nhẹ, được bật mặc định trên Ubuntu 20.04 trở lên. Nó đơn giản và tiện lợi nhưng chức năng hạn chế, không phù hợp cho các cấu hình nâng cao hoặc khi muốn chạy một máy chủ NTP nội bộ.

Tại sao nên chọn ntpd?

Lý do chính để chọn ntpd trên Ubuntu là độ tin cậy và ổn định. Nó đặc biệt phù hợp trong các kịch bản sau:

  • Các máy chủ chạy liên tục trong thời gian dài, nơi độ chính xác thời gian là yếu tố then chốt
  • Môi trường cần xây dựng một máy chủ NTP nội bộ trong mạng
  • Các trường hợp sử dụng doanh nghiệp yêu cầu xác thực và kiểm soát chi tiết

Vì ntpd có lịch sử hoạt động lâu dài và khả năng tương thích rộng, nó mang lại sự yên tâm khi triển khai.

3. Cài đặt và cấu hình ban đầu của ntpd trên Ubuntu

Cài đặt ntpd

Để sử dụng ntpd trên Ubuntu, trước tiên bạn phải cài đặt gói ntp. Điều này có thể thực hiện dễ dàng bằng các lệnh sau:

sudo apt update
sudo apt install ntp

Việc này sẽ cài đặt ntpd và các tệp liên quan. Tùy thuộc vào phiên bản Ubuntu của bạn, chrony hoặc systemd-timesyncd có thể đã được bật theo mặc định. Trong những trường hợp như vậy, bạn nên vô hiệu hoá hoặc gỡ bỏ chúng trước.

sudo systemctl stop systemd-timesyncd
sudo systemctl disable systemd-timesyncd

Kích hoạt dịch vụ và xác minh khởi động

Sau khi cài đặt, bật dịch vụ ntpd và kiểm tra xem nó có đang chạy hay không:

sudo systemctl enable ntp
sudo systemctl start ntp
sudo systemctl status ntp

Nếu trạng thái hiển thị active (running), ntpd đang hoạt động bình thường.

Kiểm tra và chỉnh sửa tệp cấu hình ban đầu

Cấu hình ntpd được định nghĩa trong /etc/ntp.conf. Mặc định, một số máy chủ NTP (thường là từ mạng pool.ntp.org) đã được cấu hình.

Đầu tiên, xem lại tệp cấu hình:

cat /etc/ntp.conf

Nếu bạn muốn chỉ định các máy chủ nằm ở Nhật Bản, có thể chỉnh sửa cấu hình như sau:

server ntp.nict.jp iburst

Tùy chọn iburst giúp tăng tốc độ đồng bộ trong quá trình kết nối ban đầu và được khuyến nghị sử dụng.

Sau khi thực hiện thay đổi, khởi động lại ntpd để áp dụng chúng:

sudo systemctl restart ntp

Xác minh đồng bộ thời gian tự động

ntpd sẽ tự động đồng bộ thời gian sau khi khởi động. Để xác nhận hoạt động đúng, sử dụng lệnh sau:

ntpq -p

Lệnh này sẽ hiển thị danh sách các máy chủ NTP đã kết nối cùng với độ trễ, độ lệch và các thông tin chi tiết khác.

4. Cấu hình và tùy chỉnh các máy chủ NTP

Lựa chọn các máy chủ NTP được đề xuất

Một trong những yếu tố quan trọng nhất khi cấu hình ntpd là chọn các máy chủ NTP để đồng bộ. Khi kết nối qua internet, việc chỉ định các máy chủ NTP đáng tin cậy và gần địa lý—như các máy chủ trong nước—có thể mang lại đồng bộ thời gian ổn định và chính xác hơn.

Các máy chủ NTP tiêu biểu ở Nhật Bản bao gồm:

  • ntp.nict.jp (Viện Công nghệ Thông tin và Truyền thông Quốc gia)
  • ntp.jst.mfeed.ad.jp (JST / Mfeed)
  • ntp.ring.gr.jp (Internet Multi Feed)

Các máy chủ này được vận hành dựa trên đồng hồ nguyên tử có độ chính xác cao và có thể được sử dụng cho mục đích cá nhân mà không cần đăng ký đặc biệt.

Bạn có thể cấu hình đồng bộ với các máy chủ này bằng cách thêm các mục sau vào /etc/ntp.conf:

server ntp.nict.jp iburst
server ntp.jst.mfeed.ad.jp iburst
server ntp.ring.gr.jp iburst

Các tùy chọn cấu hình chi tiết trong ntp.conf

Tệp /etc/ntp.conf cho phép kiểm soát chi tiết hơn so với chỉ việc chỉ định máy chủ NTP. Dưới đây là một số chỉ thị thường được sử dụng.

  • restrict directive Kiểm soát các máy khách được phép hoặc bị hạn chế truy cập dịch vụ NTP. Vì lý do bảo mật, nên hạn chế các truy cập không cần thiết. Ví dụ: cho phép truy cập từ mạng nội bộ.
    restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap
    
  • driftfile Chỉ định tệp được dùng để ghi lại độ trôi của đồng hồ hệ thống. Trong hầu hết các trường hợp, cài đặt mặc định là đủ.
    driftfile /var/lib/ntp/ntp.drift
    

Xây dựng một máy chủ NTP nội bộ trong mạng

Bằng cách sử dụng ntpd trên Ubuntu, bạn cũng có thể biến hệ thống thành một máy chủ NTP nội bộ phân phối thời gian cho các thiết bị khác trong mạng nội bộ. Cấu hình này hữu ích trong môi trường không có kết nối internet hoặc khi cần quản lý thời gian đồng nhất trên nhiều hệ thống.

Quy trình thiết lập mẫu như sau:

  1. Thêm quy tắc restrict vào /etc/ntp.conf để cho phép truy cập nội bộ: restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap
  2. Cấu hình các máy khách tham chiếu tới máy chủ NTP nội bộ: server 192.168.0.10 iburst # Địa chỉ IP nội bộ của máy chủ NTP
  3. Mở cổng NTP trên máy chủ (cho phép UDP cổng 123 trong tường lửa): sudo ufw allow 123/udp

Nếu kết nối bị chặn, việc đồng bộ thời gian sẽ thất bại và lệnh ntpq sẽ không hiển thị kết nối tới máy chủ.

5. Kiểm tra Hoạt động và Khắc phục Sự cố ntpd

Kiểm tra Trạng thái Dịch vụ

Để xác nhận xem ntpd có đang chạy đúng cách hay không, sử dụng lệnh sau:

sudo systemctl status ntp

Nếu hiển thị active (running), ntpd đang hoạt động bình thường. Nếu trạng thái là inactive hoặc failed, có thể có lỗi cấu hình hoặc vấn đề phụ thuộc ngăn chặn việc khởi động.

Để xem nhật ký chi tiết, lệnh sau rất hữu ích:

journalctl -u ntp

Điều này cho phép bạn xem lịch sử khởi động và thông báo lỗi của dịch vụ ntpd theo thứ tự thời gian.

Kiểm tra Trạng thái Đồng bộ (ntpq -p)

Lệnh ntpq -p được sử dụng phổ biến nhất để xác minh xem ntpd có đang đồng bộ đúng cách với các máy chủ NTP hay không.

ntpq -p

Ví dụ đầu ra:

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*ntp.nict.jp     .NICT.           1 u   25   64  377    1.123   -0.345   0.024

Ý nghĩa của từng cột như sau:

  • remote : Tên của máy chủ NTP được kết nối
  • st : Stratum của máy chủ (càng thấp càng chính xác; 1 chỉ tham chiếu đồng hồ nguyên tử)
  • reach : Thanh ghi khả năng tiếp cận (lịch sử 8-bit)
  • delay : Độ trễ mạng (ms)
  • offset : Độ lệch thời gian (ms)
  • jitter : Biến động trong độ lệch

Máy chủ được đánh dấu bằng * hiện đang được chọn làm nguồn đồng bộ.

Các Lỗi Phổ biến và Cách Khắc phục

Dưới đây là các vấn đề phổ biến gặp phải khi triển khai ntpd và các giải pháp tương ứng.

1. Không có đầu ra từ ntpq -p / reach vẫn là 0

  • Nguyên nhân : Cổng UDP 123 có thể bị chặn bởi tường lửa hoặc bộ định tuyến
  • Giải pháp : Xác minh cài đặt tường lửa trên cả máy chủ và máy khách để đảm bảo lưu lượng NTP được phép.
    sudo ufw allow 123/udp
    

2. Hiển thị System clock not synchronized

  • Nguyên nhân : ntpd không chạy, hoặc có dịch vụ đồng bộ thời gian khác (như systemd-timesyncd) đang xung đột
  • Giải pháp : Vô hiệu hóa các dịch vụ đồng bộ thời gian không cần thiết và khởi động lại ntpd.
    sudo systemctl disable systemd-timesyncd
    sudo systemctl restart ntp
    

3. Không thể phân giải tên máy chủ NTP

  • Nguyên nhân : Vấn đề cấu hình DNS hoặc vấn đề mạng
  • Giải pháp : Kiểm tra phân giải tên bằng các lệnh như ping ntp.nict.jp và điều chỉnh cài đặt DNS nếu cần.

4. Thời gian lệch đáng kể và không đồng bộ

  • Nguyên nhân : Vì lý do an toàn, ntpd không tự động sửa chữa các độ lệch thời gian rất lớn
  • Giải pháp : Sửa chữa thủ công thời gian ban đầu, sau đó khởi động lại ntpd.
    sudo ntpd -gq  # Perform a one-time immediate synchronization
    sudo systemctl restart ntp
    

Để Giám sát Liên tục

Trong môi trường sản xuất, khuyến nghị ghi nhật ký định kỳ đầu ra của ntpq -p và thiết lập cảnh báo cho các bất thường. Phát hiện các dấu hiệu như thiếu nhật ký hoặc giá trị reach liên tục bị kẹt ở 0 cho phép xác định sớm các sự cố.

6. So sánh ntpd với Các Công cụ Đồng bộ Thời gian Khác

Các Công cụ Đồng bộ Thời gian Chính trên Ubuntu

Ubuntu cung cấp nhiều công cụ để đồng bộ thời gian, mỗi công cụ có đặc điểm riêng biệt. Việc chọn công cụ phù hợp phụ thuộc vào yêu cầu hệ thống và trường hợp sử dụng của bạn.

  • ntpd (gói ntp)
  • chrony
  • systemd-timesyncd

Đặc điểm của ntpd

  • Ưu điểm
  • Độ ổn định và độ tin cậy đã được chứng minh nhờ lịch sử hoạt động lâu dài
  • Bộ tính năng phong phú với các tùy chọn cấu hình chi tiết (máy chủ NTP cục bộ, xác thực, chế độ đối xứng)
  • Tương thích cao với các máy chủ NTP công cộng và tài nguyên khắc phục sự cố phong phú
  • Nhược điểm
  • Quá trình đồng bộ ban đầu sau khi khởi động có thể chậm
  • Ít thích ứng với các môi trường hiện đại như ảo hóa và mạng biến đổi cao

Đặc điểm của chrony

  • Ưu điểm
  • Đồng bộ ban đầu rất nhanh, ngay cả ngay sau khi khởi động
  • Độ chính xác cao trong môi trường ảo hoá hoặc mạng biến đổi (máy tính xách tay, VPN)
  • Học thích nghi cải thiện độ chính xác theo thời gian, đôi khi vượt trội hơn ntpd
  • Nhược điểm
  • Cấu hình hơi phức tạp hơn khi dùng làm máy chủ NTP cục bộ
  • Tài liệu ít hơn và ít ví dụ thực tế so với ntpd

Đặc điểm của systemd-timesyncd

  • Ưu điểm
  • Được bật mặc định trên Ubuntu 20.04 trở lên, cực kỳ dễ quản lý
  • Tiêu thụ tài nguyên tối thiểu với chức năng đồng bộ cơ bản
  • Tích hợp tốt với systemd và phù hợp cho các cài đặt Ubuntu tiêu chuẩn
  • Nhược điểm
  • Tính năng hạn chế; cấu hình nâng cao và hoạt động máy chủ NTP cục bộ không được hỗ trợ
  • Độ chính xác và khả năng ghi log cơ bản, khiến nó không phù hợp cho hệ thống quy mô lớn

Bảng so sánh

Featurentpdchronysystemd-timesyncd
AccuracyHighVery HighModerate
Initial Sync SpeedSometimes SlowVery FastModerate
Local NTP ServerExcellentGood (More Complex)Not Supported
Configuration FlexibilityHighMediumLow
Virtual Environment SupportLimitedExcellentGood
Operational History & ResourcesExcellentGoodLimited
Recommended Use CasesServers, Organization-wide SyncVirtual Environments, LaptopsSingle PCs, Beginners

Công cụ đề xuất theo trường hợp sử dụng

  • Môi trường máy chủ (đặc biệt là các hệ thống luôn bật)ntpd hoặc chrony để có độ ổn định và chính xác.
  • Môi trường đám mây, máy ảo, máy tính xách taychrony cung cấp tính linh hoạt và độ chính xác cao nhất.
  • Máy tính cá nhân đơn lẻ với nhu cầu đồng bộ cơ bảnsystemd-timesyncd là đủ.

7. Câu hỏi thường gặp (FAQ)

Câu hỏi 1. ntpd có được cài đặt mặc định trên Ubuntu 22.04 không?

A1.
Không. Trên Ubuntu 22.04, ntpd không được cài đặt mặc định. Thay vào đó, systemd-timesyncd được bật để đồng bộ thời gian cơ bản. Để sử dụng ntpd, bạn phải cài đặt gói ntp một cách rõ ràng.

sudo apt install ntp

Sau khi cài đặt, việc tắt systemd-timesyncd giúp tránh xung đột.

Câu hỏi 2. Tại sao ntpq -p không hiển thị kết quả nào?

A2.
Có một số nguyên nhân có thể:

  • Dịch vụ không chạy : Kiểm tra bằng sudo systemctl status ntp và khởi động nếu cần
  • Không có kết nối với các máy chủ NTP : Đảm bảo cổng UDP 123 không bị tường lửa chặn
  • Lỗi cấu hình : Kiểm tra xem /etc/ntp.conf có lỗi nào không

Bắt đầu bằng cách chạy lệnh sau để kiểm tra hoạt động cơ bản:

ntpq -p

Nếu đầu ra trống hoặc reach vẫn là 0, khả năng kết nối với máy chủ bên ngoài đang gặp sự cố.

Câu hỏi 3. Tôi nên chọn ntpd hay chrony?

A3.
Lựa chọn tối ưu phụ thuộc vào môi trường của bạn:

  • Các máy chủ vật lý chạy lâu dài hoặc thiết lập máy chủ NTP cục bộ → khuyến nghị dùng ntpd để có độ ổn định
  • Môi trường ảo, máy tính xách tay, hoặc mạng biến đổi (Wi‑Fi)chrony cung cấp độ chính xác tốt hơn và đồng bộ nhanh hơn
  • Chỉ cần đồng bộ thời gian đơn giảnsystemd-timesyncd là đủ

Câu hỏi 4. Lệnh ntpd -gq làm gì?

A4.
ntpd -gq thực hiện đồng bộ một lần với máy chủ NTP và sau đó thoát.

  • -g : Cho phép điều chỉnh ngay cả khi độ lệch thời gian lớn
  • -q : Đồng bộ một lần rồi thoát (không chạy như daemon)

Lệnh này hữu ích khi thời gian hệ thống sai lệch đáng kể và hoạt động bình thường của ntpd sẽ không tự động điều chỉnh.

Câu hỏi 5. Có lợi ích gì khi chỉ định nhiều máy chủ NTP không?

A5.
Có. Việc chỉ định nhiều máy chủ NTP tăng tính dự phòng và độ tin cậy. Nếu một máy chủ không khả dụng, hệ thống vẫn có thể đồng bộ với các máy chủ khác.

Ví dụ cấu hình trong /etc/ntp.conf:

server ntp.nict.jp iburst
server ntp.jst.mfeed.ad.jp iburst
server ntp.ring.gr.jp iburst

8. Kết luận: Cải thiện độ tin cậy hệ thống thông qua đồng bộ thời gian ổn định

Nhìn lại giá trị của ntpd

Trên các hệ thống Ubuntu, đồng bộ thời gian chính xác không chỉ là một tiện ích—nó ảnh hưởng trực tiếp đến bảo mật, khắc phục sự cố, quản lý log và độ chính xác của các quy trình tự động.

Bài viết này đã cung cấp một cái nhìn tổng quan toàn diện về các nguyên tắc cơ bản của NTP, cách đồng bộ thời gian hoạt động với ntpd, các bước cài đặt và cấu hình, các tùy chọn tùy chỉnh, phương pháp xác minh và khắc phục sự cố, cũng như so sánh với các công cụ thay thế.

Lời khuyên cho Độc giả

Lựa chọn công cụ đồng bộ thời gian trên Ubuntu phụ thuộc vào mục đích hệ thống, kiến trúc và yêu cầu về tính sẵn sàng.
Tuy nhiên, nguyên tắc vẫn luôn chung: không có thời gian chính xác, hoạt động ổn định của hệ thống là không thể.

  • Môi trường máy chủ và hệ thống có lượng log lớn → Cấu hình cẩn thận ntpd hoặc chrony
  • Các hệ thống đơn lẻ với yêu cầu đơn giản → Sử dụng systemd-timesyncd để thiết lập nhanh

Mặc dù các vấn đề đồng bộ thời gian thường không được chú ý trong hoạt động hàng ngày, chúng lại trở thành một yếu tố quyết định quan trọng khi khắc phục sự cố.

Hãy sử dụng hướng dẫn này để xây dựng một cấu hình đồng bộ thời gian phù hợp nhất với môi trường Ubuntu của bạn.

年収訴求