Jak skonfigurować lokalny serwer NTP?

16

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.

Nie udało mi się jednak 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 do zrobienia?

Khaled
źródło

Odpowiedzi:

20

Oto dobre porady na forach Ubuntu: http://ubuntuforums.org/showthread.php?t=862620

Rażący makaron-kopia:

HOWTO: Konfigurowanie serwera NTP

W tym samouczku opisano, jak skonfigurować urządzenie jako lokalny serwer Network Time Protocol (NTP) i / lub jak używać demona NTP do regularnego utrzymywania dokładnego czasu systemowego.

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, dzięki czemu każdy użytkownik może wejść do systemu jako serwer na pewnym poziomie (więcej szczegółów na stronie Wikipedii).

Hierarchia NTP jest podzielona na różne poziomy, zwane warstwami zegarowymi. Najdokładniejszy poziom, Stratum 0, jest zarezerwowany dla zegarów atomowych itp. Następny poziom, Stratum 1, jest zwykle używany przez maszyny sieciowe podłączone lokalnie do zegarów Stratum 0. Warstwa 2 ... 15 to maszyny NTP, które z kolei są połączone z zegarami niższego poziomu i ze sobą.

W tym przewodniku opisano, jak dokładnie synchronizować z maszynami Stratum 1 i 2, a także jak zachować dokładność zegara systemowego przez cały dzień. Zawarto również sekcje na temat tego, jak zezwolić urządzeniu na działanie jako serwer Stratum 2/3 dla innych komputerów w sieci lokalnej.

Czy muszę utworzyć serwer NTP?

Nie ... absolutnie nie! Jeśli jesteś zadowolony z faktu, że zegary w twojej sieci mają jakieś nieznane różnice w stosunku do czasu standardowego (i siebie nawzajem), nie musisz konfigurować serwera NTP. Skonfigurowałem jeden na moim laptopie, aby zsynchronizować wiele maszyn w sieci lokalnej w ciągu <1 ms dla eksperymentu bioinżynierii. Oprócz tego istnieją różne inne zalety, które opisano poniżej.

Motywacja:

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

Zegary komputerowe są niedoskonałe i będą dryfować z (poprawnego) serwera czasu w ciągu dnia. Co więcej, prędkości dryfowania w zegarach różnych komputerów różnią się, tak że do końca dnia mogą istnieć znaczące różnice między różnymi maszynami w sieci lokalnej, które mogą zakłócać niektóre operacje (na przykład, kiedykolwiek plik makefile narzeka podczas przenoszenia kodu źródłowego między różne maszyny?).

Możliwe jest lokalne uruchomienie demona NTP na komputerze w sieci. Ma to wiele zalet: po pierwsze, demon NTP stopniowo „uczy się” współczynnika znoszenia komputera lokalnego i może go korygować przez cały dzień. Synchronizacja z serwerami czasu wyższego poziomu odbywa się wiele razy dziennie, a wiele różnych serwerów czasu może być używanych jednocześnie, aby zwiększyć dokładność synchronizacji. W ten sposób demon NTP działa jak dokładny klient czasu, utrzymując zegar systemowy tak blisko czasu standardowego, jak to możliwe.

Oprócz utrzymywania dokładnego zegara systemowego, demon NTP pozwala maszynie w sieci (jeśli chcesz) działać jako serwer czasu NTP. Dzięki temu inne maszyny w sieci lokalnej będą mogły synchronizować się z serwerem czasu LAN w bardzo szybki i dokładny sposób, ponieważ opóźnienie sieci jest zminimalizowane. W ten sposób różnice w zegarkach między maszynami w sieci są minimalne. Mac, a nawet urządzenia Windows mogą również synchronizować się z serwerem NTP, jeśli go skonfigurujesz.

Istnieją inne, mniej osobiste motywacje do skonfigurowania maszyny jako serwera NTP. Po pierwsze, może to zmniejszyć obciążenie serwerów NTP wyższego poziomu, ponieważ inne maszyny w sieci LAN mogą synchronizować się z lokalnie ustanowionym serwerem czasu. Również ntpdate zostało wycofane na korzyść użycia flagi -q dla ntpd (co naśladuje jego funkcjonalność). Dlatego nawet jeśli nie chcesz ciągle uruchamiać ntpd w tle, ntpdate zostanie ostatecznie zastąpione przez ntpd, więc możesz chcieć się z tym teraz zapoznać

Jak zachować dokładny zegar systemowy za pomocą ntpd

  1. Zainstaluj demona NTP

Najpierw zainstaluj demona NTP (ntpd):

sudo aptitude install ntpd

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

Opcjonalnie możesz też chcieć usunąć poprzedni (przestarzały) program do synchronizacji czasu, ntpdate. Być może mądrzej jest to zrobić po tym, jak ntpd działa

sudo aptitude remove ntpdate
  1. Skonfiguruj poprawnie demona

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

Pierwszą sekcją, którą możesz zmodyfikować, jest 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, najlepiej jest komunikować się z wieloma różnymi serwerami NTP i utrzymywać je jak najbliżej fizycznej lokalizacji. Istnieje wiele różnych list serwerów online, prawdopodobnie najlepsza znajduje się tutaj. Trwa debata na temat odpowiedniej liczby serwerów do użycia. Jedna jest lepsza od dwóch, a trzy lub więcej jest dobrym pomysłem, o ile nie przesadzisz. Oto przykład kilku używanych przeze mnie serwerów czasu:

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, wybierając 'iburst'najbardziej obiecujący. Na przykład:

server nist1-dc.WiTime.net iburst

Spowoduje to, że ntpd bardzo szybko zsynchronizuje się z tym serwerem po uruchomieniu. W przeciwnym razie ntpd będzie powoli dążyć do porozumienia z listą serwerów (co jest jego naturą), a synchronizacja może zająć 15-20 minut wystarczająco dobrze, aby działać jako serwer czasu dla reszty sieci.

Dodaj także kilka dodatkowych wierszy na dole listy serwerów, aby domyślnie podawać 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 nieprzyjemnościom, jeśli używasz ntpd na laptopie lub innym komputerze z przerywanymi okresami braku połączenia z Internetem.

Podsumowując, lista serwerów powinna wyglądać podobnie do poniższej (to moja, 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 w /etc/ntp.confpliku znajduje się odpowiednia lista serwerów , czas uruchomić demona i sprawdzić, czy synchronizujesz poprawnie! Upewnij się, że masz aktywne połączenie internetowe, a następnie uruchom:

sudo /etc/init.d/ntp restart

Następnie monitoruj dziennik systemu, aby zobaczyć, czy synchronizujesz z serwerem czasu:

tail -f /var/log/syslog

Po około 10-15 sekundach (lub do 15-20 minut, jeśli zapomniałeś wstawić „iburst” po ulubionym serwerze), powinieneś zobaczyć w dzienniku systemowym coś takiego:

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

Jeśli ten komunikat nigdy nie pojawia się, oznacza to, że nie została jeszcze poprawnie zsynchronizowana z siecią serwerów NTP. Sprawdź listę partnerów NTP, z którymi się komunikujesz, korzystając z następujących opcji:

ntpq -c lpeer

Jeśli pola „opóźnienie”, „przesunięcie” i „jitter” są niezerowe i nie dokonałeś synchronizacji, prawdopodobnie oznacza to, że musisz tylko chwilę poczekać. Sprawdź ponownie, czy wstawiłeś argument „iburst” do listy serwerów! Dla porównania moi rówieśnicy 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. Dzielić! (opcjonalny)

Po uruchomieniu ntpd i zsynchronizowaniu go z wybranymi serwerami czasu możesz go skonfigurować, aby działał jako serwer czasu dla innych komputerów. Aby to zrobić, dodaj sekcję podobną do następującej /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. Synchronizować! (opcjonalny)

Po skonfigurowaniu serwera NTP przy użyciu kroków 1-4 możesz zsynchronizować inne maszyny w sieci z serwerem na różne sposoby. Poniżej kilka z nich:

ntpd:

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

ntpd -q [IP address of your server]

ntpdate:

Jeśli nadal masz zainstalowany program ntpdate na innym komputerze, możesz go użyć 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 ustawiania czasu, musisz użyć opcji -u.

Windows:

Komputery z systemem Windows używają uproszczonej wersji NTP o nazwie Simple Network Time Protocol (SNTP) i mogą synchronizować się z serwerami NTP. Aby zsynchronizować się z nowym serwerem, kliknij dwukrotnie godzinę i przejdź do zakładki „Internet Time”. Wpisz adres IP swojego serwera w polu „Serwer”. Załączam zrzut ekranu synchronizacji systemu Windows XP z serwerem czasu LAN, jeśli ktoś jest zainteresowany.

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

Mikrofon

Spinki do mankietów

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

https://help.ubuntu.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

RobotHumans
źródło
Dzięki za link. Właściwie nie zmieniłem konfiguracji! Po prostu zadziałało po pewnym czasie.
Khaled
na serwerze NTTP możesz uruchomić, ntpdate -s a_stratum_1_server_addressaby wymusić natychmiastową synchronizację. następnie na innym (klienckim) komputerze z uruchomionym poleceniem „ntpdate -q your_local_ntp_server” powinien odpowiedzieć czymś podobnym doserver your_local_ntp_server_ip, stratum 2, offset -0.012221, delay 0.02618
Keith Reynolds
Tylko odpowiedź na link może być nieaktualna. Proszę podać ważne informacje w samej odpowiedzi.
Zeta
5

Istnieje wiele linków na ten temat i wydaje mi się, że komplikują procedurę. W moim przypadku mam jedną maszynę, która działa jak serwer proxy i zapora ogniowa, a wszystkie inne łączą się z nią za pośrednictwem Internetu. Nie chciałem otwierać portów w zaporze. Dlatego serwer proxy musi być serwerem czasu (ntp) , a pozostałe maszyny ( klienci ) pobierają z niego czas.

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

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

ntpq -c lpeer

powinien dać ci wynik, który wygląda 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, masz połączenie, a Twój serwer czasu otrzymuje czas. Jeśli nie, użyj

ps -e | grep "ntp" 

aby upewnić się, że ntp działa, i spróbuj ponownie. Spróbuj także zrestartować NTTP:

sudo /etc/init.d/ntp restart

nawiązanie połączenia może trochę potrwać (przepraszam!). Demon nie sonduje serwerów zbyt często. Kolumna „kiedy” na powyższym wyjściu pokazuje czas w sekundach od odpytywania serwera.

Teraz musisz zmusić serwer czasu do wysyłania czasu do innych maszyn.

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

broadcast 10.255.255.255

Musisz dodać linię rozgłoszeniową dla każdego segmentu sieci. Jeśli twoja sieć jest prosta jak moja, wystarczy jedna linia jak wyżej. Teraz zrestartuj ntp za pomocą powyższej komendy i sprawdź ponownie za pomocą ntpq, 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, to nadaje.

Teraz musisz sprawić, aby każda maszyna klienta otrzymała czas z serwera nadawczego. Na każdym z nich edytuj plik:

/etc/ntp.conf

i zobaczysz kilka wierszy określających serwery.

dodaj linię

server 10.10.10.1

lub jakikolwiek adres twojego serwera. Następnie uruchom ponownie ntp na komputerze klienckim za pomocą powyższego polecenia. Alternatywnie możesz uzyskać identyfikator procesu, po prostu go zabić i uruchomić ponownie. Cokolwiek.

Następnie, po upływie odpowiedniego czasu, sprawdź za pomocą 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.

To zajmuje trochę czasu.

Nicpoń
źródło
Możesz uruchomić ntpdate -s a_stratum_1_server_addressna swoim serwerze NTTP, aby zmusić go do odpytywania i natychmiastowej synchronizacji.
Keith Reynolds,
Czy ten typ transmisji jest obsługiwany przez wszystkie przełączniki? Np. Transmisja UDP jest blokowana przez większość przełączników / routerów.
Tanasis
1

Przyjęta odpowiedź (jak na lipiec 2018 r.) Nie działała dla mnie. Ta 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 plik konfiguracyjny , aby umożliwić usłudze NTP odbieranie żądań:

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

Odkomentuj tę linię:

# 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

Uruchom ponownie usługę NTP :

sudo /etc/init.d/ntp restart

Teraz twój serwer NTP musi działać i pozwolić innym komputerom na synchronizację z twoim. Każdy z powyższych testów, podobnie jak ntpdate -u YourComputerpowinien, powinien działać poprawnie.

Sopalajo de Arrierez
źródło