Inledning
exakt tidhållning är avgörande för nästan vilken tjänst eller programvara som helst. E-post, loggers, händelsesystem och schemaläggare, användarautentiseringsmekanismer och tjänster som körs på distribuerade plattformar behöver alla exakta tidsstämplar för att spela in händelser i kronologisk ordning. Dessa tjänster använder Network Time Protocol, eller NTP, för att synkronisera systemklockan med en betrodd extern källa. Denna källa kan vara en atomur, en GPS-mottagare eller en annan tidsserver som redan använder NTP.
det är här NTP Pool Project-projektet spelar in. Det är ett stort världsomspännande kluster av tidsservrar som ger enkel åtkomst till känd ”god tid” för tiotals miljoner kunder runt om i världen. Det är standardtidsservern för Ubuntu och de flesta andra stora Linux-distributioner, liksom många nätverksanslutna apparater och program.
i den här guiden ställer du in NTP på din server och konfigurerar den för att vara en del av NTP-Poolprojektet, så det ger exakt tid till andra användare av NTP-Poolprojektet. Att ge dina extra CPU-cykler och oanvänd bandbredd är ett perfekt sätt att ge något tillbaka till samhället.
den erforderliga bandbredden är relativt låg och kan justeras beroende på hur mycket du kan tillhandahålla och var din server är bosatt. Varje klient skickar bara ett par UDP-paket var 20: e minut, så de flesta servrar får bara cirka ett dussin NTP-paket per sekund, med spikar ett par gånger om dagen på upp till hundra paket per sekund. Detta översätts till bandbreddsanvändning på 10-15kb/SEK Med spikar på 50-120kb/sek.
det finns tre grundläggande krav du måste uppfylla innan du går med i NTP Pool-projektet:
- din server måste ha en statisk IP-adress.
- din server måste ha en permanent och stabil internetanslutning.
- din IP-adress ändras inte, eller ändras bara sällan (en gång om året eller mindre).
för de flesta molnbaserade servrar uppfylls de två första kraven vanligtvis automatiskt. Det tredje kravet betonar att anslutning till NTP-Poolprojektet utgör ett långsiktigt åtagande. Naturligtvis, om dina omständigheter förändras, är det bra att ta en server ut ur poolen, men det kommer att ta lång tid (mestadels veckor, men ibland månader eller till och med år) innan trafiken helt försvinner.
förutsättningar
för att slutföra denna handledning behöver du:
- en Centos 7-server med IPv6-nätverk konfigurerad. Om du behöver Konfigurera IPv6-nätverk på en exiserande droppe kan du följa denna handledning.
- en sudo-icke-root-användare och en brandvägg, som du kan ställa in genom att följa den ursprungliga Serverinställningen med CentOS 7-handledning och avsnittet ”Konfigurera en grundläggande Brandvägg” i de ytterligare rekommenderade stegen för nya CentOS 7-servrar handledning.
Steg 1 — Installera NTP
NTP-paketet är inte installerat som standard, så du använder pakethanteraren för att installera det. Uppdatera först dina paket:
- sudo yum update
installera sedan NTP:
- sudo yum install ntp
när installationen är klar startar du tjänsten och konfigurerar den så att den startar automatiskt varje gång servern startar:
- sudo systemctl start ntpd
- sudo systemctl enable ntpd
om du har konfigurerat brandväggen som anges i förutsättningarna måste du tillåta UDP-trafik för NTP-tjänsten för att kunna kommunicera med NTP-poolen:
- sudo firewall-cmd --permanent --add-service=ntp
- sudo firewall-cmd --reload
för mer information om FirewallD, se hur du ställer in en brandvägg med FirewallD på CentOS 7.
NTP är nu installerat, men det är konfigurerat att använda standard NTP pool tidsservrar. Låt oss välja några specifika tidsservrar istället.
steg 2 — Välja en lämplig Uppströmsserver
NTP-Poolprojektet frågar operatörer som vill gå med i poolen att välja bra nätverks-lokala tidsservrar snarare än att använda standard pool.ntp.org
– servrar. Detta säkerställer att NTP-Poolprojektet förblir pålitligt, snabbt och hälsosamt. När du väljer din tidskälla vill du ha en stabil nätverksanslutning utan paketförlust och så få humle som möjligt mellan servrarna.
det flerskiktade och hierarkiska NTP-protokollet separerar de berörda parterna i primära servrar, sekundära servrar och klienter. De primära servrarna kallas Stratum 1 och är anslutna direkt till tidskällan, som kallas Stratum 0. Denna källa kan vara en atomur, en GPS-mottagare eller ett radionavigationssystem. Sekundära servrar i kedjan kallas Stratum 2, Stratum 3 och så vidare.
varje server är också en klient. En Stratum 2-klient tar emot tid från en uppströms Stratum 1-server och ger tid till nedströms Stratum 3-servrar eller andra klienter. För att NTP Pool Project-medlemmar ska fungera korrekt behöver NTP-demonen minst tre servrar konfigurerade. Projektet rekommenderar minst fyra och högst sju källor.
NTP Pool projektet ger en lista över offentliga Stratum 1 och Startum 2 tidsservrar. Listorna anger NTP-tidsservrar som är tillgängliga för allmänhetens åtkomst under angivna begränsningar. Du hittar tre typer:
- OpenAccess: den här tidsservern är öppen för alla klienter som följer rekommendationerna för användning av NTP-poolen.
- RestrictedAccess: den här tidsservern har vissa åtkomstbegränsningar utöver NTP-Poolanvändningsrekommendationerna.
- Stängdtillgång: Denna tidsserver är stängd eller kräver tidigare arrangemang.
Varning: Använd inte servrar som inte är listade som OpenAccess om du inte har fått godkännande för att göra det.
besök listan Stratum 1 tidsservrar. Du ser en lista som följande:
sortera listan efter ISO-kodkolumnen och hitta en eller två servrar som är geografiskt nära serverns datacenter. När kolumnen serverns Åtkomstpolicy anger OpenAccess kan du använda den utan problem. Om det står ”RestrictedAccess”, klicka för att öppna posten och läs instruktionerna i fältet AccessDetails. Ofta kommer du att upptäcka att NotificationMessage är inställd på Ja, vilket innebär att du måste skapa ett informellt e-postmeddelande riktat till adressen i ServerContact och informera serveroperatören om din önskan att använda den här tidsservern som en tidskälla för din NTP-Poolprojektmedlem.
när du har identifierat de servrar du vill använda klickar du på länken för varje server i ISO-kolumnen och kopierar dess värdnamn eller IP-adress. Du kommer att använda dessa adresser i steg 3.
välj sedan tre eller fyra servrar från Stratum 2-listan och följ samma process.
när du har valt dina tidsservrar är det dags att konfigurera din NTP-klient för att använda dem.
steg 3 — Konfigurera NTP för att gå med i poolen
för att använda din server med NTP-poolen och konfigurera dina nya tidsservrar måste du göra några ändringar i din NTP-demonkonfiguration. För att göra det, redigera filen /etc/ntp.conf
:
- sudo vi /etc/ntp.conf
kontrollera först att en driftfil är konfigurerad. En driftfil lagrar frekvensförskjutningen mellan systemklockan som körs med sin nominella frekvens och frekvensen som krävs för att förbli i synkronisering med rätt tid. Det bidrar till att uppnå en stabil och korrekt tid. Du bör hitta detta högst upp i din konfigurationsfil på en standardinstallation:
# For more information about this file, see the man pages# ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5).driftfile /var/lib/ntp/drift...
ta sedan bort standardposterna för tidskälla från konfigurationen. Du letar efter alla linjer som är av mönstret server 0.centos.pool.ntp.org iburst
. Om du använder en standardkonfiguration tar du bort de markerade raderna som visas i följande exempel:
...# 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 iburstserver 1.centos.pool.ntp.org iburstserver 2.centos.pool.ntp.org iburstserver 3.centos.pool.ntp.org iburst
ersätt raderna du tog bort med de handplockade servrarna du valde i föregående steg.
...server ntp_server_hostname_1 iburstserver ntp_server_hostname_2 iburstserver ntp_server_hostname_3 iburstserver ntp_server_hostname_4 iburstserver ntp_server_hostname_5 iburst...
vi använder alternativet iburst
för varje server, enligt NTP-poolrekommendationerna. På så sätt, om servern inte kan nås, skickar detta en explosion av åtta paket istället för det vanliga paketet. Att använda alternativet burst
i NTP-Poolprojektet anses vara missbruk eftersom det skickar de åtta paketen varje undersökningsintervall, medan iburst
skickar de åtta paketen endast första gången.
kontrollera sedan att standardkonfigurationen inte tillåter hanteringsfrågor. Om du inte gör det kan din server användas i NTP-reflektionsattacker eller vara sårbar för ntpq
och ntpdc
– frågor som försöker ändra serverns tillstånd. Kontrollera att alternativet noquery
läggs till i standardlinjerna restrict
. Se också till att du lägger till alternativen kod
och limited
eftersom de begränsar alltför ivrigt att fråga kunder och verkställa hastighetsbegränsande.
...# Permit time synchronization with our time source, but do not# permit the source to query or modify the service on this system.restrict default nomodify notrap nopeer noquery kod limited# 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.1restrict ::1
du kan hitta mer information om de andra alternativen i den officiella dokumentationen.
din NTP-demonkonfigurationsfil ska nu se ut som följande, även om filen kan ha ytterligare kommentarer, som du säkert kan bortse från:
driftfile /var/lib/ntp/ntp.driftrestrict default nomodify notrap nopeer noquery kod limitedrestrict 127.0.0.1restrict ::1server ntp_server_hostname_1 iburstserver ntp_server_hostname_2 iburstserver ntp_server_hostname_3 iburstserver ntp_server_hostname_4 iburstserver ntp_server_hostname_5 iburst
spara filen och avsluta redigeraren.
Starta nu om NTP-tjänsten och låt din tidsserver synkronisera klockan till uppströmsservrarna.
- sudo systemctl restart ntpd
efter några minuter, kontrollera hälsan på din tidsserver med kommandot ntpq
:
- ntpq -p
utgången ska se ut som den här:
Output remote refid st t when poll reach delay offset jitter============================================================================== mizbeaver.udel. .INIT. 16 u - 64 0 0.000 0.000 0.000 montpelier.ilan .GPS. 1 u 25 64 7 55.190 2.121 130.492+nist1-lnk.binar .ACTS. 1 u 28 64 7 52.728 23.860 3.247*ntp.okstate.edu .GPS. 1 u 31 64 7 19.708 -8.344 6.853+ntp.colby.edu .GPS. 1 u 34 64 7 51.518 -5.914 6.669
fjärrkolumnen berättar värdnamnet för servrarna som NTP-demonen använder, och kolumnen refid berättar källan som servrarna använder. Så för stratum 1-servrar ska refid-fältet Visa GPS, PPS, ACTS eller PTB, och Stratum 2 och högre servrar visar IP-adressen för uppströmsservern. St-kolumnen visar stratum, och delay, offset och jitter berättar om kvaliteten på tidskällan. Lägre värden är bättre för dessa tre fält.
din tidsserver kan nu tjäna tid för allmänheten. Du kan verifiera detta genom att ringa ntpdate
från en annan värd:
- ntpdate -q your_server_ip
utgången ska se ut som den här och den berättar att den justerade tidsservern och förskjutningen:
Outputserver your_server_ip, stratum 2, offset 0.001172, delay 0.16428 2 Mar 23:06:44 ntpdate: adjust time server your_server_ip offset 0.001172 sec
du är nu redo att registrera din NTP-server med NTP Pool Project så att andra kan använda den.
steg 4-lägga till servern i NTP-poolen
för att lägga till din server så att andra kan använda den, besök manage.ntppool.org och registrera dig för ett konto. Du kommer att få ett e-postmeddelande från NTP Pool [email protected] begär att du verifierar ditt konto. Bekräfta ditt konto genom att följa instruktionerna i e-postmeddelandet och logga sedan in på manage.ntppool.org.
när du är inloggad ser du det enkla gränssnittet för att lägga till servrar:
ange serverns IP-adress och klicka på Skicka.
nästa skärm ber dig att verifiera att den identifierade regionen på din server. Om den visar din server i en annan region än du förväntar dig, använd kommentarrutan för att meddela dem.
om du är nöjd, bekräfta posten genom att klicka på Ja, det här är min server, Lägg till den!
din server är nu en del av NTP Pool-projektet. Besök http://www.pool.ntp.org/scores/your_server_ip
för att se information som NTP-poolens övervakningssystem har samlat in om din server. Den kontrollerar din server några gånger per timme och visar offsetdata, alog med poängen i ditt system. Så länge din server håller god tid och kan nås, kommer poängen att stiga tills den når 20 poäng. Endast servrar med högre poäng än 10 används i poolen.
felsökning anslutningsproblem
om du har problem med att få din server att synkronisera kan du ha en paket brandvägg på plats släppa dina utgående paket på port 123
. Ta en titt på hur du ställer in en brandvägg med FirewallD på CentOS 7 för att lära dig hur du kontrollerar brandväggens status.
om NTP Pool projektets övervakningsstation inte kan nå din NTP-server och din server poäng går ner, eller om du inte kan använda din server för att synkronisera någon annan klocka, kan du ha ett paket brandvägg på plats släppa inkommande trafik på port 123
. Kontrollera din brandväggsstatus.
om du är säker på att du inte har någon brandvägg på plats, eller om du har öppnat port 123
för både inkommande och utgående trafik, kan din serverleverantör eller en annan transitleverantör släppa dina paket på vägen. Om du inte har kunskapen att lösa dessa problem på egen hand är det bäst att vända sig till samhället och nå hjälp. NTP Pool Projects forum är ett bra ställe att börja. Du kan också gå med i e-postlistan eller skicka en emaill till NTP-Poolprojektoperatören. Se bara till att du kan visa alla steg du redan har försökt lösa problemet innan du ber om hjälp.
slutsats
i den här handledningen har du framgångsrikt ställt in din egen tidsserver och gjort den till medlem i NTP-Poolprojektet, som serverar tid till samhället. För att hålla kontakten med den tidsbevarande gemenskapen. gå med i NTP Pool Projects forum eller e-postlistan. Var noga med att övervaka serverns poäng och göra nödvändiga justeringar.