Làm cách nào để thiết lập máy chủ NTP cục bộ?


16

Tôi đã cài đặt máy chủ NTP trên Ubuntu Server 10.04 bằng cách sử dụng:

sudo apt-get install ntp

Trình nền NTP dường như hoạt động và lắng nghe trên cổng 123.

Tuy nhiên, tôi không thể lấy thời gian từ một máy khác:

sudo ntpdate -u my_ntp_server
23 Nov 18:48:41 ntpdate[2990]: no server suitable for synchronization found

Có bất kỳ cấu hình cần thiết để làm?

Câu trả lời:


19

Đây là một hướng dẫn tốt từ các diễn đàn Ubuntu: http://ubuntuforums.org/showthread.php?t=862620

Sao chép-pasta:

HOWTO: Thiết lập Máy chủ NTP

Hướng dẫn này mô tả cách thiết lập máy của bạn làm máy chủ Giao thức thời gian mạng (NTP) cục bộ và / hoặc cách sử dụng trình nền NTP để thường xuyên duy trì thời gian hệ thống chính xác.

NTP là gì?

Giao thức thời gian mạng (NTP) là một giao thức được thiết kế để đồng bộ hóa chính xác đồng hồ thời gian cục bộ với các máy chủ thời gian được nối mạng. Mạng NTP của các máy chủ thời gian được thiết lập theo cách phân cấp, sao cho bất kỳ người dùng nào cũng có thể vào hệ thống dưới dạng máy chủ ở một mức nào đó (xem trang Wikipedia để biết thêm chi tiết).

Hệ thống phân cấp NTP được phân tách thành các cấp khác nhau, được gọi là tầng đồng hồ. Cấp chính xác nhất, Stratum 0, được dành riêng cho đồng hồ nguyên tử, v.v ... Cấp tiếp theo, Stratum 1, thường được sử dụng bởi các máy nối mạng được kết nối cục bộ với đồng hồ Stratum 0. Stratum 2 ... 15 là các máy NTP được kết nối lần lượt với các đồng hồ cấp thấp hơn và nhau.

Hướng dẫn này mô tả cách đồng bộ hóa chính xác với máy Stratum 1 và 2 và duy trì chính xác đồng hồ hệ thống nhất có thể trong suốt cả ngày. Các phần cũng được bao gồm về cách cho phép máy của bạn hoạt động như một máy chủ Stratum 2/3 cho các máy khác trên mạng cục bộ của bạn.

Tôi có phải tạo một máy chủ NTP không?

Không ... hoàn toàn không! Nếu bạn hài lòng với các đồng hồ trên mạng của mình có một số khác biệt không xác định so với thời gian tiêu chuẩn (và nhau), thì bạn không phải thiết lập máy chủ NTP. Tôi đã thiết lập một máy tính xách tay của mình để đồng bộ hóa nhiều máy trên mạng cục bộ trong vòng <1 ms cho một thử nghiệm sinh học. Ngoài ra, có nhiều lợi thế khác, được mô tả dưới đây.

Động lực:

Thông thường, các hộp Ubuntu chưa sửa đổi sử dụng ntpdate ( /usr/sbin/ntpdate) để đồng bộ hóa đồng hồ định kỳ với một số máy chủ thời gian bên ngoài. Cách tiếp cận này đồng bộ hóa đồng hồ với độ phân giải khóa học (thường là một lần một ngày).

Đồng hồ máy tính không hoàn hảo và sẽ trôi dạt từ máy chủ thời gian (chính xác) trong ngày. Hơn nữa, tốc độ trôi trong đồng hồ của các máy tính khác nhau khác nhau, như vậy vào cuối ngày, có thể tồn tại sự khác biệt đáng kể giữa các máy được kết nối mạng cục bộ khác nhau, điều này có thể gây trở ngại cho một số hoạt động nhất định (ví dụ, có một khiếu nại nào đó khi di chuyển mã nguồn giữa máy khác nhau?).

Có thể chạy daemon NTP cục bộ trên một máy trên mạng của bạn. Điều này có nhiều ưu điểm: đầu tiên, trình nền NTP dần dần "học" tốc độ trôi của máy cục bộ của bạn và có thể sửa cho nó trong suốt cả ngày. Đồng bộ hóa với các máy chủ thời gian cấp cao hơn diễn ra nhiều lần trong ngày và nhiều máy chủ thời gian khác nhau có thể được sử dụng đồng thời để đồng bộ hóa chính xác hơn. Theo cách này, trình nền NTP hoạt động như một máy khách thời gian chính xác, giữ cho đồng hồ hệ thống của bạn càng gần thời gian tiêu chuẩn càng tốt.

Ngoài việc duy trì đồng hồ hệ thống chính xác, trình nền NTP cho phép một máy trên mạng của bạn (nếu bạn muốn) hoạt động như một máy chủ thời gian NTP. Làm như vậy sẽ cho phép các máy khác trên mạng cục bộ của bạn đồng bộ hóa với máy chủ thời gian LAN của bạn một cách rất nhanh chóng và chính xác, vì độ trễ của mạng được giảm thiểu. Theo cách này, sự khác biệt về đồng hồ giữa các máy trên mạng của bạn được giữ ở mức tối thiểu nhất có thể. Mac và thậm chí các hộp Windows cũng có thể đồng bộ hóa với máy chủ NTP, nếu bạn thiết lập một máy chủ.

Có những động lực khác, ít cá nhân hơn, để thiết lập một máy như một máy chủ NTP. Đầu tiên, làm như vậy có thể làm giảm căng thẳng cho các máy chủ NTP cấp cao hơn, vì các máy khác trong mạng LAN của bạn có thể đồng bộ hóa với máy chủ thời gian được thiết lập cục bộ. Ngoài ra, ntpdate đã không được ủng hộ khi sử dụng cờ -q cho ntpd (bắt chước chức năng của nó). Do đó, ngay cả khi bạn không muốn chạy ntpd liên tục trong nền, ntpdate cuối cùng sẽ được thay thế bằng ntpd, vì vậy bạn có thể muốn làm quen với nó ngay bây giờ

Cách duy trì đồng hồ hệ thống chính xác với ntpd

  1. Cài đặt trình nền NTP

Đầu tiên, cài đặt trình nền NTP (ntpd):

sudo aptitude install ntpd

Như đã đề cập trước đây, ntpd có thể hoạt động như một máy khách (đồng bộ hóa thời gian hệ thống của bạn) và như một máy chủ (cung cấp thời gian chính xác cho các máy khác).

Tùy chọn, bạn cũng có thể muốn xóa chương trình đồng bộ hóa thời gian (không dùng nữa) trước đó, ntpdate. Có lẽ sẽ khôn ngoan hơn khi làm như vậy sau khi bạn có ntpd làm việc

sudo aptitude remove ntpdate
  1. Cấu hình daemon đúng cách

Tệp cấu hình cho ntpd được đặt tại /etc/ntp.conf. Tệp Ubuntu mặc định có thể yêu cầu một số sửa đổi để có hiệu suất tối ưu.

Phần đầu tiên bạn có thể muốn sửa đổi là danh sách các máy chủ để đồng bộ hóa. Phần mặc định có thể trông như sau:

# You do need to talk to an NTP server or two (or three).
server ntp.ubuntu.com

Để có được thời gian chính xác nhất có thể, tốt nhất là liên lạc với nhiều máy chủ NTP khác nhau và giữ chúng càng gần vị trí thực của bạn càng tốt. Có nhiều danh sách máy chủ khác nhau trực tuyến, có lẽ là tốt nhất nằm ở đây. Có một số tranh luận về số lượng máy chủ thích hợp để sử dụng. Một là tốt hơn hai, và ba hoặc nhiều hơn có lẽ là một ý tưởng tốt, miễn là bạn không quá nhiệt tình. Một ví dụ về một vài máy chủ thời gian mà tôi đã sử dụng như sau:

server nist1-dc.WiTime.net iburst
server ntp0.mcs.anl.gov
server 0.us.pool.ntp.org
server 1.us.pool.ntp.org
server 2.us.pool.ntp.org
server 3.us.pool.ntp.org

Khi một vài máy chủ tốt đã được tìm thấy, hãy thêm chúng vào danh sách, đặt 'iburst'sau máy chủ hứa hẹn nhất. Ví dụ:

server nist1-dc.WiTime.net iburst

Điều này sẽ khiến ntpd đồng bộ hóa rất nhanh với máy chủ này sau khi khởi động. Mặt khác, ntpd sẽ dần dần có xu hướng trôi theo thỏa thuận với danh sách máy chủ (như bản chất của nó) và có thể mất 15-20 phút để đồng bộ hóa đủ tốt để hoạt động như một máy chủ thời gian cho phần còn lại của mạng.

Ngoài ra, hãy thêm một vài dòng vào cuối danh sách máy chủ của bạn để cung cấp giờ địa phương hiện tại của bạn làm mặc định nếu bạn tạm thời mất kết nối Internet:

server 127.127.1.0
fudge 127.127.1.0 stratum 10

Điều này sẽ ngăn chặn mọi sự khó chịu nếu bạn đang chạy ntpd trên máy tính xách tay hoặc máy khác với thời gian ngắt kết nối không liên tục khỏi Internet.

Nói chung, danh sách máy chủ sẽ trông giống như sau (đây là của tôi, máy chủ của bạn có thể sẽ khác):

# You do need to talk to an NTP server or two (or three).
server nist1-dc.WiTime.net iburst
server ntp0.mcs.anl.gov
server 0.us.pool.ntp.org
server 1.us.pool.ntp.org
server 2.us.pool.ntp.org
server 3.us.pool.ntp.org
server 127.127.1.0
fudge 127.127.1.0 stratum 10
  1. Đảm bảo cấu hình hoạt động

Bây giờ bạn đã có một danh sách máy chủ phù hợp trong /etc/ntp.conftệp của mình , đã đến lúc chạy daemon và xem bạn có đồng bộ hóa đúng không! Đảm bảo bạn có kết nối Internet đang hoạt động, rồi chạy:

sudo /etc/init.d/ntp restart

Tiếp theo, theo dõi nhật ký hệ thống của bạn để xem bạn có đồng bộ hóa với máy chủ thời gian không:

tail -f /var/log/syslog

Trong khoảng 10-15 giây (hoặc tối đa 15-20 phút nếu bạn quên đặt 'iburst' sau máy chủ yêu thích của mình), bạn sẽ thấy một cái gì đó giống như sau trong nhật ký hệ thống của bạn:

Jul 17 16:50:22 hostname ntpd[22402]: synchronized to 140.221.9.20, stratum 2

Nếu thông báo này không bao giờ đến, bạn chưa được đồng bộ hóa đúng với mạng máy chủ NTP. Kiểm tra danh sách các đồng nghiệp NTP mà bạn đang liên lạc bằng cách sử dụng các mục sau:

ntpq -c lpeer

Nếu các trường 'độ trễ', 'bù' và 'jitter' khác không và bạn chưa đồng bộ hóa, điều đó có thể có nghĩa là bạn chỉ cần đợi một lát. Kiểm tra lại rằng bạn đã chèn đối số 'iburst' vào danh sách máy chủ của mình! Các đồng nghiệp của tôi, để tham khảo, trông giống như sau:

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*milo.mcs.anl.go 192.5.41.40      2 u    4   64   77   46.213   67.753   2.207
-europium.canoni 193.79.237.14    2 u   63   64   37   97.375   71.020   1.875
-dtype.org       69.25.96.13      2 u    2   64   77   86.956   69.178   1.804
+smtp130.junkema 216.218.254.202  2 u    2   64   77   87.266   67.677   0.916
+kechara.flame.o 216.218.254.202  2 u    -   64   77   89.183   68.717   1.713
-host2.kingrst.c 99.150.184.201   2 u    -   64   77   24.306   62.121   2.608
 LOCAL(0)        .LOCL.          10 l   59   64   37    0.000    0.000   0.002
  1. Chia sẻ! (không bắt buộc)

Khi ntpd đang chạy và được đồng bộ hóa với các máy chủ thời gian bạn đã chọn, bạn có thể thiết lập nó để hoạt động như một máy chủ thời gian cho các máy khác. Để làm như vậy, thêm một phần như sau /etc/ntp.conf:

# Allow LAN machines to synchronize with this ntp server
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
restrict 192.168.2.0 mask 255.255.255.0 nomodify notrap
You may add as many (or few) CIDR address blocks to allow to synchronize with your machine as you'd like. I included those commonly used with Linksys (192.168.1.*) and SMC (192.168.2.*) routers.
  1. Làm cho đồng bộ! (không bắt buộc)

Khi bạn đã thiết lập máy chủ NTP bằng các bước 1-4, bạn có thể đồng bộ hóa các máy khác trên mạng với máy chủ của mình theo nhiều cách khác nhau. Tôi phác thảo một vài trong số họ dưới đây:

ntpd:

Nếu bạn đã cài đặt ntpd trên một máy khác, bạn có thể sử dụng máy chủ đầu tiên của mình trong danh sách máy chủ của tệp ntp.conf hoặc có thể đồng bộ hóa một lần với tùy chọn -q, như sau:

ntpd -q [IP address of your server]

ntpdate:

Nếu bạn vẫn cài đặt ntpdate trên máy khác, bạn có thể sử dụng nó để đồng bộ hóa với máy chủ của mình như sau:

ntpdate [IP address of your server]

Lưu ý: nếu bạn đang chạy ntpd trên máy và vì một số lý do vẫn muốn sử dụng ntpdate để đặt thời gian, bạn phải sử dụng tùy chọn -u.

Các cửa sổ:

Các máy Windows sử dụng một phiên bản đơn giản của NTP được gọi là Giao thức thời gian mạng đơn giản (SNTP) và có thể đồng bộ hóa với các máy chủ NTP. Để đồng bộ hóa với máy chủ mới của bạn, nhấp đúp vào thời gian và chuyển đến tab "Thời gian Internet". Đặt địa chỉ IP của máy chủ của bạn vào trường "Máy chủ". Tôi đã đính kèm ảnh chụp màn hình đồng bộ hóa Windows XP với máy chủ thời gian LAN, nếu có ai quan tâm.

Đó là nó! Toàn bộ quá trình không khó, nhưng có thể gây nhầm lẫn cho ai đó đã không xử lý nhiều với mạng NTP trước đây. Tôi hi vọng cái này giúp được! Hãy cho tôi biết nếu bạn có bất kỳ vấn đề nào khi thiết lập máy chủ của bạn.

Mike

Liên kết

Tôi thấy các liên kết sau đây hữu ích ... bạn cũng có thể!

https://help.ubfox.com/7.10/server/C/NTP.html http://linuxwave.blogspot.com/2007/0...tp-server.html http: //lists.ntp.isc. org / pipermail / q ... er / 011889.html http://www.linuxhomenetworking.com/w...Fntp.conf_File http://www.ntp.org/ntpfaq/NTP-a-faq.htm


Cảm ơn các liên kết. Thật ra, tôi đã không thay đổi cấu hình của mình! Nó chỉ hoạt động sau một thời gian.
Khaled

trên máy chủ ntp của bạn, bạn có thể chạy ntpdate -s a_stratum_1_server_addressđể buộc nó đồng bộ hóa ngay lập tức. sau đó trên máy (máy khách) khác của bạn, chạy 'ntpdate -q your_local_ntp_server` sẽ phản hồi với một cái gì đó tương tựserver your_local_ntp_server_ip, stratum 2, offset -0.012221, delay 0.02618
Keith Reynold

Một liên kết chỉ trả lời có thể hết hạn. Vui lòng bao gồm các thông tin quan trọng trong câu trả lời chính nó.
Zeta

5

Có nhiều liên kết về điều này và dường như với tôi rằng họ làm phức tạp thủ tục. Trong trường hợp của tôi, tôi có một máy hoạt động như một máy chủ proxy và tường lửa và tất cả các máy khác của tôi kết nối với internet thông qua nó. Tôi không muốn mở cổng trên tường lửa. Do đó các máy chủ proxy phải là (NTP) thời gian máy chủ và các máy khác ( khách hàng ) có được thời gian từ nó.

Bạn phải cài đặt ntp trên tất cả các máy và bạn cũng nên cài đặt ntpq trên tất cả các máy.

Đầu tiên, xem ntp có hoạt động không. Theo mặc định, ntpd (ntp daemon) sẽ chạy ngay khi được cài đặt và mặc định sẽ hoạt động. Tuy nhiên, ntp không hoạt động ngay lập tức, vì vậy hãy đợi một lúc. Sau đó, lệnh:

ntpq -c lpeer

sẽ cung cấp cho bạn đầu ra trông giống như thế này:

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+golem.canonical 193.79.237.14    2 u  170 1024  377  140.458   -0.655   3.234
*gatekeeper.tss. 204.123.2.72     2 u  608 1024  377   84.650    2.168   0.471

hoặc là:

ntpq --numeric --peers

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+91.189.89.199   193.79.237.14    2 u  652 1024  377  140.151   -0.242   2.821
*66.7.96.1       204.123.2.72     2 u   64 1024  377   85.074    2.409   0.963

Nếu vậy, bạn đã kết nối và máy chủ thời gian của bạn đang nhận được thời gian. Nếu không, sử dụng

ps -e | grep "ntp" 

để chắc chắn rằng ntp đang chạy và thử lại. Cũng thử khởi động lại ntp:

sudo /etc/init.d/ntp restart

có thể mất một chút "thời gian" (xin lỗi!) trước khi kết nối được thiết lập. Trình nền không thường xuyên thăm dò các máy chủ. Cột "khi" trong đầu ra ở trên hiển thị thời gian tính bằng giây kể từ khi máy chủ được thăm dò.

Bây giờ, bạn phải làm cho máy chủ thời gian gửi thời gian đến các máy khác của bạn.

Chỉnh sửa tập tin /etc/ntp.conftrên máy chủ. Bạn phải thêm một dòng cho mạng của bạn. Trong trường hợp của tôi, tôi có một mạng 10.0.0.0. Trong tệp ntp.conf, tôi đã thêm dòng:

broadcast 10.255.255.255

Bạn phải thêm một đường truyền phát cho mỗi phân đoạn của mạng. Nếu mạng của bạn đơn giản như của tôi, một dòng như trên là tất cả những gì bạn cần. Bây giờ, khởi động lại ntp bằng lệnh trên và kiểm tra lại bằng ntpq, và bạn sẽ thấy:

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+golem.canonical 193.79.237.14    2 u   70 1024  377  140.151   -0.242   2.821
*gatekeeper.tss. 204.123.2.72     2 u  506 1024  377   84.650    2.168   0.241
 10.255.255.255  .BCST.          16 u    -   64    0    0.000    0.000   0.002

Voila, nó đang phát sóng.

Bây giờ, bạn phải làm cho mọi máy khách có được thời gian từ máy chủ phát sóng của bạn. Trên mỗi tệp, chỉnh sửa tệp:

/etc/ntp.conf

và bạn sẽ thấy một số dòng chỉ định máy chủ.

thêm một dòng

server 10.10.10.1

hoặc bất cứ địa chỉ nào của máy chủ của bạn. Sau đó khởi động lại ntp trên máy khách bằng lệnh trên. Ngoài ra, bạn có thể lấy ID tiến trình và chỉ cần giết nó, và chạy lại nó. Bất cứ điều gì.

Sau đó, sau khi đủ thời gian, kiểm tra với ntpq:

ntpq --numeric --peers
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*10.10.10.1      66.7.96.1        3 u  123 1024  377    0.430    1.022   1.831

và bạn có thể thấy rằng máy khách đang sử dụng máy chủ thời gian.

Điều này cần một chút thời gian.


Bạn có thể chạy ntpdate -s a_stratum_1_server_addresstrên máy chủ ntp của mình để buộc nó bỏ phiếu và đồng bộ hóa ngay lập tức.
Keith Reynold

Là loại phát sóng được hỗ trợ bởi tất cả các thiết bị chuyển mạch? Ví dụ, phát sóng UDP đang bị chặn bởi hầu hết các thiết bị chuyển mạch / bộ định tuyến.
Tanocation

1

Câu trả lời được chấp nhận (như cho tháng 7 năm 2018) không hiệu quả với tôi. Phương pháp khác này hoạt động tốt trên Ubuntu 16.04 LTS vào tháng 7 năm 2018:

Cài đặt NTP nếu không được cài đặt:

sudo apt-get update
sudo apt-get install ntp

Chỉnh sửa tệp cấu hình để cho phép dịch vụ NTP nhận yêu cầu:

sudo nano /etc/ntp.conf --syntax=sh

Bỏ ghi chú dòng này:

# If you want to provide time to your local subnet, change the next line.
# (Again, the address is an example only.)
# broadcast 192.168.111.255

đến:

# If you want to provide time to your local subnet, change the next line.
# (Again, the address is an example only.)
broadcast 192.168.111.255

Khởi động lại dịch vụ NTP :

sudo /etc/init.d/ntp restart

Bây giờ máy chủ NTP của bạn phải hoạt động và cho phép các máy tính khác đồng bộ hóa với máy tính của bạn. Bất kỳ thử nghiệm nào ở trên, như ntpdate -u YourComputernên hoạt động tốt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.