Dominik Konczewski

Dominik Konczewski Senior Systems
Administrator

Temat: linux i serwer czasu

witam,
mam u siebie jakąś nowszą wersję centos'a chyba 5.4 i mam taki problem,
potrzebuję aby był bardzo aktualny co do czasu, właściwie co do sekundy,
na tym centosie mam postawionego postfixa, generalnie cały serwer mailowy, a problem w tym, że on pokazuje ludziom czas i datę odbioru maila, albo wysłanie z czasu który prawdopodobnie bierze sobie z zegarka z bios'u a jak czas na systemie jest źle ustawiony to wypisuje ludziom głupoty,

ztąd moje pytanie Macie jakiś niezły i wypróbowany ?
używałem ntpd, ale on mi się co jakiś czas wiesza i pokazuje głupią datę,
tzn niby w demonach działa sobie ale nie aktualizuje,
mam w /etc/ntpd.conf wpisane jako serwery czasu ntp.task.gda.pl

w pliku step-tickers ustawilem sobie ip ntp.task.gda.pl czyli 153.19.250.123

to jest u mnie kod z ntp.conf

# Permit time synchronization with our time source, but do not
# permit the source to query or modify the service on this system.
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
logfile /var/log/ntpd.log

# Permit all access over the loopback interface. This could
# be tightened as well, but to do so would effect some of
# the administrative functions.
restrict 127.0.0.1
restrict -6 ::1

# Hosts on local network are less restricted.
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#server 0.centos.pool.ntp.org
#server 1.centos.pool.ntp.org
#server 2.centos.pool.ntp.org

server ntp.task.gda.pl
server ntp.task.gda.pl
server ntp.task.gda.pl

#broadcast 192.168.1.255 key 42 # broadcast server
#broadcastclient # broadcast client
#broadcast 224.0.1.1 key 42 # multicast server
#multicastclient 224.0.1.1 # multicast client
#manycastserver 239.255.254.254 # manycast server
#manycastclient 239.255.254.254 key 42 # manycast client

# Undisciplined Local Clock. This is a fake driver intended for backup
# and when no outside source of synchronized time is available.
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10

# Drift file. Put this in a directory which the daemon can write to.
# No symbolic links allowed, either, since the daemon updates the file
# by creating a temporary in the same directory and then rename()'ing
# it to the file.
driftfile /var/lib/ntp/drift

# Key file containing the keys and key identifiers used when operating
# with symmetric key cryptography.
keys /etc/ntp/keys

# Specify the key identifiers which are trusted.
#trustedkey 4 8 42

# Specify the key identifier to use with the ntpdc utility.
#requestkey 8

# Specify the key identifier to use with the ntpq utility.
#controlkey 8

właściwie zmieniłem tylko serwery z server ...
na moje ntp.

nie wiem co jeszcze ..
właściwie jak odpalam ntp to odrazu się synchronizuje i jest wszystko ślicznie a po jakimś czasie mam szopki z datą.
Próbowałem kiedys rdate -s ale efekt mizerny bo mi się dovecot bulwersował że on nie rozumie takiej szybkiej zmiany czasu i on się powiesi. tak napisał :)
może pora zmienić demona pop3/imap na np. courier-imap
Stanisław P.

Stanisław P. Software designer

Temat: linux i serwer czasu

Dominik Konczewski:
ztąd moje pytanie Macie jakiś niezły i wypróbowany ?
ntp to standard. Praktycznie jedyny normalny standard dla ludzi, którzy nie chcą we własny super sprzęt inwestować.
używałem ntpd, ale on mi się co jakiś czas wiesza i pokazuje głupią datę,
Co to znaczy "wiesza"? Co to znaczy "głupią". Złą do przodu? do tyłu? o ile? co jest w logach? co pokazuje komenda `peers` w programie `ntpq` w czasie jak ntp działa? Czy używasz flagi `-g` dla ntpd?

Nie używam serwera "fudge" - jeśli Twoja lokalna data jest niepoprawna też Ci nie polecam. Generalnie ta opcja powoduje, że dodajesz swój serwer do kolekcji tych które mają "poprawną" datę - a tego raczej chcesz uniknąć.
Andrzej Zieliński

Andrzej Zieliński Administrator
Systemów
Informatycznych, Sp.
z.o.o

Temat: linux i serwer czasu

U mnie ntp działa bez problemów.
Zastanawia mnie po co wpisałeś 3x server ntp.task.gda.pl ? Raz to za mało ?

konto usunięte

Temat: linux i serwer czasu

server ntp.task.gda.pl
server ntp.task.gda.pl
server ntp.task.gda.pl

Jeden serwer wymieniony trzy razy nie ma sensu. Natomiast kilka roznych serwerow jest wskazane ze wzgledu na to jak dziala protokol NTP (slowa kluczowe to: "offset", "skew" i "drift").

Ustaw tak:

server 0.europe.pool.ntp.org
server 1.europe.pool.ntp.org
server 2.europe.pool.ntp.org
server 3.europe.pool.ntp.org

lub bardziej "patriotycznie":

server 0.pl.pool.ntp.org
server 1.pl.pool.ntp.org
server 2.pl.pool.ntp.org
server 3.pl.pool.ntp.org
Jarosław Rafa

Jarosław Rafa senior software
engineer, Motorola
Solutions Systems
Polska

Temat: linux i serwer czasu

Stanisław Pitucha:
Dominik Konczewski:
ztąd moje pytanie Macie jakiś niezły i wypróbowany ?
ntp to standard. Praktycznie jedyny normalny standard dla ludzi, którzy nie chcą we własny super sprzęt inwestować.

Dla tych co chcą inwestować też, bo sprzętowe serwery czasu tak samo wystawiają czas po NTP, a nie po żadnym innym protokole... :) Bez NTP ani rusz.
Andrzej Zieliński

Andrzej Zieliński Administrator
Systemów
Informatycznych, Sp.
z.o.o

Temat: linux i serwer czasu

Mam sprzętowe serwery czasu i kuka się do nich po ntp ;-)
Więc jeśli chcesz mieć dokładny czas to tylko ntp
Dominik Konczewski

Dominik Konczewski Senior Systems
Administrator

Temat: linux i serwer czasu

Andrzej Zieliński:
U mnie ntp działa bez problemów.
Zastanawia mnie po co wpisałeś 3x server ntp.task.gda.pl ? Raz to za mało ?

standardowo on w konfiguracji ma trzy różne serwery

server 0.centos.pool.ntp.org
server 1.centos.pool.ntp.org
server 2.centos.pool.ntp.org

ale prawdopodobnie po to żeby odpytywał trzy serwery czasu,
a w opisie wyczytałem że trzy insrukcje tego samego serwera czasu się wpisuje po to żeby on jakąś tam różnicę w czasie sobie wyłapał,
ale szczerze mówiąć nie wiem czy nie wystarczy raz odpytać
Dominik Konczewski

Dominik Konczewski Senior Systems
Administrator

Temat: linux i serwer czasu

Łukasz S.:
server ntp.task.gda.pl
server ntp.task.gda.pl
server ntp.task.gda.pl

Jeden serwer wymieniony trzy razy nie ma sensu. Natomiast kilka roznych serwerow jest wskazane ze wzgledu na to jak dziala protokol NTP (slowa kluczowe to: "offset", "skew" i "drift").

Ustaw tak:

server 0.europe.pool.ntp.org
server 1.europe.pool.ntp.org
server 2.europe.pool.ntp.org
server 3.europe.pool.ntp.org

lub bardziej "patriotycznie":

server 0.pl.pool.ntp.org
server 1.pl.pool.ntp.org
server 2.pl.pool.ntp.org
server 3.pl.pool.ntp.org

ok, z chęcią zastosuję a pytanko co mam wpisać wtedy w pliku step tickers ?
ip tego pl.pool.ntp.org ?
a nie mógłbym sobie wpisać czegoś bardziej naszego ? np. task.gda.pl ?

np dla przykładu chciałbym wklepać coś takiego

server ntp.man.poznan.pl
server ntp.task.gda.pl
server ntp.elproma.com.pl
server ntp.icm.edu.pl


jeszcze małe pytanie, czy powinienem wklepywać te serwery z cyframi na początku ? dla przykładu
server 0.ntp.man.poznan.pl
server 1.ntp.task.gda.pl
itd ..

no i co mu wpisac w step_tickers czy zostawić pusty ? domyślnie był pusty
natomiast nie wiem czy jest sens uruchamiać ntpd z parametrem -g, bo wtedy w man jest opisane że zapisuje się do logów i wychodzi

konto usunięte

Temat: linux i serwer czasu

a nie mógłbym sobie wpisać czegoś bardziej naszego ? np. task.gda.pl ?

Uzywajac serwerow z puli *.pl.pool.ntp.org masz dostep do ponad 30 serwerow czasu znajdujacych sie w Polsce i na dodatek odpada Ci problem zmian w konfiguracji jesli ktorys z serwerow padnie. Usluga po prostu odpyta nastepny z puli.

Uzywajac puli *.europe.pool.ntp.org masz dostep do ponad 1500 maszyn z Europy, w tym tych 30+ z Polski.
jeszcze małe pytanie, czy powinienem wklepywać te serwery z cyframi na początku ? dla przykładu

Nie.
no i co mu wpisac w step_tickers czy zostawić pusty ?

Zostaw pusty.
natomiast nie wiem czy jest sens uruchamiać ntpd z parametrem -g, bo wtedy w man jest opisane że zapisuje się do logów i wychodzi

Nic takiego nie jest napisane. Opcja -g wymusi ustawienie czasu w systemie nawet jesli roznica miedzy lokalnym zegarem a zegarem zdalnym >1000s. Bez tej opcji ntpd w takiej sytuacji po prostu nie wystartuje.

[..] This causes ntpd to exit with a panic message to the system log. The -g option overrides this check and the clock will be
set to the server time regardless of the chip time. However, and to protect against broken hardware, such as when the CMOS battery fails or the clock counter becomes defec-
tive, once the clock has been set, an error greater than 1000s will cause ntpd to exit anyway. [..]
Stanisław P.

Stanisław P. Software designer

Temat: linux i serwer czasu

Dominik Konczewski:
ok, z chęcią zastosuję a pytanko co mam wpisać wtedy w pliku step tickers ?
Jeśli używasz `ntpd -g`, teoretycznie nic nie musisz wpisywać. Step tickers jest tylko po to, żeby ustawić czas zaraz po bootowaniu.

Jeśli chcesz coś wsadzić, to użyj jakiegoś znanego ntp. Do wyboru do koloru: http://support.ntp.org/bin/view/Servers/StratumTwoTime...
np dla przykładu chciałbym wklepać coś takiego

server ntp.man.poznan.pl
server ntp.task.gda.pl
server ntp.elproma.com.pl
server ntp.icm.edu.pl
Jeden wystarczy - nie potrzebujesz więcej - step ticker jest używany tylko przy starcie.
jeszcze małe pytanie, czy powinienem wklepywać te serwery z cyframi na początku ? dla przykładu
server 0.ntp.man.poznan.pl
server 1.ntp.task.gda.pl
itd ..
Serwery z numerem na początku to zwykle całe poole serwerów. Zamiast łączyć się do tych konkretnych dostajesz odpowiedź z losowym serwerem. Nie łącz się do ntp.task.gda.pl np. Zamiast tego łącz się z Polskim poolem, tak jak opisują tutaj: http://www.pool.ntp.org/zone/pl

Jak będziesz miał pecha i serwery które sobie sam wybrałeś padną, to nie będziesz już zsynchronizowany. Jeśli zamiast tego podasz cały pool to jesteś bezpieczniejszy.
no i co mu wpisac w step_tickers czy zostawić pusty ? domyślnie był pusty
Jakikolwiek konkretny serwer (sama domena, bez słowa "server"). Ten plik ma znaczenie tylko na systemach redhato-podobnych z tego co wiem.
natomiast nie wiem czy jest sens uruchamiać ntpd z parametrem -g, bo wtedy w man jest opisane że zapisuje się do logów i wychodzi
Prawie - trochę przekręciłeś ten opis.
ntpd *zawsze* przestanie synchronizować czas jeśli nie jesteś zsynchronizowany (różnica ponad 1000s). "-g" powoduje, że jeśli masz taką różnicę zaraz po starcie, czas zostanie poprawiony, ale tylko jeden raz. Jeśli wyjdziesz ponownie ponad 1000s, ntpd i tak się sam zamknie.
Dominik Konczewski

Dominik Konczewski Senior Systems
Administrator

Temat: linux i serwer czasu

to może tłumaczyć dlaczego ntpd tak kiepsko mi działało,
używałem tyllko task.gda.pl a w logach miałem nie raz wypisane timeouty,
co do ntpd to używam tego z yuma, korzystam z centos'a tak więc jest to ntp redhatowy i tam była kolejność,
teraz poustawiałem mu taki ntp serwery jak man-poznan, warszawa i zdaje się że chodzi poprawnie,
dziękuję za podpowiedź z tym step-tickers
Pawel Cygal

Pawel Cygal Senior Site
Reliability Engineer
/ DevOps / Cloud
Native

Temat: linux i serwer czasu

Sugeruje użycie serwerów czasu z GŁÓWNEGO URZEDU MIAR :) oraz użycie opcji iburst w celu przyspieszenia procesu synchronizacji zegarów :) poniżej przykład

server tempus1.gum.gov.pl iburst
server tempus2.gum.gov.pl iburst

do przeprowadzenia diagnostyki użyj

poleceń ntpq –p oraz ntptrace

Problem powinien ustąpić.
Stanisław P.

Stanisław P. Software designer

Temat: linux i serwer czasu

Pawel Cygal:
Sugeruje użycie serwerów czasu z GŁÓWNEGO URZEDU MIAR :) oraz użycie opcji iburst w celu przyspieszenia procesu synchronizacji zegarów :) poniżej przykład

server tempus1.gum.gov.pl iburst
server tempus2.gum.gov.pl iburst

Czemu tak? Ntp został zaprojektowany w ten sposób, żeby:
1) nie obciążać niepotrzebnie serwerów które *wiedzą* jaki jest aktualny czas
2) nie być zależnym od jednego serwera

Jeśli polagasz na serwer{1/2}.jakaś.domena, to zobacz co się stanie jeśli np. będą mieli obciążone łącze, albo padnie któryś switch pomiędzy Tobą a nimi.
Jeśli nie potrzebujesz dokładności <1ms, użyj poola - po to zostały stworzone.

konto usunięte

Temat: linux i serwer czasu

Stanisław Pitucha:

Jeśli nie potrzebujesz dokładności <1ms, użyj poola - po to
> zostały stworzone.

Problem z pool.ntp.org (a zwłaszcza z pl.pool) jest taki, że serwery tamże nie zawsze są trustworthy. Powiedz, na serio zaufasz takim serwerom?

$ for i in $(host pl.pool.ntp.org | awk '/has address/ {print $NF}'); do host $i; done
226.6.65.77.in-addr.arpa domain name pointer d6-226.icpnet.pl.
42.194.16.83.in-addr.arpa domain name pointer bema.one.pl.
4.137.19.83.in-addr.arpa domain name pointer cxd4.internetdsl.tpnet.pl.

$ for i in $(host europe.pool.ntp.org | awk '/has address/ {print $NF}'); do host $i; done
2.226.89.141.in-addr.arpa domain name pointer tb0.asg-platform.org.
41.1.232.87.in-addr.arpa domain name pointer dns2.dns.imagine.ie.
41.1.232.87.in-addr.arpa domain name pointer relay.imagine.ie.
73.0.111.89.in-addr.arpa domain name pointer 0x0b.0x00.lv.
$

Moim zdaniem lepiej postawić w swojej sieci 2+ serwery czasu, które będą się synchronizowały z zaufanymi co najmniej stratum2 i całą resztę swojej sieci synchronizować ze swoimi.
O ile oczywiście nie jesteś bankiem lub inną tego typu ważną instytucją - wtedy tylko własne zegarki wchodzą w grę :)
Pawel Cygal

Pawel Cygal Senior Site
Reliability Engineer
/ DevOps / Cloud
Native

Temat: linux i serwer czasu

Stanisław Pitucha:
Pawel Cygal:
Sugeruje użycie serwerów czasu z GŁÓWNEGO URZEDU MIAR :) oraz użycie opcji iburst w celu przyspieszenia procesu synchronizacji zegarów :) poniżej przykład

server tempus1.gum.gov.pl iburst
server tempus2.gum.gov.pl iburst

Czemu tak? Ntp został zaprojektowany w ten sposób, żeby:
1) nie obciążać niepotrzebnie serwerów które *wiedzą* jaki jest aktualny czas
2) nie być zależnym od jednego serwera

Jeśli polagasz na serwer{1/2}.jakaś.domena, to zobacz co się stanie jeśli np. będą mieli obciążone łącze, albo padnie któryś switch pomiędzy Tobą a nimi.
Jeśli nie potrzebujesz dokładności <1ms, użyj poola - po to
> zostały stworzone.

Zgadzam się z tobą, że tak został zaprojektowany NTP. Ja natomiast chciał jedynie wskazać kolejną możliwość rozwiązania problemu :). Dodatkowo bardziej chodziło mi o wykorzystanie opcji iburst do wymuszenia szybszej synchronizacji czasu niż samych serwerów.
Stanisław P.

Stanisław P. Software designer

Temat: linux i serwer czasu

Jakub J.:
Problem z pool.ntp.org (a zwłaszcza z pl.pool) jest taki, że serwery tamże nie zawsze są trustworthy. Powiedz, na serio zaufasz takim serwerom?

$ for i in $(host pl.pool.ntp.org | awk '/has address/ {print $NF}'); do host $i; done
226.6.65.77.in-addr.arpa domain name pointer d6-226.icpnet.pl.
42.194.16.83.in-addr.arpa domain name pointer bema.one.pl.
4.137.19.83.in-addr.arpa domain name pointer cxd4.internetdsl.tpnet.pl.

Tak.
Ntp ma mechanizmy bronienia się przed takimi problemami. Sprawdź sobie `lassoc` w ntpq. Prawdopodobnie będziesz miał kilka źródeł oznaczonych tylko jako candidate, kilka jako outlyer. Są warunki które host musi spełnić, żeby nie zostać oznaczony jako 'insane', są warunki oznaczające którym serwerom wierzymy bardziej niż innym.

Po dorzuceniu jednego serwera z pool.ntp.org, nawet jak masz pecha i trafisz na pozostałe "dziwne", to nie powinno to mieć żadnego wpływu na stabilność czasu.
Tomasz Zadora

Tomasz Zadora programuję

Temat: linux i serwer czasu

Pytanie o pewien minus związany z używaniem ntpd: aplikacja uruchomiona na serwerze nie może polegać na "sekwencyjności" czasu, w takim sensie, że jeżeli wykonuję operację A (koniec wykonania operacji) a następnie po niej operację B, to teoretycznie używając ntpd zachodzi możliwość że wg. czasu systemowego operacja B była zakończona przed zakończeniem operacji A.

Mam na myśli rzeczy związane głównie z logowaniem operacji, wykonywaniem zadań przez cron-a, oraz pewne inne specyficzne sytuacje w aplikacjach - po za oczywiście związanymi z niższymi poziomami takimi jak np. synchronizacją wątków - bo nie o czas systemowy się ona opiera...

Co najlepiej zrobić kiedy z jednej strony chcemy mieć dość dokładny czas a z drugiej zaburzenia, związane głównie z cofaniem czasu na lokalnym zegarze są niepożądane ?
Stanisław P.

Stanisław P. Software designer

Temat: linux i serwer czasu

Tomasz Zadora:
Pytanie o pewien minus związany z używaniem ntpd: aplikacja uruchomiona na serwerze nie może polegać na "sekwencyjności" czasu, w takim sensie, że jeżeli wykonuję operację A (koniec wykonania operacji) a następnie po niej operację B, to teoretycznie używając ntpd zachodzi możliwość że wg. czasu systemowego operacja B była zakończona przed zakończeniem operacji A.
To nie jest do końca prawda. Jeśli używasz ntpd, czas nie "skacze" (step) do poprawnego jeśli ustawisz "-x". Jest używany w tym celu "slew" - ticki czasu są albo pomijane albo dodawane. Czyli czas biegie albo szybiej, albo wolniej, aż zostanie poprawiony. Nigdy nie skacze do konkretnego celu. Jeśli masz problem z logami, to uruchom przy starcie najpierw `ntpdate`, potem `ntpd -x` (bez -g), potem swój program.

(http://doc.ntp.org/4.1.0/ntpd.htm - How NTP Operates)Stanisław Pitucha edytował(a) ten post dnia 30.09.10 o godzinie 11:31
Mariusz Pękala

Mariusz Pękala Programista.
Skromny.

Temat: linux i serwer czasu

Pamiętam, że dawno temu polecenie 'date' w Sun Solaris miało opcję (-a chyba), która powodowała właśnie takie "dogonienie" podanej daty przez czas systemowy.
Niestety, GNU coreutils już czegoś takiego nie ma.

Temat: linux i serwer czasu

man nptdate ;]

-B Force the time to always be slewed using the adjtime() system
call, even if the measured offset is greater than +-128 ms. The
default is to step the time using settimeofday() if the offset
is greater than +-128 ms. Note that, if the offset is much
greater than +-128 ms in this case, that it can take a long time
(hours) to slew the clock to the correct value. During this
time, the host should not be used to synchronize clients.

Następna dyskusja:

Rozpoznanie tematu: serwer ...




Wyślij zaproszenie do