Jak skonfigurować lokalny serwer NTP?

12

Zainstalowałem serwer NTP na Ubuntu Server 10.04, używając:

sudo apt-get install ntp

Demon NTP wydaje się działać i nasłuchuje na porcie 123.

Jednak nie byłem w stanie uzyskać czasu z innej maszyny:

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

Czy są jakieś niezbędne konfiguracje?

    
zadawane Khaled 23.11.2010, 17:50
źródło

3 odpowiedzi

9

Oto dobre porady na forach Ubuntu: link

Rażąca kopia-makaron:

HOWTO: skonfiguruj serwer NTP

W tym samouczku opisano, jak skonfigurować urządzenie jako lokalny serwer Network Time Protocol (NTP) i / lub jak używać demona NTP, aby regularnie utrzymywać dokładny czas systemowy.

Co to jest NTP?

Network Time Protocol (NTP) to protokół zaprojektowany do dokładnej synchronizacji lokalnych zegarów czasu z sieciowymi serwerami czasu. Sieć serwerów czasu NTP jest skonfigurowana w sposób hierarchiczny, tak, że każdy użytkownik może wejść do systemu jako serwer na pewnym poziomie (więcej informacji na stronie Wikipedia).

Hierarchia NTP jest podzielona na różne poziomy, zwane warstwami zegara. Najdokładniejszy poziom, Stratum 0, jest zarezerwowany dla zegarów atomowych itp. Następny poziom, Stratum 1, jest ogólnie używany przez połączone w sieć maszyny lokalnie podłączone do zegarów Stratum 0. Stratum 2 ... 15 to maszyny NTP, które z kolei są podłączone do zegarów niższego poziomu i siebie nawzajem.

W tym przewodniku opisano dokładne synchronizowanie z maszynami Stratum 1 i 2 i utrzymywanie dokładności zegara systemowego przez cały dzień. Sekcje zawierają również informacje o tym, jak zezwolić urządzeniu na działanie jako serwer warstwy stratnej 2/3 dla innych komputerów w sieci lokalnej.

Czy muszę utworzyć serwer NTP?

Nie ... absolutnie nie! Jeśli jesteś zadowolony z zegarów w sieci, które różnią się od standardowego czasu (i siebie nawzajem), nie musisz konfigurować serwera NTP. Ustawiłem go na moim laptopie, aby zsynchronizować wiele komputerów w sieci lokalnej w & lt; 1 ms na eksperyment z bioinżynierią. Poza tym istnieją różne inne zalety, które opisano poniżej.

Motywacja:

Regularnie, niezmodyfikowane pola Ubuntu używają ntpdate ( /usr/sbin/ntpdate ) do okresowej synchronizacji zegara z zewnętrznym serwerem czasu. To podejście synchronizuje zegar z rozdzielczością kursu (zazwyczaj raz dziennie).

Zegary komputerowe są niedoskonałe i będą dryfować z (poprawnego) serwera czasu w ciągu dnia. Ponadto, współczynniki dryftu w zegarach różnych komputerów różnią się między sobą, tak że do końca dnia mogą występować znaczące różnice między różnymi lokalnie podłączonymi do sieci maszynami, które mogą zakłócać pewne operacje (na przykład, kiedykolwiek plik Makefile narzeka podczas przenoszenia kodu źródłowego między różne maszyny?).

Możliwe jest uruchomienie demona NTP lokalnie na komputerze w twojej sieci. Ma to wiele zalet: po pierwsze, demon NTP stopniowo "uczy się" tempa dryfowania lokalnej maszyny i może go poprawiać w ciągu dnia. Synchronizacja z serwerami wyższego poziomu odbywa się wiele razy dziennie, a wiele różnych serwerów czasu może być używanych jednocześnie, aby synchronizacja była bardziej dokładna. W ten sposób demona NTP działa jako dokładny klient czasu, utrzymując swój zegar systemowy tak blisko czasu standardowego, jak to możliwe.

Oprócz zachowania dokładnego zegara systemowego, demon NTP zezwala na działanie urządzenia w twojej sieci (jeśli chcesz), aby działało jako serwer czasu NTP. Dzięki temu inne urządzenia w sieci lokalnej będą synchronizowane z serwerem czasu LAN w bardzo szybki i dokładny sposób, ponieważ zminimalizowane jest opóźnienie sieci. W ten sposób różnice w taktowaniu między maszynami w Twojej sieci są utrzymywane na minimalnym poziomie. Mac, a nawet skrzynki Windows mogą również synchronizować się z serwerem NTP, jeśli je skonfigurujesz.

Istnieją inne, mniej osobiste motywacje do skonfigurowania komputera jako serwera NTP. Po pierwsze, może to zmniejszyć obciążenie serwerów NTP wyższego poziomu, ponieważ inne urządzenia w sieci LAN mogą synchronizować się z lokalnie ustanowionym serwerem czasu. Ponadto, ntpdate zostało wycofane na korzyść użycia flagi -q dla ntpd (która naśladuje jej funkcjonalność). Zatem, nawet jeśli nie chcesz uruchamiać ntpd w tle, ntpdate zostanie ostatecznie zastąpiony przez ntpd, więc możesz go teraz zaznajomić

Jak zachować dokładny zegar systemowy z ntpd

  1. Zainstaluj demona NTP

Najpierw zainstaluj demona NTP (ntpd):

sudo aptitude install ntpd

Jak wcześniej wspomniano, ntpd może działać zarówno jako klient (synchronizując czas systemowy), jak i jako serwer (podając dokładny czas dla innych maszyn).

Opcjonalnie możesz również usunąć poprzedni (przestarzały) program do synchronizacji czasu, ntpdate. Być może mądrzejszy będzie to zrobić po tym, jak ntpd będzie pracował

sudo aptitude remove ntpdate
  1. Prawidłowo skonfiguruj demona

Plik konfiguracyjny dla ntpd znajduje się w /etc/ntp.conf . Domyślny plik Ubuntu prawdopodobnie wymaga pewnych modyfikacji w celu uzyskania optymalnej wydajności.

Pierwsza sekcja, którą chcesz zmodyfikować, to lista serwerów do synchronizacji. Domyślna sekcja prawdopodobnie wygląda następująco:

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

Aby uzyskać jak najdokładniejszy czas, lepiej jest komunikować się z wieloma różnymi serwerami NTP i utrzymywać je jak najbliżej swojej fizycznej lokalizacji. Istnieje wiele różnych list serwerów online, prawdopodobnie najlepsze znajdują się tutaj. Istnieje pewna debata na temat odpowiedniej liczby serwerów do wykorzystania. Jedna jest lepsza niż dwie, a trzy lub więcej prawdopodobnie jest dobrym pomysłem, o ile nie wyszedłeś za burtę. Oto przykład kilku serwerów czasu, których użyłem:

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

Po znalezieniu kilku dobrych serwerów dodaj je do listy, umieszczając 'iburst' po najbardziej obiecującym. Na przykład:

server nist1-dc.WiTime.net iburst

Spowoduje to bardzo szybką synchronizację ntpd z tym serwerem po uruchomieniu. W przeciwnym razie, ntpd będzie powoli dryfować w kierunku porozumienia z listą serwerów (jak to jest z jego charakterem), a synchronizacja może trwać od 15 do 20 minut na tyle, aby działać jako serwer czasu dla reszty sieci.

Dodaj też kilka dodatkowych wierszy na dole listy serwerów, aby domyślnie podać bieżący czas lokalny w przypadku tymczasowej utraty połączenia z Internetem:

server 127.127.1.0
fudge 127.127.1.0 stratum 10

Zapobiegnie to wszelkim złośliwościom, jeśli używasz ntpd na laptopie lub innej maszynie z nieregularnymi okresami odłączenia od Internetu.

Podsumowując, lista serwerów powinna wyglądać podobnie do poniższej (to moje, twoje serwery prawdopodobnie będą inne):

# 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. Upewnij się, że konfiguracja działa

Teraz, gdy masz już odpowiednią listę serwerów w pliku /etc/ntp.conf , czas uruchomić demona i zobaczyć, czy poprawnie synchronizujesz! Upewnij się, że masz aktywne połączenie z Internetem, a następnie uruchom:

sudo /etc/init.d/ntp restart

Następnie monitoruj swój log systemowy, aby zobaczyć, czy synchronizujesz się z serwerem czasu:

tail -f /var/log/syslog

Za około 10-15 sekund (lub do 15-20 minut, jeśli zapomnisz umieścić "iburst" po swoim ulubionym serwerze), powinieneś zobaczyć w logu systemowym coś takiego:

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

Jeśli ta wiadomość nigdy nie nadejdzie, nie jesteś jeszcze poprawnie zsynchronizowany z siecią serwera NTP. Sprawdź listę komunikatorów NTP, z którymi się komunikujesz, używając:

ntpq -c lpeer

Jeśli pola "opóźnienia", "przesunięcia" i "jittera" są niezerowe i nie zostały zsynchronizowane, prawdopodobnie oznacza to, że musisz chwilę poczekać. Sprawdź ponownie, czy wstawiłeś argument "iburst" do listy serwerów! Moi rówieśnicy, dla odniesienia, wyglądają mniej więcej tak:

     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. Udostępnij! (opcjonalnie)

Po uruchomieniu programu ntpd i synchronizacji z wybranymi serwerami czasu, możesz go skonfigurować, aby działał jako serwer czasu dla innych komputerów. Aby to zrobić, dodaj sekcję jak poniżej do /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. Synchronizuj! (opcjonalnie)

Po skonfigurowaniu serwera NTP za pomocą kroków 1-4 można zsynchronizować inne maszyny w sieci z serwerem na różne sposoby. Poniżej przedstawiam kilka z nich:

ntpd:

Jeśli ntpd jest zainstalowany na innym komputerze, możesz użyć pierwszego serwera na liście serwerów pliku ntp.conf lub zsynchronizować go z opcją -q w następujący sposób:

ntpd -q [IP address of your server]

ntpdate:

Jeśli nadal masz zainstalowane narzędzie ntpdate na innym komputerze, możesz użyć go do synchronizacji z serwerem w następujący sposób:

ntpdate [IP address of your server]

Uwaga: jeśli używasz ntpd na komputerze i z jakiegoś powodu nadal chcesz używać ntpdate do ustawienia czasu, musisz użyć opcji -u.

Windows:

Maszyny Windows używają uproszczonej wersji NTP nazywanej Simple Network Time Protocol (SNTP) i mogą synchronizować się z serwerami NTP. Aby zsynchronizować się z nowym serwerem, dwukrotnie kliknij godzinę i przejdź do zakładki "Czas internetowy". Umieść adres IP swojego serwera w polu "Serwer". Załączam zrzut ekranu systemu Windows XP synchronizującego się z serwerem czasu LAN, jeśli ktokolwiek będzie zainteresowany.

To wszystko! Cały proces nie jest trudny, ale może być mylący dla kogoś, kto nie ma wcześniej wiele do czynienia z siecią NTP. Mam nadzieję, że to pomoże! Daj mi znać, jeśli masz problemy z konfiguracją serwera.

Mike

Linki

Uważam, że poniższe linki są pomocne ... Ty też możesz!

link link link link link

    
odpowiedział RobotHumans 23.11.2010, 17:54
źródło
5

Jest wiele linków na ten temat i wydaje mi się, że komplikują one procedurę. W moim przypadku mam jeden komputer, który działa jako serwer proxy i zapora ogniowa, a wszystkie moje inne osoby łączą się z Internetem za jego pośrednictwem. Nie chciałem otwierać portów na zaporze. Dlatego serwer proxy musi być czasem (ntp) serwer , a inne komputery ( klienci ) pobierają z niego czas.

Musisz zainstalować ntp na wszystkich komputerach, a także powinieneś zainstalować ntpq na wszystkich komputerach.

Najpierw sprawdź, czy działa ntp. Domyślnie, ntpd (demon ntp) będzie działał od razu po zainstalowaniu, a domyślne ustawienia powinny działać. Jednak ntp nie działa natychmiast, więc poczekaj chwilę. Następnie polecenie:

ntpq -c lpeer

powinno dać ci dane wyjściowe, które wyglądają mniej więcej tak:

     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

lub:

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

Jeśli tak, jesteś połączony, a twój serwer czasu dostaje czas. Jeśli nie, użyj

ps -e | grep "ntp" 

, aby upewnić się, że uruchomiono ntp i spróbuj ponownie. Spróbuj także ponownie uruchomić ntp:

sudo /etc/init.d/ntp restart

Może minąć trochę czasu (przepraszam!), zanim połączenie zostanie nawiązane. Demon nie sonduje serwerów zbyt często. Kolumna "when" na powyższym wyjściu pokazuje czas w sekundach od odpytywania serwera.

Teraz musisz wysłać serwer czasu na inne maszyny.

Edytuj plik /etc/ntp.conf na serwerze. Musisz dodać linię do swojej sieci. W moim przypadku mam sieć 10.0.0.0. W pliku ntp.conf dodałem linię:

broadcast 10.255.255.255

Musisz dodać linię rozgłoszeniową dla każdego segmentu swojej sieci. Jeśli twoja sieć jest prosta jak moja, wystarczy jedna linia, jak wyżej. Teraz zrestartuj ntp za pomocą powyższego polecenia i sprawdź ponownie za pomocą ntpq, a powinieneś zobaczyć:

     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, nadaje.

Teraz musisz sprawić, by wszystkie komputery klienckie otrzymały czas z twojego serwera nadawczego. Na każdym edytuj plik:

/etc/ntp.conf

i zobaczysz kilka linii określających serwery.

dodaj linię

server 10.10.10.1

lub jakikolwiek inny adres twojego serwera. Następnie zrestartuj ntp na komputerze klienta, używając powyższej komendy. Alternatywnie możesz uzyskać identyfikator procesu i po prostu go zabić, a następnie uruchomić ponownie. Cokolwiek.

Następnie, po upływie wyznaczonego czasu, sprawdź przy pomocy 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

i widać, że klient korzysta z serwera czasu.

Zajmuje to trochę czasu.

    
odpowiedział Wastrel 01.03.2014, 16:11
źródło
0
  

Przyjęta odpowiedź (jak na lipiec 2018 r.) nie sprawdziła się u mnie. To   inna metoda działała dobrze na Ubuntu 16.04 LTS w lipcu 2018:

Zainstaluj NTP , jeśli nie jest zainstalowany:

sudo apt-get update
sudo apt-get install ntp

Edytuj konfigurację , aby umożliwić usługom NTP otrzymywanie żądań:

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

Odkomentuj ten wiersz:

# 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

do:

# 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

Zrestartuj NTP usługi:

sudo /etc/init.d/ntp restart

Teraz twój serwer NTP musi działać i pozwolić innym komputerom na synchronizację z twoimi. Każdy z powyższych testów, np.% Co_de%, powinien działać poprawnie.

    
odpowiedział Sopalajo de Arrierez 15.07.2018, 01:10
źródło

Przeczytaj inne pytania na temat tagów