Przewodnik konfiguracji NTP w Ubuntu: Utrzymaj swoje serwery w synchronizacji

目次

1. Wprowadzenie: Dlaczego synchronizacja czasu ma znaczenie

Problemy spowodowane dryftem zegara systemowego

W systemach Linux, w tym Ubuntu, utrzymanie dokładnego czasu jest kluczowe. Choć może się to wydawać drobną kwestią nieprecyzyjnych zegarów, dryft czasu może prowadzić do poważnych problemów w działaniu serwerów i środowiskach uruchamiania aplikacji.

Na przykład mogą wystąpić następujące problemy:

  • Niespójne logi – Jeśli znaczniki czasu w logach systemowych i aplikacyjnych są niezsynchronizowane, trudno jest zidentyfikować przyczynę problemów podczas rozwiązywania usterek.
  • Nieprawidłowo działające zadania cron – Zaplanowane zadania (takie jak kopie zapasowe i przetwarzanie wsadowe) mogą nie uruchamiać się w odpowiednich momentach, a nawet wykonywać się w nieoczekiwanych godzinach.
  • Błędy certyfikatów SSL i uwierzytelniania – Dokładna informacja o czasie jest niezbędna do komunikacji HTTPS i uwierzytelniania SSH. Jeśli czas systemowy jest nieprawidłowy, certyfikaty mogą zostać uznane za „wygasłe”, co prowadzi do błędów połączenia.

Problemy te mogą mieć szczególnie poważny wpływ przy obsłudze wielu serwerów synchronizowanych w sieci.

Rola i znaczenie NTP

Aby zapobiec takim problemom, używa się NTP (Network Time Protocol). NTP komunikuje się z serwerami czasu w Internecie lub w sieci lokalnej, automatycznie korygując czas systemowy.

Ubuntu oferuje kilka narzędzi związanych z NTP, w tym ntpd, chrony i systemd-timesyncd. W tym artykule skupimy się na ntpd (demonie Network Time Protocol), przedstawiając szczegółowe wyjaśnienie jego instalacji i użytkowania w Ubuntu.

Szczególnie w przypadku serwerów przeznaczonych do długotrwałej pracy oraz systemów wymagających spójności logów, stabilność ntpd jest wysoko ceniona.

W następnym rozdziale przedstawimy, czym jest ntpd, jakie pełni podstawowe role oraz jakie opcje są dostępne w Ubuntu.

2. Co to jest ntpd? Jego rola i opcje w Ubuntu

Przegląd i funkcje ntpd

ntpd (Network Time Protocol Daemon) to program‑daemon, który wykorzystuje NTP do utrzymywania dokładnego czasu systemowego. Okresowo komunikuje się z serwerami NTP w Internecie lub w sieci lokalnej i automatycznie dostosowuje zegar systemowy.

Kluczową cechą ntpd jest jego „płynna synchronizacja”, czyli stopniowe korygowanie różnic czasowych. Dzięki temu unika się nagłych zmian czasu, które mogłyby negatywnie wpłynąć na działające systemy i aplikacje.

Ponadto ntpd obsługuje zaawansowane funkcje NTP, takie jak symetryczny tryb aktywny oraz uwierzytelnianie, co czyni go solidną usługą synchronizacji czasu odpowiednią dla środowisk korporacyjnych.

Narzędzia synchronizacji czasu dostępne w Ubuntu

Ubuntu oferuje następujące opcje synchronizacji czasu:

  • ntpd (pakiet ntp) – Powszechnie używany w środowiskach wymagających długotrwałej pracy i szczegółowej konfiguracji. Zapewnia dużą elastyczność i stabilność, umożliwiając precyzyjną synchronizację czasu poprzez połączenie z publicznymi serwerami NTP.
  • chrony – Alternatywa dla ntpd, zyskująca popularność dzięki wysokiej dokładności i szybkiemu tempo synchronizacji po uruchomieniu. Dobrze sprawdza się w środowiskach o niskich zasobach oraz maszynach wirtualnych, a wiele nowoczesnych dystrybucji przyjmuje chrony jako domyślne rozwiązanie.
  • systemd-timesyncd – Lekką usługę synchronizacji czasu włączoną domyślnie w Ubuntu 20.04 i nowszych. Jest prosta i łatwa w użyciu, ale jej funkcje są ograniczone, co czyni ją nieodpowiednią do zaawansowanych konfiguracji lub pracy jako lokalny serwer NTP.

Powody wyboru ntpd i jego zalety

Głównym powodem przyjęcia ntpd w Ubuntu jest jego niezawodność i stabilność. Jest to mocny wybór, szczególnie w następujących przypadkach:

  • Gdy wymagana jest wysoka precyzja czasu dla długo działających serwerów.
  • Gdy chcesz uruchomić serwer NTP w sieci lokalnej.
  • Dla aplikacji korporacyjnych wymagających uwierzytelniania i zaawansowanej kontroli.

Dodatkowo ntpd ma przewagę w postaci kompatybilności z wieloma istniejącymi systemami oraz sprawdzonego dorobku, co zmniejsza obawy podczas wdrażania.

3. Instalacja i wstępna konfiguracja ntpd w Ubuntu

Procedura instalacji ntpd

Aby używać ntpd na Ubuntu, najpierw musisz zainstalować pakiet ntp. Możesz łatwo zainstalować go za pomocą następujących kroków:

sudo apt update
sudo apt install ntp

To polecenie automatycznie zainstaluje ntpd i jego powiązane pliki. Zwróć uwagę, że w niektórych wersjach Ubuntu chrony lub systemd-timesyncd mogą być włączone domyślnie. W takich przypadkach zaleca się wyłączenie lub usunięcie ich wcześniej.

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

Włączanie usługi i weryfikacja uruchomienia

Po zakończeniu instalacji włącz usługę ntpd i sprawdź jej status uruchomienia.

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

Jeśli polecenie status pokazuje „active (running)”, oznacza to, że ntpd uruchomił się pomyślnie.

Sprawdzanie i edycja początkowego pliku konfiguracyjnego

Konfiguracja ntpd jest zdefiniowana w pliku /etc/ntp.conf. Domyślna konfiguracja po instalacji zawiera kilka domyślnych serwerów NTP (zazwyczaj z serii pool.ntp.org).

Najpierw sprawdźmy zawartość pliku konfiguracyjnego.

cat /etc/ntp.conf

Jeśli chcesz określić serwery w Stanach Zjednoczonych, możesz edytować go w następujący sposób:

server us.pool.ntp.org iburst

Opcja iburst jest zalecana, ponieważ poprawia prędkość synchronizacji podczas początkowego połączenia.

Po wprowadzeniu zmian w konfiguracji uruchom ponownie usługę ntpd, aby je zastosować.

sudo systemctl restart ntp

Weryfikacja automatycznej synchronizacji czasu systemowego

Po uruchomieniu ntpd automatycznie synchronizuje czas z serwerem. Aby sprawdzić, czy działa poprawnie, przydatne jest następujące polecenie:

ntpq -p

To polecenie pozwala wyświetlić listę podłączonych serwerów NTP oraz szczegółowe informacje, takie jak opóźnienie i offset.

4. Konfigurowanie i dostosowywanie serwerów NTP

Wybór zalecanych serwerów NTP

Ważnym aspektem konfiguracji ntpd jest wybór serwerów NTP, z którymi synchronizować. Podczas łączenia przez internet określenie niezawodnych serwerów NTP w Stanach Zjednoczonych może zapewnić bardziej stabilną synchronizację czasu.

Typowe publiczne serwery NTP w USA to:

  • us.pool.ntp.org (Pula serwerów NTP w Stanach Zjednoczonych)
  • Możesz również znaleźć regionalne pule, takie jak north-america.pool.ntp.org lub pule dla konkretnych stanów, jeśli jest to potrzebne.

Te serwery są obsługiwane na podstawie precyzyjnych zegarów atomowych i mogą być używane do celów osobistych bez specjalnego zezwolenia.

Możesz skonfigurować synchronizację z tymi serwerami, wpisując następujące w /etc/ntp.conf:

server us.pool.ntp.org iburst
server north-america.pool.ntp.org iburst

Szczegółowe elementy konfiguracji w ntp.conf

Oprócz określania serwerów NTP plik /etc/ntp.conf umożliwia precyzyjną kontrolę zachowania ntpd. Oto kilka typowych elementów konfiguracji:

  • dyrektywa restrict Ustawia ograniczenia i uprawnienia dla połączeń od klientów. Z powodów bezpieczeństwa niepotrzebne połączenia powinny być ograniczone. Przykład: Zezwalanie na połączenia z lokalnej sieci
      restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
    
  • driftfile Określa plik, który rejestruje dryft zegara systemowego (subtelne odchylenia). Zazwyczaj domyślne ustawienie jest wystarczające.
      driftfile /var/lib/ntp/ntp.drift
    

Budowanie serwera NTP w sieci lokalnej

Możesz również używać ntpd na Ubuntu do działania jako serwer NTP, który dystrybuuje czas do innych urządzeń w Twojej sieci lokalnej. Ta konfiguracja jest skuteczna w środowiskach bez dostępu do internetu lub gdzie wymagane jest spójne zarządzanie czasem na wielu urządzeniach.

Oto przykład procedury konfiguracji:

  1. Dodaj regułę restrict do pliku /etc/ntp.conf, aby zezwolić na lokalny dostęp: restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
  2. Na komputerach klienckich skonfiguruj je tak, aby odwoływały się do tego lokalnego serwera NTP: server 192.168.1.10 iburst # Lokalny adres IP serwera NTP
  3. Otwórz port serwera NTP (zezwól na port UDP 123 w zaporze ogniowej): sudo ufw allow 123/udp

Jeśli komunikacja jest zablokowana, synchronizacja czasu nie powiedzie się, a polecenie ntpq nie pokaże statusu połączenia z serwerem.

5. Weryfikacja działania ntpd i rozwiązywanie problemów

Jak sprawdzić status usługi

Aby zweryfikować, czy ntpd działa poprawnie, użyj następującego polecenia:

sudo systemctl status ntp

Jeśli wyświetla active (running), ntpd działa normalnie. Jeśli pokazuje inactive lub failed, może występować błąd konfiguracji lub problem z zależnościami uniemożliwiający uruchomienie.

Aby sprawdzić logi szczegółowo, poniższe polecenie jest pomocne:

journalctl -u ntp

Pozwala to na przeglądanie historii uruchomienia i komunikatów błędów usługi ntpd w kolejności chronologicznej.

Polecenie do sprawdzenia statusu synchronizacji (ntpq -p)

Polecenie ntpq -p jest najczęściej używane do sprawdzenia, czy ntpd prawidłowo synchronizuje się z serwerami NTP.

ntpq -p

Przykładowe wyjście:

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*time.cloudflare. 172.64.250.202  2 u   57   64  377    0.876   -0.012   0.009
+ntp.ubuntu.com   170.247.169.130  2 u   49   64  377    1.234   +0.056   0.015
 stratum2.ntp.br 162.229.5.20    2 u   51   64  377  105.234   -0.123   0.021
 LOCAL(0)        .LOCL.         10 l   --   64    0    0.000    0.000   0.000

Znaczenia każdej kolumny są następujące:

  • remote : Nazwa połączonego serwera NTP
  • st : Stratum serwera (poziom hierarchii), gdzie 1 jest najbardziej dokładny (np. zegar atomowy)
  • reach : 8-bitowy rejestr przesuwny wskazujący historię sukcesów ostatnich ośmiu prób połączenia
  • delay : Opóźnienie sieciowe w obie strony w milisekundach (ms)
  • offset : Różnica czasu między twoim systemem a serwerem w milisekundach (ms)
  • jitter : Statystyczna wariancja offsetu na kilku próbkach

Serwer z gwiazdką (*) na początku jest aktualnie wybranym źródłem synchronizacji.

Częste błędy i ich rozwiązania

Oto kilka częstych błędów, które możesz napotkać podczas implementacji ntpd, wraz z odpowiednimi rozwiązaniami:

1. Nic nie jest wyświetlane w ntpq -p / reach wynosi 0

  • Przyczyna : Port UDP 123 może być zablokowany przez zaporę ogniową lub router.
  • Rozwiązanie : Sprawdź ustawienia zapory ogniowej zarówno na serwerze, jak i na kliencie, aby upewnić się, że ruch NTP jest dozwolony.
    sudo ufw allow 123/udp
    

2. Wyświetlany jest komunikat System clock not synchronized

  • Przyczyna : ntpd może nie być uruchomiony lub może kolidować z inną usługą synchronizacji czasu (np. systemd-timesyncd).
  • Rozwiązanie : Wyłącz niepotrzebne usługi synchronizacji czasu i uruchom ponownie ntpd.
    sudo systemctl disable systemd-timesyncd
    sudo systemctl restart ntp
    

3. Nie udało się rozwiązać nazw serwerów NTP

  • Przyczyna : Problemy z konfiguracją DNS lub problemy sieciowe.
  • Rozwiązanie : Sprawdź, czy rozwiązywanie nazw działa (np. używając ping us.pool.ntp.org) i popraw ustawienia serwera DNS, jeśli to konieczne.

4. Czas jest znacznie przesunięty, ale nie synchronizuje się

  • Przyczyna : ntpd nie dostosowuje automatycznie czasu, jeśli różnica jest zbyt duża (z powodów bezpieczeństwa).
  • Rozwiązanie : Ustaw ręcznie początkowy czas, a następnie uruchom ponownie ntpd.
    sudo ntpd -gq  # Perform an immediate synchronization once
    sudo systemctl restart ntp
    

Do ciągłego monitorowania

W środowisku produkcyjnym warto skonfigurować skrypt, który okresowo loguje wyjście polecenia ntpq -p i tworzy alerty dla anomalii. Zauważenie nagłych przerw w logach lub konsekwentnie niskiej wartości reach może pomóc w wczesnym wykrywaniu problemów.

6. Porównanie ntpd z innymi narzędziami synchronizacji czasu

Główne narzędzia synchronizacji czasu używane w Ubuntu

W środowiskach Ubuntu dostępnych jest kilka narzędzi do synchronizacji czasu. Każde z nich ma swoje cechy charakterystyczne, a wybór zależy od zamierzonego użycia i wymagań systemu. Trzy główne narzędzia to:

  • ntpd (pakiet ntp)
  • chrony
  • systemd-timesyncd

Zrozumienie różnic między nimi pomoże Ci wybrać optymalną metodę synchronizacji dla Twojego środowiska.

Cechy ntpd

  • Zalety
  • Długoletnie i stabilne z bardzo wysoką niezawodnością.
  • Bogate w funkcje i umożliwia szczegółową konfigurację (konfiguracja lokalnego serwera NTP, uwierzytelnianie, tryby symetryczne itp.).
  • Wysoka kompatybilność z publicznymi serwerami NTP, z obfitymi informacjami do rozwiązywania problemów.
  • Wady
  • Początkowa synchronizacja po uruchomieniu może czasem trwać dłużej.
  • Adaptacyjność do nowoczesnych środowisk sieciowych (wirtualizacja, zmienne sieci) jest nieco niższa.

Cechy chrony

  • Zalety
  • Szybka początkowa synchronizacja, szybko korygująca różnice czasu po uruchomieniu.
  • Wysoka dokładność nawet w maszynach wirtualnych i zmiennych środowiskach sieciowych (laptopy, użycie VPN).
  • Autonomiczne możliwości uczenia się (poprawia dokładność na podstawie otaczających warunków), często zapewniając lepszą dokładność niż ntpd.
  • Wady
  • Konfiguracja do działania jako lokalny serwer NTP jest nieco bardziej złożona.
  • Dokumentacja i przykłady są mniej liczne w porównaniu do ntpd.

Cechy systemd-timesyncd

  • Zalety
  • Włączone domyślnie w Ubuntu 20.04 i nowszych, bardzo łatwe w instalacji i zarządzaniu.
  • Minimalne funkcje synchronizacji z bardzo niskim zużyciem zasobów.
  • Dobrze zintegrowane z systemd, co ułatwia użycie w standardowych konfiguracjach Ubuntu.
  • Wady
  • Ograniczona funkcjonalność, nie nadaje się do zaawansowanych ręcznych konfiguracji lub jako lokalny serwer NTP.
  • Funkcje dokładności i logowania są podstawowe, nie nadają się do systemów na dużą skalę.

Tabela porównawcza narzędzi (podsumowanie)

Featurentpdchronysystemd-timesyncd
AccuracyHighVery HighNormal
Initial Sync SpeedCan be slowVery FastNormal
Local NTP Server○ (Slightly complex)× (Not possible)
Configuration FlexibilityHighMediumLow
Adaptability to Virtual Environments
Proven Track Record & Information
Recommended Use CasesServers, organizational uniformityVirtual environments, laptopsSingle PCs, beginners

Zalecenia według scenariusza użycia

  • Użycie na serwerze (zwłaszcza w środowiskach zawsze włączonych) → Zalecane ntpd lub chrony. Stabilność i dokładność są ważne.
  • Środowiska chmurowe, maszyny wirtualne, laptopychrony jest najbardziej elastyczne i dokładne.
  • Prosta synchronizacja czasu dla pojedynczego komputerasystemd-timesyncd jest wystarczające.

7. Najczęściej zadawane pytania (FAQ)

P1. Czy ntpd jest zainstalowany domyślnie w Ubuntu 22.04?

O1.
Nie, ntpd nie jest zainstalowany domyślnie w Ubuntu 22.04. systemd-timesyncd jest włączone domyślnie do podstawowej synchronizacji czasu. Aby użyć ntpd, musisz jawnie zainstalować pakiet ntp.

sudo apt install ntp

Po instalacji zaleca się również wyłączenie systemd-timesyncd, aby uniknąć konfliktów.

P2. ntpq -p nie wyświetla się poprawnie. Co powinienem zrobić?

O2.
Kilka powodów może powodować ten problem:

  • Usługa nie działa : Sprawdź za pomocą sudo systemctl status ntp i uruchom, jeśli to konieczne.
  • Awaria komunikacji z serwerem NTP : Sprawdź, czy zapora sieciowa nie blokuje portu UDP 123.
  • Błędy w pliku konfiguracyjnym : Sprawdź, czy w /etc/ntp.conf nie ma literówek.

Najpierw sprawdź podstawowe działanie za pomocą następującego polecenia:

ntpq -p

Jeśli wyjście jest puste lub wartość reach wynosi 0, może być problem z komunikacją z zewnętrznymi serwerami.

P3. Czy powinienem wybrać ntpd czy chrony?

O3.
Najlepsze narzędzie zależy od Twojego środowiska użycia:

  • Długotrwale działające serwery fizyczne lub budowanie lokalnego serwera NTPntpd jest zalecany ze względu na stabilność.
  • Środowiska wirtualne, laptopy lub zmienne środowiska sieciowe (Wi‑Fi itp.)chrony oferuje wyższą dokładność i szybkość.
  • Wystarczy prosta regulacja czasusystemd-timesyncd radzi sobie z tym łatwo.

Q4. Co robi polecenie ntpd -gq?

A4.
ntpd -gq to polecenie, które wykonuje jednorazową synchronizację z serwerem NTP i od razu się kończy.

  • -g : Zezwala na duże skoki czasu w celu skorygowania dużych rozbieżności.
  • -q : Kończy działanie po jednorazowej synchronizacji (nie działa jako demon).

To polecenie można użyć do początkowego ustawienia prawidłowego czasu, jeśli zegar systemowy jest znacznie odchylony i nie jest korygowany przez regularną usługę ntpd.

Q5. Czy istnieje korzyść z podawania wielu serwerów NTP?

A5.
Tak, podanie wielu serwerów NTP zapewnia redundancję i zwiększa niezawodność. Jeśli jeden serwer przestanie działać lub stanie się nieosiągalny, system nadal może uzyskać informacje o czasie z pozostałych serwerów, zapewniając stabilną synchronizację.

Przykładowa konfiguracja (/etc/ntp.conf):

server us.pool.ntp.org iburst
server time.google.com iburst
server ntp.cloudflare.com iburst

8. Wnioski: Poprawa niezawodności systemu dzięki stabilnej synchronizacji czasu

Potwierdzenie zalet ntpd

W systemach Ubuntu dokładna synchronizacja czasu nie jest jedynie kwestią wygody, lecz kluczowym elementem bezpośrednio wpływającym na bezpieczeństwo, rozwiązywanie problemów, zarządzanie logami oraz dokładność procesów automatycznych.

W tym artykule szczegółowo wyjaśniono podstawy NTP (Network Time Protocol), mechanizm synchronizacji czasu przy użyciu ntpd, metody instalacji, dostosowywanie konfiguracji, weryfikację działania oraz porównania z innymi narzędziami.

Rada dla Czytelników

Wybór narzędzia do synchronizacji czasu w Ubuntu zależy od przeznaczenia systemu, konfiguracji i wymagań dostępności.
Jednak zasada, że „stabilna praca bez dokładnego czasu jest niemożliwa”, obowiązuje we wszystkich środowiskach.

  • Dla serwerów i gdy zarządzanie logami jest istotne → Poprawnie skonfiguruj ntpd lub chrony.
  • Dla prostego użytku na pojedynczym komputerzesystemd-timesyncd oferuje łatwą implementację.

Dokładność synchronizacji czasu może nie być zauważalna w codziennej pracy, ale niewątpliwie będzie cennym punktem odniesienia podczas rozwiązywania problemów.

Zachęcamy do wykorzystania tego artykułu jako przewodnika przy ustawianiu optymalnego mechanizmu synchronizacji czasu w środowisku Ubuntu.

年収訴求