- 1 1. Wprowadzenie: Dlaczego synchronizacja czasu ma znaczenie
- 2 2. Co to jest ntpd? Jego rola i opcje w Ubuntu
- 3 3. Instalacja i wstępna konfiguracja ntpd w Ubuntu
- 4 4. Konfigurowanie i dostosowywanie serwerów NTP
- 5 5. Weryfikacja działania ntpd i rozwiązywanie problemów
- 6 6. Porównanie ntpd z innymi narzędziami synchronizacji czasu
- 7 7. Najczęściej zadawane pytania (FAQ)
- 8 8. Wnioski: Poprawa niezawodności systemu dzięki stabilnej synchronizacji czasu
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.orglub 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:
- Dodaj regułę
restrictdo pliku/etc/ntp.conf, aby zezwolić na lokalny dostęp:restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap - 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 - 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 NTPst: 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łączeniadelay: 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)
| Feature | ntpd | chrony | systemd-timesyncd |
|---|---|---|---|
| Accuracy | High | Very High | Normal |
| Initial Sync Speed | Can be slow | Very Fast | Normal |
| Local NTP Server | ◎ | ○ (Slightly complex) | × (Not possible) |
| Configuration Flexibility | High | Medium | Low |
| Adaptability to Virtual Environments | △ | ◎ | ○ |
| Proven Track Record & Information | ◎ | ○ | △ |
| Recommended Use Cases | Servers, organizational uniformity | Virtual environments, laptops | Single 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, laptopy → chrony jest najbardziej elastyczne i dokładne.
- Prosta synchronizacja czasu dla pojedynczego komputera → systemd-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 ntpi 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.confnie 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 NTP →
ntpdjest zalecany ze względu na stabilność. - Środowiska wirtualne, laptopy lub zmienne środowiska sieciowe (Wi‑Fi itp.) →
chronyoferuje wyższą dokładność i szybkość. - Wystarczy prosta regulacja czasu →
systemd-timesyncdradzi 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
ntpdlubchrony. - Dla prostego użytku na pojedynczym komputerze →
systemd-timesyncdoferuje ł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.



