Cách cấu hình NTP để sử dụng trong NTP Pool Project trên CentOS 7

2 năm trước

Cách cấu hình NTP để sử dụng trong NTP Pool Project trên CentOS 7

Giới Thiệu 

Việc lưu giữ thời gian chính xác rất quan trọng đối với hầu hết mọi dịch vụ hoặc phần mềm. Email, logger, hệ thống sự kiện và lịch trình, cơ chế xác thực người dùng và dịch vụ chạy trên nền tảng phân tán đều cần dấu thời gian chính xác để ghi lại sự kiện theo thứ tự thời gian. Các dịch vụ này sử dụng Network Time Protocol hoặc NTP, để đồng bộ hóa đồng hồ hệ thống với nguồn bên ngoài đáng tin cậy. Nguồn này có thể là đồng hồ nguyên tử, bộ thu GPS hoặc máy chủ thời gian khác đã sử dụng NTP.

Đây là nơi  NTP Pool Project đi vào hoạt động. Đó là một cụm máy chủ thời gian khổng lồ trên toàn thế giới cung cấp khả năng truy cập dễ dàng vào "thời gian tốt" đã biết cho hàng chục triệu khách hàng trên khắp thế giới. Đó là máy chủ thời gian mặc định cho Ubuntu và hầu hết các bản phân phối Linux chính khác, cũng như nhiều ứng dụng và ứng dụng phần mềm nối mạng.

Trong hướng dẫn này, bạn sẽ thiết lập NTP trên máy chủ của bạn và định cấu hình nó là một phần của NTP Pool Project, vì vậy nó cung cấp thời gian chính xác cho những người dùng khác của NTP Pool Project. Cung cấp chu kỳ CPU dự phòng của bạn và băng thông không được sử dụng là một cách hoàn hảo để đưa một cái gì đó trở lại cộng đồng.

Băng thông yêu cầu tương đối thấp và có thể được điều chỉnh tùy thuộc vào số lượng bạn có thể cung cấp và nơi máy chủ của bạn cư trú. Mỗi máy khách sẽ chỉ gửi một vài gói UDP cứ 20 phút một lần, vì vậy hầu hết các máy chủ chỉ nhận được khoảng một tá các gói NTP mỗi giây, với một vài lần một ngày lên đến một trăm gói mỗi giây. Điều này dịch để sử dụng băng thông của 10-15Kb / giây với gai 50-120Kb / giây.

Có ba yêu cầu cơ bản bạn phải thỏa mãn trước khi tham gia NTP Pool Project:

  1. Máy chủ của bạn phải có 1 địa chỉ IP ổn định.
  2. Máy chủ của bạn phải có kết nối Internet vĩnh viễn và ổn định.
  3. Địa chỉ IP của bạn hầu hết không thay đổi hoặc chỉ thỉnh thoảng thay đổi (mỗi năm một lần hoặc ít hơn).

Đối với hầu hết các máy chủ dựa trên đám mây, hai yêu cầu đầu tiên thường được đáp ứng tự động. Yêu cầu thứ ba nhấn mạnh rằng việc tham gia NTP Pool Project là một cam kết lâu dài. Tất nhiên, nếu hoàn cảnh của bạn thay đổi, bạn nên lấy máy chủ ra khỏi vùng chứa, nhưng sẽ mất nhiều thời gian (chủ yếu là hàng tuần, nhưng đôi khi hàng tháng hoặc thậm chí nhiều năm) trước khi traffic biến mất hoàn toàn.

 

Yêu Cầu 

Để hoàn thành hướng dẫn này, bạn cần: 

Bước 1 — Cài đặt NTP

NTP không được cài đặt theo mặc định, vì vậy bạn sẽ sử dụng trình quản lý để cài đặt nó. Đầu tiên, cập nhật các phần mềm của bạn:

sudo yum update

Sau đó cài đặt NTP:

sudo yum install ntp

Khi quá trình cài đặt hoàn tất, khởi động dịch vụ và cấu hình nó để nó tự động khởi động mỗi khi máy chủ khởi động:

sudo systemctl start ntpd
sudo systemctl enable ntpd

Nếu bạn đã cấu hình firewall như được chỉ định trong yêu cầu , cho phép UDP traffic cho dịch vụ NTP để giao tiếp với  NTP pool:

sudo firewall-cmd --permanent --add-service=ntp
sudo firewall-cmd --reload

NTP  đã được cài đặt, nhưng nó được cấu hình để sử dụng các máy chủ thời gian NTP pool mặc định. Thay vào đó, hãy chọn một số máy chủ thời gian cụ thể.

 

Bước 2 — Chọn một Upstream Server phù hợp

 NTP Pool project yêu cầu các nhà khai thác muốn tham gia vào nhóm để chọn các máy chủ thời gian mạng cục bộ tốt thay vì sử dụng các máy chủ pool.ntp.org mặc định. Điều này đảm bảo rằng  NTP Pool Project vẫn đáng tin cậy, nhanh chóng và lành mạnh. Khi chọn nguồn thời gian của bạn, bạn sẽ muốn có một kết nối mạng ổn định mà không mất gói dữ liệu và càng ít bước nhảy giữa các máy chủ.   

Giao thức NTP nhiều tầng và phân cấp phân tách các bên liên quan đến máy chủ chính, máy chủ phụ và máy khách. Các máy chủ chính được gọi là Stratum 1 và được kết nối trực tiếp với nguồn thời gian, được gọi là Stratum 0. Nguồn này có thể là đồng hồ nguyên tử, bộ thu GPS hoặc hệ thống điều hướng vô tuyến. Các máy chủ thứ cấp trong chuỗi được gọi là Stratum 2Stratum 3 và vân vân.

Mỗi máy chủ cũng là một khách hàng. Một khách hàng của Stratum 2 nhận được thời gian từ một máy chủ Stratum 1 ngược dòng, và cung cấp thời gian cho các máy chủ Stratum 3 ở hạ lưu hoặc các máy khách khác. Đối với các thành viên NTP Pool Project hoạt động đúng, trình nền NTP cần ít nhất ba máy chủ được cấu hình. Dự án đề xuất tối thiểu là bốn, và không quá bảy nguồn.

 NTP Pool Project cung cấp danh sách các máy chủ thời gian công cộng của Stratum 1 và Startum 2. Các danh sách chỉ định các máy chủ thời gian NTP có sẵn để truy cập công cộng theo các hạn chế đã nêu. Bạn sẽ tìm thấy ba loại:

  • OpenAccess: Máy chủ thời gian này mở cho bất kỳ khách hàng nào tuân thủ NTP Pool 
  • RestrictedAccess: Máy chủ thời gian này có một số hạn chế truy cập ngoài các khuyến nghị sử dụng NTP Pool.
  • ClosedAccess: Máy chủ thời gian này đã bị đóng hoặc yêu cầu sắp xếp trước.

Cảnh báo:  Không sử dụng máy chủ không được liệt kê dưới dạng OpenAccess trừ khi bạn đã nhận được chấp thuận để làm như vậy.

Thăm  Stratum 1 Time Servers list. Bạn sẽ thấy danh sách như sau:

Stratum 1 servers

Sắp xếp danh sách theo cột ISO code và tìm một hoặc hai máy chủ gần với trung tâm dữ liệu của máy chủ của bạn. Khi cột Access Policy của máy chủ cho biết OpenAccess, bạn có thể sử dụng nó mà không có vấn đề gì. Nếu nó nói "RestrictedAccess", nhấn để mở mục nhập và đọc các hướng dẫn được ghi chú trong trường AccessDetails. Thông thường, bạn sẽ thấy rằng NotificationMessage được đặt thành Yes, có nghĩa là bạn phải tạo một email không chính thức hướng đến địa chỉ được cung cấp trong ServerContact, thông báo cho nhà điều hành máy chủ về mong muốn sử dụng máy chủ thời gian này làm nguồn thời gian cho thành viên NTP Pool Project của bạn .

Khi bạn đã xác định được các máy chủ bạn muốn sử dụng, hãy nhấp vào liên kết cho từng máy chủ trong cột ISO và sao chép tên máy chủ lưu trữ hoặc địa chỉ IP của nó. Bạn sẽ sử dụng các địa chỉ này trong Bước 3.

Tiếp theo, chọn ba hoặc bốn máy chủ từ danh sách Stratum 2, theo cùng một quy trình. 

Khi bạn đã chọn máy chủ thời gian, đã đến lúc định cấu hình ứng dụng khách NTP của bạn để sử dụng chúng.

 

Bước 3 - Cấu hình NTP để tham gia vào nhóm

Để sử dụng máy chủ của bạn với  NTP pool và định cấu hình các máy chủ thời gian mới của bạn, bạn sẽ cần phải thực hiện một số sửa đổi đối với cấu hình của daemon NTP . Để làm như vậy, hãy chỉnh sửa tệp  /etc/ntp.conf :

sudo vi /etc/ntp.conf

Trước tiên, hãy chắc chắn rằng một driftfile được cấu hình. Một driftfile lưu trữ tần số bù đắp giữa đồng hồ hệ thống đang chạy ở tần số danh nghĩa của nó, và tần số cần thiết để duy trì đồng bộ với thời gian chính xác. Nó giúp đạt được một thời gian ổn định và chính xác. Bạn sẽ thấy điều này ở đầu tệp cấu hình của bạn trên cài đặt mặc định:

/etc/ntp.conf
# For more information about this file, see the man pages
# ntp.conf(5),ntp_acc(5),ntp_auth(5),ntp_clock(5),ntp_misc(5),ntp_mon(5).
driftfile /var/lib/ntp/drift
...

Tiếp theo, xóa các mục nguồn thời gian mặc định khỏi cấu hình. Bạn đang tìm kiếm tất cả các dòng của mô hình  server 0.centos.pool.ntp.org iburst. Nếu bạn đang sử dụng cấu hình mặc định, hãy xóa các dòng được đánh dấu như được hiển thị trong ví dụ sau:

/etc/ntp.conf
...
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).server 0.centos.pool.ntp.org iburstserver 1.centos.pool.ntp.org iburstserver 2.centos.pool.ntp.org iburstserver 3.centos.pool.ntp.org iburst

Thay thế các dòng  đã xóa bằng các máy chủ được chọn thủ công mà bạn đã chọn ở bước trước.

/etc/ntp.conf
...
server ntp_server_hostname_1 iburst
server ntp_server_hostname_2 iburst
server ntp_server_hostname_3 iburst
server ntp_server_hostname_4 iburst
server ntp_server_hostname_5 iburst
...

Chúng ta sử dụng tùy chọn iburstcho mỗi máy chủ, theo đề xuất của NTP Pool. Bằng cách đó, nếu máy chủ không thể truy cập, điều này sẽ gửi một loạt tám gói thay vì gói thông thường. Sử dụng tùy chọn burst trong dự án NTP Pool được coi là lạm dụng vì nó sẽ gửi tám gói tin đó mỗi khoảng thời gian thăm dò, trong khi iburst chỉ gửi tám gói tin lần đầu tiên.

Tiếp theo, hãy đảm bảo cấu hình mặc định không cho phép truy vấn quản lý. Nếu bạn không làm, máy chủ của bạn có thể được sử dụng trong các cuộc tấn công phản chiếu NTP hoặc có thể dễ bị tấn công bởi các truy vấn ntpq và ntpdc cố gắng sửa đổi trạng thái của máy chủ. Kiểm tra xem tùy chọn noquery có được thêm vào các dòng restrict mặc định hay không. Ngoài ra hãy chắc chắn rằng bạn thêm các tùy chọn kod và limited khi chúng hạn chế quá  yêu cầu khách hàng và thực thi giới hạn tốc độ.

/etc/ntp.conf
...
# Permit time synchronization with our time source, but do not
# permit the source to query or modify the service on this system.
restrict default nomodify notrap nopeer noquery kod limited# Permit all access over the loopback interface. This could
# be tightened as well, but to do so would effect some of
# the administrative functions.
restrict 127.0.0.1
restrict ::1

Bạn có thể tìm thêm thông tin về các tùy chọn khác trong official documentation.

Tệp cấu hình daemon NTP của bạn bây giờ sẽ trông giống như sau, mặc dù tệp của bạn có thể có các nhận xét bổ sung mà bạn có thể bỏ qua một cách an toàn:

/etc/ntp.conf
driftfile /var/lib/ntp/ntp.drift
restrict default nomodify notrap nopeer noquery kod limitedrestrict 127.0.0.1
restrict ::1
server ntp_server_hostname_1 iburst
server ntp_server_hostname_2 iburst
server ntp_server_hostname_3 iburst
server ntp_server_hostname_4 iburst
server ntp_server_hostname_5 iburst

Lưu tệp và thoát chỉnh sửa .

Bây giờ khởi động lại dịch vụ NTP và để máy chủ thời gian của bạn đồng bộ hóa đồng hồ của nó với các máy chủ ngược dòng.

sudo systemctl restart ntpd

Sau một vài phút, kiểm tra tình trạng của máy chủ thời gian của bạn với lệnh  ntpq :

ntpq -p
  •  

Đầu ra sẽ trông giống như sau:

Output
remote refid st t when poll reach delay offset jitter 
============================================================================== 
mizbeaver.udel. .INIT. 16 u - 64 0 0.000 0.000 0.000 
montpelier.ilan .GPS. 1 u 25 64 7 55.190 2.121 130.492 
+nist1-lnk.binar .ACTS. 1 u 28 64 7 52.728 23.860 3.247 
*ntp.okstate.edu .GPS. 1 u 31 64 7 19.708 -8.344 6.853 
+ntp.colby.edu .GPS. 1 u 34 64 7 51.518 -5.914 6.669
 

Cột remote tcho bạn biết tên máy chủ của máy chủ mà trình tiện ích NTP đang sử dụng và cột refid  cho bạn biết nguồn máy chủ đang sử dụng. Vì vậy, đối với các máy chủ Stratum 1, trường refid sẽ hiển thị các máy chủ GPSPPSACTS hoặc PTB và Stratum 2 và cao hơn sẽ hiển thị địa chỉ IP của máy chủ ngược dòng. Các cột st cho thấy stratum, và delayoffset và jitter cho bạn biết về chất lượng của nguồn thời gian. Giá trị thấp hơn là tốt hơn cho ba trường này.

Máy chủ thời gian của bạn hiện có thể phục vụ thời gian cho cộng đồng . Bạn có thể xác minh điều này bằng cách gọi  ntpdate từ một máy chủ khác:

ntpdate -q your_server_ip

Đầu ra sẽ trông giống như thế này và nó cho bạn biết nó đã điều chỉnh máy chủ thời gian và độ lệch:

 
Output
server your_server_ip, stratum 2, offset 0.001172, delay 0.16428 
 2 Mar 23:06:44 ntpdate[18427]: adjust time server your_server_ip offset 0.001172 sec
 

Bây giờ bạn đã sẵn sàng để đăng ký máy chủ NTP của bạn với  NTP Pool Project để những người khác có thể sử dụng nó.

 

Bước 4 - Thêm máy chủ vào NTP Pool

 

Để thêm máy chủ của bạn để người khác có thể sử dụng máy chủ, hãy truy cập manage.ntppool.org và đăng ký tài khoản. Bạn sẽ nhận được email từ NTP Pool help@ntppool.orgyêu cầu bạn xác minh tài khoản của mình. Xác nhận tài khoản của bạn bằng cách làm theo hướng dẫn trong email và sau đó đăng nhập vào  manage.ntppool.org

Sau khi đăng nhập, bạn sẽ thấy giao diện đơn giản để thêm máy chủ:

Add a server

Nhập địa chỉ IP của máy chủ của bạn và nhấp vào Submit.

Màn hình tiếp theo yêu cầu bạn xác minh rằng nó đã xác định khu vực máy chủ của bạn. Nếu nó hiển thị máy chủ của bạn ở một vùng khác với bạn mong đợi, hãy sử dụng hộp Comment để cho họ biết.

The verification screen

Nếu bạn hài lòng, hãy xác nhận mục nhập bằng cách nhấp vào Yes, this is my server, add it!

Máy chủ của bạn hiện là một phần của NTP Pool Project. Thăm http://www.pool.ntp.org/scores/your_server_ip để xem thông tin hệ thống giám sát của NTP Pool đã thu thập về máy chủ của bạn. Nó kiểm tra máy chủ của bạn một vài lần mỗi giờ và hiển thị dữ liệu bù đắp, cùng với số điểm của hệ thống của bạn. Miễn là máy chủ của bạn đang giữ thời gian tốt và có thể truy cập, điểm số sẽ tăng lên cho đến khi đạt đến 20 điểm. Chỉ các máy chủ có số điểm cao hơn 10 được sử dụng trong vùng chứa.

Khắc phục sự cố kết nối

Nếu bạn gặp sự cố khi máy chủ của mình đồng bộ hóa, bạn có thể có một gói firewall tại chỗ để loại bỏ các gói outgoing của bạn trên cổng 123

Nếu trạm giám sát của NTP Pool Project không thể đến máy chủ NTP của bạn và điểm máy chủ của bạn bị hỏng hoặc bạn không thể sử dụng máy chủ để đồng bộ hóa một số đồng hồ khác, sử dụng gói Firewall để giảm incoming traffic đến cổng 123. Kiểm tra trạng thái firewall của bạn.

Nếu bạn chắc chắn rằng bạn không có firewall tại chỗ hoặc bạn đã mở cổng 123 cho cả outcoming và incoming traffic, nhà cung cấp máy chủ của bạn hoặc một nhà cung cấp dịch vụ chuyển tuyến khác có thể đang xóa các gói của bạn trên đường đi. Nếu bạn không có kiến thức để tự mình giải quyết các vấn đề đó, tốt nhất là nên chuyển sang cộng đồng và tiếp cận để được trợ giúp. NTP Pool Projects forum là một nơi tốt để bắt đầu. Bạn cũng có thể tham gia vào mailing list hoặc send an emaill cho nhà vận hành NTP Pool Project. Chỉ cần chắc chắn bạn có thể hiển thị tất cả các bước bạn đã cố gắng giải quyết vấn đề trước khi yêu cầu trợ giúp.

Kết Luận

Trong hướng dẫn này, bạn đã thiết lập thành công máy chủ thời gian của riêng mình và biến nó trở thành thành viên của  NTP Pool Project, phục vụ thời gian cho cộng đồng. Hãy chắc chắn theo dõi điểm số của máy chủ và thực hiện bất kỳ điều chỉnh nào cần thiết.