Tại sao ntpd không cập nhật thời gian trên máy chủ của tôi?


20

Tôi có ntpd chạy trên máy chủ của tôi. Đó là tất cả các cài đặt mặc định, ngoại trừ tôi nhận xét khả năng trở thành máy chủ của các máy khác:

# restrict -4 default kod notrap nomodify nopeer noquery                                                                    
# restrict -6 default kod notrap nomodify nopeer noquery   
restrict default ignore

Nếu tôi chạy ntpdate -q ntp.ubuntu.com, tôi được bảo là đồng hồ của máy tôi tắt 7 giây.

Chuyện gì đang xảy ra vậy? Làm thế nào tôi có thể chẩn đoán những gì đang xảy ra, có một bản ghi tôi có thể bật không?

thêm thông tin số 1

# ntpq -np
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 91.189.94.4     193.79.237.14    2 u   30   64    7  108.518   -0.136   0.361

thêm thông tin # 2

Đây là những gì khi tôi đặt câu hỏi:

# ntpdate -q ntp.ubuntu.com
server 91.189.94.4, stratum 2, offset 7.191308, delay 0.13310
10 Jan 20:38:09 ntpdate[31055]: step time server 91.189.94.4 offset 7.191308 sec

Và đây là giao diện của nó bây giờ, sau khi khởi động lại ntpd một vài lần (tôi cho rằng đó là những gì đã sửa nó):

# ntpdate -q ntp.ubuntu.com
server 91.189.94.4, stratum 2, offset 0.000112, delay 0.13164
10 Jan 20:47:03 ntpdate[31419]: adjust time server 91.189.94.4 offset 0.000112 sec

thêm thông tin số 3

Tôi đã gỡ cài đặt ntp và cài đặt openntpd và chạy /usr/sbin/ntpd -d, và tôi thấy đầu ra như thế này:

reply from 64.73.32.134: offset 6.715003 delay 0.041152, next query 30s
reply from 208.53.158.34: offset 6.700224 delay 0.036263, next query 31s
adjusting local clock by 6.734120s
reply from 72.18.205.156: offset 6.708575 delay 0.035885, next query 30s
reply from 64.73.32.134: offset 6.701463 delay 0.044199, next query 33s

Điều này với tôi khá rõ ràng chỉ ra rằng tôi không thể đặt thời gian trên máy chủ của mình (mặc dù, với ntp thông thường, đôi khi nó dường như cập nhật ...).

thêm thông tin số 4

Nhà cung cấp VPS của tôi nói:

Các hạt nhân mới nhất không nên khóa hệ thống của bạn với đồng hồ dom0 của chúng tôi, để đảm bảo an toàn, bạn có thể đặt xen.indep khu_wallclock = 1 trong sysctl.conf của bạn.

Mà tôi cho rằng vẫn không giải quyết được vấn đề VPS cần CPU có sẵn để thực hiện các phép tính thời gian chính xác.


Có phải đó là toàn bộ tập tin cấu hình của bạn? Nếu bạn chạy ntpq -np, đầu ra là gì?
David Mackffy

Phần còn lại của cấu hình ở đâu? Không có máy chủ ngược dòng để máy chủ của bạn có thời gian.
Aaron Copley

6
Hiểu rồi. Có vẻ như ntpd đã hoạt động bình thường. NTPd sẽ "xoay" đồng hồ của bạn trở lại đồng bộ hóa dần dần. Thay đổi thời gian đột ngột có thể gây ra vấn đề lớn đối với một số quy trình đang chạy, do đó NTP hoạt động bằng cách tăng tốc hoặc làm chậm độ dài của giây để dần dần điều chỉnh.
Aaron Copley

1
Có, kernel sẽ bắt đầu với đồng hồ phần cứng khi khởi động vì khi khởi động chỉ là tham chiếu. Nếu nó đã chạy trong nhiều tháng, như bạn nói, thì đó không phải là nó. Bạn có thể yêu cầu NTP đồng bộ hóa với đồng hồ phần cứng của bạn. Tôi không chắc chắn về Ubuntu nhưng trên các hệ thống dựa trên Red Hat có trong / etc / sysconfig / ntpd. Bạn có thể nhìn vào đó hoặc tham khảo tài liệu phần cứng của bạn.
Aaron Copley

1
Tôi cũng không nghĩ bạn hiểu rằng ntpdate là một ứng dụng độc lập. Nó không liên quan gì đến ntpd và không nên sử dụng để khắc phục sự cố. Lý do mà ntpq được đề xuất với các tùy chọn -p để hiển thị tính tiên phong. Nếu ntpd nhìn thấy (các) đồng nghiệp của bạn, thì nó sẽ đưa hệ thống trở lại đồng bộ. Có vẻ như mọi thứ đều tốt bây giờ. Tôi chỉ hy vọng cung cấp một số cái nhìn sâu sắc thêm. Hy vọng điều này sẽ giúp trong tương lai!
Aaron Copley

Câu trả lời:


10

Bạn có thể kích hoạt đăng nhập ntpd bằng cách thêm phần này vào ntp.conf:

logfile /var/log/ntpd.log

Nguồn: hướng dẫn sử dụng ntp

Nếu bạn tắt ntpd, bạn có thể cập nhật đồng hồ theo dòng lệnh không? Nếu bạn chạy lệnh ntpdate và nhận được lỗi như vậy:

# ntpdate ntp.ubuntu.com
10 Jan 23:47:57 ntpdate[26284]: Can't adjust the time of day: Operation not permitted

Điều này có nghĩa là bạn có thể đang sử dụng VPS và trong trường hợp đó bạn không thể sửa đổi đồng hồ hệ thống - điều này chỉ có thể được thực hiện trên máy chủ.


ntpdate rất vui khi làm việc đó - Nhưng tôi tự hỏi liệu khi máy chủ của tôi khởi động lại thì đồng hồ có được đặt lại thành đồng hồ của phần cứng hay một số thứ như vậy không?
John Bachir

Sau khi bạn sử dụng ntpdate để đặt đồng hồ, hãy sử dụng 'hwclock --systohc' để đồng bộ hóa thời gian "chạy" với đồng hồ phần cứng của bạn. Nó được cho là đồng bộ hóa khi khởi động lại nhưng nếu máy của bạn gặp sự cố (hoặc nếu không có vấn đề khi thực hiện tắt máy đúng cách) thì không thể đồng bộ hóa nó.
Dave Drager

Chà, đó là một vhost, vì vậy tôi không có quyền truy cập vào đồng hồ phần cứng (ít nhất là tôi hy vọng là không!)
John Bachir

Có một đồng hồ phần cứng được mô phỏng giống như có BIOS được mô phỏng.
Keith Stokes

Tôi là quản trị viên trên một số nền tảng VPS, không ai trong số họ (openvz, Xen) có quyền truy cập để đặt đồng hồ trên hệ thống. Tất cả đều phải được thực hiện ở cấp máy chủ. Gửi một vé với chủ nhà của bạn để cho biết thời gian đã hết, họ sẽ chạy ntp và có thời gian đồng bộ hóa cho bạn.
Dave Drager

7

Được rồi, trong thời gian kể từ khi đặt câu hỏi này, tôi đã cài đặt lại ntp với cấu hình nhà cung cấp mặc định (Ubuntu 10.0.4) và để nó chạy trong vài ngày. Khi viết bài này, ntpdate -q ntp.ubuntu.comcho thấy thời gian của tôi chính xác trong vòng 0,000216 giây. Vì vậy, các vấn đề tôi gặp phải là với cấu hình tùy chỉnh của tôi (nơi tôi đang cố gắng để các máy chủ bên ngoài không thể truy vấn máy chủ của mình, điều mà tôi đã làm với tường lửa của mình nên tôi không quá lo lắng). Dưới đây là toàn bộ Ubuntu 10.0.4 ntp.conf, với các bình luận đã bị xóa:

driftfile /var/lib/ntp/ntp.drift

statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable

server ntp.ubuntu.com

restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery

restrict 127.0.0.1
restrict ::1

Tôi hoan nghênh phản hồi về cách cấu hình này có thể được cải thiện.

Tôi cũng đã đặt vé với nhà cung cấp VPS của mình để yêu cầu họ đề xuất chi tiết về việc tốt nhất nên làm. Tôi đã chỉ cho họ chủ đề này và một số tài liệu khác chỉ ra rằng có thể việc phân bổ CPU sẽ gây ra vấn đề về thời gian. Đây là những gì họ nói:

Các hạt nhân mới nhất không nên khóa hệ thống của bạn với đồng hồ dom0 của chúng tôi, để đảm bảo an toàn, bạn có thể đặt xen.indep khu_wallclock = 1 trong sysctl.conf của bạn. Điều này sẽ đảm bảo cá thể máy chủ không theo dõi đồng hồ trên máy chủ.

và:

Tôi nghĩ rằng bạn có thể hiểu sai về mức độ chính xác mà vấn đề này ảnh hưởng đến các máy khách NTP trong môi trường ảo hóa. Theo kinh nghiệm của tôi về hệ thống ảo hóa trên máy chủ Xen (chẳng hạn như thiết lập của chúng tôi tại Rackspace Cloud), sự thiếu chính xác được thừa hưởng bằng cách không có đồng hồ hệ thống chuyên dụng để xử lý các ngắt thành phân số của giây, ngay cả trên các hệ thống được tải cao. Sự không chính xác nhỏ này được NTP quản lý dễ dàng ngay cả khi nó chỉ được thiết lập để cập nhật thời gian máy chủ một lần mỗi ngày (hoặc thậm chí ít thường xuyên hơn thế).


4

Một trong những bình luận của bạn nói rằng bạn đang chạy trên một vhost. Trong trường hợp này, có lẽ bạn sẽ không có nhiều thành công vì cảm giác thời gian của vhost của bạn sẽ phụ thuộc cả vào máy chủ thực sự mà nó đang chạy và do vhost bận rộn như thế nào.

Tùy thuộc vào ảo hóa được sử dụng, vhost có thể không nhận được một phần gián đoạn ổn định trong một khoảng thời gian nhất định. Điều này sẽ làm cho đồng hồ chạy nhanh hơn, hoặc chậm hơn so với thực tế đang xảy ra. Vì ntp đang cố gắng đo lường các thay đổi với giả định rằng đồng hồ của bạn có tốc độ cố định nhanh hơn hoặc chậm hơn so với phần còn lại của thế giới, việc tăng tốc và giảm tốc độ này sẽ mang lại sự phù hợp với ntp và cuối cùng nó sẽ bỏ cuộc, với kết quả rằng ntp -npcác máy chủ show thời điểm đó NTP đã coi là không phù hợp.

Đặt cược tốt nhất của bạn nếu đây là trường hợp có lẽ là một kẻ vũ phu rdate -s $serverthường xuyên (như cứ sau sáu giờ) để kéo đồng hồ xung quanh mũi của nó để nó không bị trôi quá mức không đồng bộ. Nhưng độ chính xác hạt mịn có lẽ là ngoài tầm với.


Nhà cung cấp dịch vụ lưu trữ của tôi (rackspace cloud) đã nói với tôi rằng NTP hoạt động tốt trong môi trường của họ.
John Bachir

Xem câu trả lời được gửi / chấp nhận của tôi để biết nhà cung cấp VPS của tôi nói gì về đồng hồ và truy cập để đặt thời gian.
John Bachir

tự động có thể đặt đồng hồ ngược, điều này có thể gây ra hậu quả không mong muốn.
rackandboneman

4

Những điều tôi đã tìm thấy trong quá khứ, khi tôi sử dụng ntpd thay vì openntpd:

  1. Bạn cần cho phép truy cập vào localhost để ntpd bắt đầu đúng cách và thực sự làm công cụ

    restrict 127.0.0.1
    restrict ::1
    
  2. Mặc dù bạn có thể sử dụng tên máy chủ cho các quy tắc máy chủ, nhưng việc mở các lỗ hổng để nói chuyện với các máy chủ đó có nghĩa là sử dụng restrictyêu cầu địa chỉ IP, vì vậy cuối cùng tôi phải sử dụng IP cho mọi thứ.

  3. Bạn không đề cập đến việc sử dụng restrictđể mở truy cập sao lưu vào máy chủ của bạn. Đó là một vấn đề. Hãy thử các khối như sau:

    # ntp.xs4all.nl
    server          194.109.22.18
    restrict        194.109.22.18
    
  4. Bạn cần nhiều đồng nghiệp hoặc máy chủ cho ntpd, vì nó cố gắng sử dụng bỏ phiếu theo quy tắc đa số để đối phó với một diễn viên xấu. Vì vậy, tối thiểu là 4, để vẫn có thể có đa số khi bạn mất một, tốt nhất là 5.

  5. Để khóa truy cập mặc định, tôi có thể sử dụng:

    restrict default notrust nomodify
    

    để vẫn có thể truy vấn, nhưng cuối cùng tôi đã sử dụng restrict default ignorenhư bạn làm khi ntpd 4.2 thay đổi ý nghĩa của notrust. thở dài

  6. Nếu bạn không cung cấp dịch vụ thời gian cho người khác, thì có lẽ bạn không cần toàn bộ sức mạnh của ntpd thông thường và openntpdthay vào đó bạn nên xem xét . Được viết bởi nhóm OpenBSD, đó là một triển khai tối thiểu hơn nhiều, sử dụng phân tách đặc quyền và tệp cấu hình đơn giản hơn nhiều. Nó được cho là sẽ không cung cấp thời gian chính xác cao mà ntpd sẽ làm, nhưng nó đủ dễ dàng cho một máy chủ hoặc máy trạm thông thường.


Đây là thông tin tuyệt vời. Tôi đang kiểm tra openntpd. Câu hỏi: bạn có đồng tình hay không đồng ý với những người khác cho rằng việc đặt đồng hồ trên vhost là không thể?
John Bachir

Và có lẽ bạn có thể trả lời câu hỏi này: serverfault.com/questions/223511/ Khăn
John Bachir

Tôi không hiểu bạn đang nói gì với các restrictquy tắc khác nhau của bạn . Các quy tắc đó có ảnh hưởng đến máy chủ nào tôi cũng có thể truy vấn không? Tôi nghĩ rằng nó chỉ ảnh hưởng đến các nút có thể yêu cầu tôi thời gian.
John Bachir

1
Đây là một ý tưởng: bạn muốn thay đổi câu trả lời của bạn thành một tệp ntp.conf tối thiểu hoàn chỉnh với các bình luận? :-)
John Bachir

Việc đặt đồng hồ trên vhost là không nên, trừ khi bạn được đảm bảo luôn được lên lịch với ít nhất một CPU, vì nếu không thì thời gian mà vhost cảm nhận không khớp với thời gian của thế giới bên ngoài. Các dom0 nên được duy trì thời gian. Câu trả lời của câu hỏi khác là tốt. NTP là UDP, vì vậy bạn cần cho phép các gói từ các máy chủ mà bạn truy vấn theo thời gian. Ntpd của tôi đã cũ khi tôi chuyển sang OpenNTPD vài năm trước.
Phil P

3
  • Nếu ntpd không thể kết nối với máy chủ từ xa, bạn sẽ không thấy phần bù cho máy chủ đó.
  • Nếu ntpq bị chặn bởi ntpd, bạn sẽ thấy một thông báo lỗi rõ ràng từ ntpq.
  • Nếu một số dịch vụ khác cũng đặt thời gian (như các công cụ vmware), bạn sẽ thấy phần bù nhảy cho máy chủ (chạy ntpq -p cứ sau 70 giây).

Đầu ra reach 7trong ntpq chỉ ra rằng bạn để ntpd chỉ chạy trong khoảng 4 phút. 7 là 111 nhị phân, có nghĩa là máy chủ đã đạt được 3 lần. ntp tiếp cận sau mỗi 64 giây ( pollgiá trị) và đã đợi 30 giây ( whengiá trị) kể từ lần liên hệ cuối cùng.

Chỉ offset -0.136định, hệ thống đã được đồng bộ hóa. Chỉ ntpd chưa đánh dấu máy chủ là nguồn. Chỉ cần cho nó thêm thời gian và một ngôi sao nhỏ sẽ xuất hiện.

Vì vậy, thực sự ntpd của bạn đã được đồng bộ hóa. Nhưng ntpd thường không đồng bộ hóa trong một bước nhảy lớn (như ntpdate), nhưng cố gắng điều chỉnh thời gian chậm và đảm bảo qua nhiều chu kỳ, thời gian ổn định.

PS: Tôi biết, câu hỏi rất cũ. Nhưng vấn đề là vô tận. Và tất cả các câu trả lời khác chỉ là IMHO sai lệch. ntpd thậm chí còn được VMWare khuyên dùng để giữ thời gian đồng bộ.


Câu trả lời tuyệt vời đầu tiên, Robert. Chào mừng đến với trang web.
kubanchot

1

Tôi thấy hệ thống của mình tắt và bối rối tại sao đồng hồ CTNH không đồng bộ với đồng hồ hệ thống khi tắt máy sạch. Có vẻ như có một cài đặt NTP trong sysconfig cần chỉnh sửa để thực hiện điều đó.

Trong /etc/sysconfig/ntpd:

# Set to 'yes' to sync hw clock after successful ntpdate
SYNC_HWCLOCK=no

Tôi đặt nó thành yes. Tất nhiên trước tiên hãy xác minh rằng bạn có một máy chủ NTP vững chắc và đồng hồ hệ thống của bạn là đáng tin cậy.

Tôi biết đó là nó - độ lệch của tôi là 47 giây và đồng hồ CTNH của tôi cũng tắt 47 giây. Chơi lô tô! Manh mối đầu tiên của tôi là thất bại Kerberos được nhìn thấy trong nhật ký. Kerberos và nhiều NAS sẽ không hoạt động nếu độ lệch của đồng hồ quá lớn.

Chúc một ngày tốt lành!


1
Snap .. đó là liên quan đến RHEL / Centos. Có lẽ không phải Ubuntu.
Wayne Sweatt


0

Hải ..

Hãy xem tài liệu tham khảo này để xem nó có thể hỗ trợ khắc phục sự cố của bạn không:

http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_: Ch24 : _The_NTP_Server

bạn có thể muốn đăng nội dung của tệp ntpd.conf của mình, đầu ra của các lệnh gỡ lỗi như ntpq -p

Và kiểm tra ngày / giờ của bạn?

Và cũng xác minh điều này, chạy ntpdate và khởi động ntpd, thời gian có đồng bộ không?

cùng với những lời chúc tốt đẹp nhấ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.