Yerel bir NTP sunucusunu nasıl ayarlarım?


16

Ubuntu Server 10.04 üzerinde NTP sunucusunu kullanarak kurdum:

sudo apt-get install ntp

NTP arka plan programı 123 bağlantı noktasında çalışıyor ve dinliyor gibi görünüyor.

Ancak, zamanı başka bir makineden alamadım:

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

Yapılması gereken herhangi bir yapılandırma var mı?

Yanıtlar:


20

İşte Ubuntu forumlarından iyi bir nasıl yapılır: http://ubuntuforums.org/showthread.php?t=862620

Güzel kokulu makarna:

NASIL: NTP Sunucusu Kurma

Bu öğreticide, makinenizi yerel Ağ Zaman Protokolü (NTP) sunucusu olarak nasıl ayarlayacağınız ve / veya NTP arka plan programının düzenli olarak doğru bir sistem saatini korumak için nasıl kullanılacağı açıklanmaktadır.

NTP nedir?

Ağ Zaman Protokolü (NTP), yerel saat saatlerini ağa bağlı zaman sunucularıyla doğru bir şekilde senkronize etmek için tasarlanmış bir protokoldür. NTP zaman sunucuları ağı, herhangi bir kullanıcının sisteme belirli bir düzeyde sunucu olarak girebileceği şekilde hiyerarşik bir şekilde ayarlanır (daha fazla bilgi için Wikipedia sayfasına bakın).

NTP hiyerarşisi, saat katmanı adı verilen farklı düzeylere ayrılmıştır. En doğru seviye, Stratum 0, atomik saatler için ayrılmıştır. Bir sonraki seviye, Stratum 1, genellikle Stratum 0 saatlerine yerel olarak bağlı ağa bağlı makineler tarafından kullanılır. Tabaka 2 ... 15, daha düşük seviyeli saatlere ve birbirine bağlı NTP makineleridir.

Bu kılavuz, Stratum 1 ve 2 makineleriyle doğru bir şekilde nasıl senkronize edileceğini ve gün boyunca sistem saatinin mümkün olduğunca doğru bir şekilde nasıl korunacağını açıklamaktadır. Ayrıca, makinenizin yerel ağınızdaki diğer makineler için bir Stratum 2/3 sunucusu olarak çalışmasına nasıl izin verileceği konusunda bölümler de bulunmaktadır.

Bir NTP sunucusu yapmam gerekiyor mu?

Kesinlikle değil! Ağınızdaki standart saatten (ve birbirinden) bilinmeyen bir fark gösteren saatlerden memnunsanız, bir NTP sunucusu ayarlamanız gerekmez. Biyomühendislik deneyi için yerel ağdaki birden fazla makineyi <1 ms içinde senkronize etmek için dizüstü bilgisayarımda bir tane kurdum. Ek olarak aşağıda açıklanan çeşitli başka avantajlar da vardır.

Motivasyon:

Düzenli olarak değiştirilmemiş Ubuntu kutuları /usr/sbin/ntpdate, saati belirli bir harici zaman sunucusuyla periyodik olarak senkronize etmek için ntpdate ( ) kullanır. Bu yaklaşım saati bir kurs çözünürlüğü ile senkronize eder (genellikle günde bir kez).

Bilgisayar saatleri kusurludur ve gün boyunca (doğru) zaman sunucusundan kayacaktır. Ayrıca, farklı bilgisayarların saatlerindeki sapma oranları farklıdır, böylece günün sonunda, belirli operasyonlara müdahale edebilecek farklı yerel olarak ağa bağlanmış makineler arasında önemli farklılıklar olabilir (örneğin, kaynak kodu arasında hareket ederken hiç bir şikayette bulunabilirsiniz farklı makineler?).

NTP arka plan programını ağınızdaki bir makinede yerel olarak çalıştırmak mümkündür. Bunun birçok avantajı vardır: Birincisi, NTP arka plan programı yavaş yavaş yerel makinenizin kayma oranını "öğrenir" ve gün boyunca bunu düzeltebilir. Üst seviye zaman sunucuları ile senkronizasyon günde birkaç kez gerçekleşir ve senkronizasyonu daha doğru hale getirmek için birçok farklı zaman sunucusu aynı anda kullanılabilir. Bu şekilde, NTP arka plan programı, doğru bir zaman istemcisi gibi davranarak sistem saatinizi standart süreye olabildiğince yakın tutar.

Doğru bir sistem saatini korumanın yanı sıra, NTP arka plan programı ağınızdaki bir makinenin (isterseniz) NTP zaman sunucusu olarak çalışmasına izin verir. Bunu yapmak, yerel ağınızdaki diğer makinelerin LAN gecikme sunucunuzla çok hızlı ve doğru bir şekilde senkronize olmasını sağlar, çünkü ağ gecikmesi en aza indirilir. Bu şekilde, ağınızdaki makineler arasındaki saat farkları olabildiğince az tutulur. Mac ve hatta Windows kutuları da bir NTP sunucusuyla senkronize edebilir, bir tane ayarlarsanız.

Bir makineyi NTP sunucusu olarak kurmak için başka, daha az kişisel motivasyonlar vardır. İlk olarak, LAN'ınızdaki diğer makineler yerel olarak kurulmuş bir zaman sunucusuyla senkronize olabileceğinden, daha yüksek NTP sunucularındaki yükü azaltabilir. Ayrıca, ntpdate, ntpd için -q bayrağını (lehine işlevini taklit eder) kullanma lehine kullanımdan kaldırılmıştır. Böylece, ntpd'yi arka planda sürekli olarak çalıştırmak istemeseniz bile, ntpdate sonunda ntpd ile değiştirilecektir, bu yüzden şimdi ona aşina olmak isteyebilirsiniz

Ntpd ile Doğru Sistem Saatini Koruma

  1. NTP arka plan programını yükleyin

İlk olarak, NTP arka plan programını (ntpd) yükleyin:

sudo aptitude install ntpd

Daha önce de belirtildiği gibi, ntpd hem istemci (sistem saatinizi senkronize etme) hem de sunucu (diğer makineler için doğru zaman sağlama) görevi görebilir.

İsteğe bağlı olarak, önceki (kullanımdan kaldırılmış) zaman senkronizasyon programını (ntpdate) kaldırmak da isteyebilirsiniz. Belki ntpd çalıştıktan sonra bunu yapmak daha akıllıca olabilir

sudo aptitude remove ntpdate
  1. Daemon'u doğru şekilde yapılandırın

Ntpd için yapılandırma dosyası şurada bulunur: /etc/ntp.conf . Varsayılan Ubuntu dosyası muhtemelen en iyi performans için bazı değişiklikler gerektirir.

Değiştirmek isteyebileceğiniz ilk bölüm, senkronize edilecek sunucuların listesidir. Varsayılan bölüm muhtemelen aşağıdaki gibi görünür:

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

Mümkün olan en doğru zamanı elde etmek için, birden fazla farklı NTP sunucusuyla iletişim kurmak ve bunları mümkün olduğunca fiziksel konumunuza yakın tutmak tercih edilir. Çevrimiçi çeşitli sunucu listeleri vardır, muhtemelen en iyisi burada bulunur. Kullanılacak uygun sunucu sayısı konusunda bazı tartışmalar vardır. Biri ikiden daha iyidir ve çok fazla gitmediğiniz sürece üç veya daha fazla muhtemelen iyi bir fikirdir. Kullandığım birkaç zaman sunucusuna bir örnek:

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

Birkaç iyi sunucu bulunduğunda, onları 'iburst'en umut verici olanı koyarak listeye ekleyin . Örneğin:

server nist1-dc.WiTime.net iburst

Bu, ntpd'nin başlatıldıktan sonra bu sunucu ile çok hızlı eşitlenmesine neden olur. Aksi takdirde, ntpd yavaş yavaş sunucu listesiyle (doğası gibi) anlaşmaya doğru kayma eğilimi gösterir ve ağınızın geri kalanı için bir zaman sunucusu olarak işlev görecek kadar iyi senkronize edilmesi 15-20 dakika sürebilir.

Ayrıca, İnternet bağlantısını geçici olarak kaybetmeniz durumunda, geçerli yerel saatinizi varsayılan olarak sağlamak için sunucu listenizin altına birkaç satır daha ekleyin:

server 127.127.1.0
fudge 127.127.1.0 stratum 10

Bu, ntpd'yi bir dizüstü bilgisayarda veya İnternet'ten aralıklı olarak kesilen sürelerle başka bir makinede çalıştırıyorsanız herhangi bir sıkıntıyı önleyecektir.

Sonuç olarak, sunucu listesi aşağıdakine benzer olmalıdır (bu benim, sunucularınız muhtemelen farklı olacaktır):

# 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. Yapılandırmanın çalıştığından emin olun

/etc/ntp.confDosyanızda uygun bir sunucu listesine sahip olduğunuza göre , arka plan programı çalıştırma ve düzgün senkronizasyon yapıp yapmadığınızı görmenin zamanı geldi! Etkin bir İnternet bağlantınız olduğundan emin olun ve çalıştırın:

sudo /etc/init.d/ntp restart

Ardından, bir zaman sunucusuyla senkronize edilip edilmediğinizi görmek için sistem günlüğünüzü izleyin:

tail -f /var/log/syslog

Yaklaşık 10-15 saniye içinde (veya favori sunucunuzdan sonra 'iburst' koymayı unuttuysanız 15-20 dakikaya kadar), sistem günlüğünüzde aşağıdakine benzer bir şey görmelisiniz:

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

Bu mesaj hiçbir zaman gelmezse, henüz NTP sunucu ağı ile düzgün senkronize olmadınız. Aşağıdakileri kullanarak iletişim kurduğunuz NTP eşlerinin listesini kontrol edin:

ntpq -c lpeer

'Gecikme', 'ofset' ve 'titreşim' alanları sıfırdan farklıysa ve senkronize edilmediyseniz, muhtemelen bir süre beklemeniz gerektiği anlamına gelir. 'İburst' argümanını sunucu listenize eklediğinizi tekrar kontrol edin! Referanslarım, referans olarak, aşağıdaki gibi bir şeye benziyor:

     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. Paylaş! (isteğe bağlı)

Ntpd çalıştırıldığında ve seçtiğiniz zaman sunucularıyla senkronize edildikten sonra, diğer makineler için zaman sunucusu olarak çalışmak üzere ayarlayabilirsiniz. Bunu yapmak için aşağıdakine benzer bir bölüm ekleyin /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. Senkronize! (isteğe bağlı)

1-4 arası adımları kullanarak bir NTP sunucusu ayarladıktan sonra, ağınızdaki diğer makineleri sunucunuzla çeşitli şekillerde senkronize edebilirsiniz. Bunlardan birkaçını aşağıda özetliyorum:

ntpd:

Başka bir makineye ntpd yüklüyse, ntp.conf dosyanızın sunucular listesindeki ilk sunucunuzu kullanabilir veya bir kez -q seçeneğiyle aşağıdaki gibi senkronize edebilirsiniz:

ntpd -q [IP address of your server]

ntpdate:

Hala başka bir makineye ntpdate yüklüyse, sunucunuzla aşağıdaki gibi senkronize etmek için kullanabilirsiniz:

ntpdate [IP address of your server]

Not: Bir makinede ntpd çalıştırıyorsanız ve herhangi bir nedenle hala zamanı ayarlamak için ntpdate kullanmak istiyorsanız, -u seçeneğini kullanmanız gerekir.

Pencereler:

Windows makineleri, Basit Ağ Zaman Protokolü (SNTP) adı verilen basitleştirilmiş bir NTP sürümü kullanır ve NTP sunucularıyla eşitlenebilir. Yeni sunucunuzla senkronize etmek için, saati çift tıklayın ve "İnternet Saati" sekmesine gidin. Sunucunuzun IP adresini "Sunucu" alanına girin. Herkes ilgileniyorsa, bir LAN zaman sunucusuyla senkronize olan Windows XP'nin bir ekran görüntüsünü ekledim.

Bu kadar! Tüm süreç zor değil, ancak daha önce NTP ağı ile fazla uğraşmamış biri için kafa karıştırıcı olabilir. Umarım bu yardımcı olur! Sunucunuzu kurarken herhangi bir sorun yaşarsanız bize bildirin.

mikrofon

Bağlantılar

Aşağıdaki bağlantıları yararlı buldum ... sen de olabilir!

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


Bağlantı için teşekkürler. Aslında yapılandırmamı değiştirmedim! Bir süre sonra işe yaradı.
Khaled

ntp sunucunuzda ntpdate -s a_stratum_1_server_addresshemen senkronize edilmesini sağlamak için çalıştırabilirsiniz . daha sonra diğer (istemci) makinenizde 'ntpdate -q your_local_ntp_server` komutunu çalıştırmakserver your_local_ntp_server_ip, stratum 2, offset -0.012221, delay 0.02618
Keith Reynolds

Yalnızca bir bağlantı yanıtı güncel olmayabilir. Lütfen önemli bilgiyi cevaba ekleyiniz.
Zeta

5

Bununla ilgili birçok bağlantı var ve bana öyle geliyor ki prosedürü karmaşıklaştırıyorlar. Benim durumumda, bir proxy sunucusu ve bir güvenlik duvarı gibi davranan bir makinem var ve diğer tüm bilgisayarlarım internet üzerinden bu ağa bağlanıyor. Güvenlik duvarındaki bağlantı noktalarını açmak istemedim. Bu nedenle proxy sunucusu zaman (ntp) sunucusu ve diğer makineler ( istemciler) olmalıdır ) saati alması gerekir.

Tüm makinelere ntp'yi yüklemeniz ve hepsine de ntpq'yi yüklemeniz gerekir.

İlk olarak ntp'nin çalışıp çalışmadığına bakın. Varsayılan olarak, ntpd (ntp arka plan programı) yüklenir kurulmaz çalışır ve varsayılan değerlerin çalışması gerekir. Ancak, ntp anında çalışmaz, bu yüzden bir süre bekleyin. Ardından, komut:

ntpq -c lpeer

size şuna benzer bir çıktı vermelidir:

     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

veya:

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

Öyleyse, bağlandınız ve zaman sunucunuz zamanı alıyor. Değilse, kullanın

ps -e | grep "ntp" 

ntp'nin çalıştığından emin olmak için tekrar deneyin. Ayrıca ntp'yi yeniden başlatmayı deneyin:

sudo /etc/init.d/ntp restart

bağlantının kurulması biraz zaman alabilir (özür dileriz!). Daemon sunucuları çok sık yoklamaz. Yukarıdaki çıktıdaki "ne zaman" sütunu, sunucunun yoklanmasından bu yana geçen süreyi saniye cinsinden gösterir.

Şimdi, zaman sunucusunun zamanı diğer makinelerinize göndermesini sağlamalısınız.

Dosyayı /etc/ntp.confsunucuda düzenleyin. Ağınız için bir satır eklemelisiniz. Benim durumumda 10.0.0.0 ağım var. Ntp.conf dosyasında satırı ekledim:

broadcast 10.255.255.255

Ağınızın her bir segmenti için bir yayın satırı eklemelisiniz. Ağınız benimki gibi basitse, yukarıdaki gibi bir satır ihtiyacınız olan tek şeydir. Şimdi, yukarıdaki komutu kullanarak ntp'yi yeniden başlatın ve ntpq kullanarak tekrar kontrol edin ve şunları görmelisiniz:

     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, yayın yapıyor.

Şimdi, her istemci makinenin yayın sunucunuzdan zamanı almasını sağlamalısınız. Her birinde dosyayı düzenleyin:

/etc/ntp.conf

ve sunucuları belirten bazı satırlar göreceksiniz.

satır ekle

server 10.10.10.1

veya sunucunuzun adresi ne olursa olsun. Sonra yukarıdaki komutu kullanarak istemci makinede ntp'yi yeniden başlatın. Alternatif olarak, işlem kimliğini alıp öldürebilir ve yeniden çalıştırabilirsiniz. Her neyse.

Ardından, yeterli bir süre sonra ntpq ile kontrol edin:

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

ve istemcinin zaman sunucusunu kullandığını görebilirsiniz.

Bu biraz zaman alıyor.


ntpdate -s a_stratum_1_server_addressAnında sorgulamaya ve eşitlemeye zorlamak için ntp sunucunuzda çalışabilirsiniz .
Keith Reynolds

Bu yayın türü tüm anahtarlar tarafından destekleniyor mu? Örneğin UDP yayını çoğu anahtar / yönlendirici tarafından engelleniyor.
Tanasis

1

Kabul edilen cevap (Temmuz 2018'de olduğu gibi) benim için işe yaramadı. Bu diğer yöntem Temmuz 2018'de Ubuntu 16.04 LTS'de iyi çalıştı :

Yüklü değilse NTP'yi yükleyin :

sudo apt-get update
sudo apt-get install ntp

NTP hizmetinin istekleri almasına izin vermek için yapılandırma dosyasını düzenleyin:

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

Bu satırı kaldır:

# 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

için:

# 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

NTP hizmetini yeniden başlatın :

sudo /etc/init.d/ntp restart

Şimdi NTP sunucunuz çalışıyor olmalı ve başka bilgisayarların kendinizle senkronize olmasına izin vermelidir. Yukarıdaki testlerden herhangi biri, ntpdate -u YourComputergerektiği gibi çalışmalıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.