Ntdat proxy arkasında nasıl kullanılır?


49

Ntdate'i kimlik doğrulamalı bir HTTP proxy arkasında kullanmak mümkün müdür? Mümkün olmadığı takdirde, iyi alternatifler var mı?


Hangi işletim sistemi lütfen?
KCotreau

Benim durumumda Linux (bunun çok önemli olduğunu sanmıyorum).
Ton van den Heuvel

Sadece önemliydi çünkü Windows için uzaktan bir şey bulmak daha zordu. Kullandığım anahtar arama, daha fazla arama yapmak istemeniz durumunda, "HTTP üzerinden NTP" idi.
KCotreau

3
Bir HTTP proxy'sinin arkasındaysanız, muhtemelen bir şirkette olduğunuz anlamına gelir ve bu şirket kendi NTP servislerini sağlayabilir.
Tristan,

Yanıtlar:


29

Bu tlsdate için net bir durum gibi görünüyor.

 tlsdate: secure parasitic rdate replacement

  tlsdate sets the local clock by securely connecting with TLS to remote
  servers and extracting the remote time out of the secure handshake. Unlike
  ntpdate, tlsdate uses TCP, for instance connecting to a remote HTTPS or TLS
  enabled service, and provides some protection against adversaries that try
  to feed you malicious time information.

İnternetten gelen sansızlaştırılmış verilerin bir sudo çağrısı argümanı olarak kullanılması için pek çok öneri gördüğümü sanmıyorum.

Github: https://github.com/ioerror/tlsdate


1
Bu cevap gerçekten en üstte olmalı.
Pi Delport

Çalıştırmayı başaramadım - her birleşimle yanlış tıkırtılar hakkında hatalar yazdırıyor. Aşağıdaki wget cevabı işe yarıyor.
Hi-Angel

Centos6.9 makinesinde çalışıyordum ama neşe yoktu. Bu diğer tavsiyelere göre daha sağlıklı görünüyor, ancak çalışmasını sağlamak önemsiz değil ...
Alfabravo

46

Üzerine Genişleyen carveone tarafından cevap :

sudo date -s "$(wget -S  "http://www.google.com/" 2>&1 | grep -E '^[[:space:]]*[dD]ate:' | sed 's/^[[:space:]]*[dD]ate:[[:space:]]*//' | head -1l | awk '{print $1, $3, $2,  $5 ,"GMT", $4 }' | sed 's/,//')"

Dikkat, bu geçerli dizinde 'index.html *' dosyası oluşturur.
ryenus

Kısa versiyonun, google.com’un 301 üzerinden "sıkışmış" olduğu bir tarihe yönlendirdiği için www.google.com’u kullanması gerektiğini unutmayın
Hansi

Yorum yaptığımda bu komutun cevabı eskiden dört gün sonra geri döndü.
Hansi,

@ ryenus Bu harika bir cevap. Mükemmel çalışıyor. Ancak bu komutu bir crontab işine koyduğumda bir sorunum var. Bu iş ne zaman yapılırsa, tarihin saat kısmı 00:00:00 da yapılır. Bir kabuk komut dosyasında çalıştırmayı denedim. Aynı sonuç.
huzeyfe

@huzeyfe, proxy'nin kıvrılma işine geçip geçmediğini kontrol eder misiniz ?
ryenus

21

Bir astar

Ortam değişkeninin zaten ayarlanmışhttp_proxy olduğunu varsayarak :

sudo date -s "$(curl -H'Cache-Control:no-cache' -sI google.com | grep '^Date:' | cut -d' ' -f3-6)Z"

önce alınan tarihi / saati doğrulayabiliriz:

# local  date/time
date -d "$(curl -HCache-Control:no-cache -sI google.com | grep '^Date:' | cut -d' ' -f3-6)Z"

# or UTC date/time
date -ud "$(curl -HCache-Control:no-cache -sI google.com | grep '^Date:' | cut -d' ' -f3-6)"    

notlar

Sadece durumda, bazı seçenekler için gerekli olabilir curl:

  • curl -x $proxy

    Proxy sunucusunu, http_proxyortam değişkeni ayarlanmadığında varsayılan olarak protokol httpve bağlantı noktası 1080 ( manuel ) olarak kullanmak üzere açıkça ayarlamak için .

  • curl -H 'Cache-Control: no-cache'

    özellikle bir cron işinde ve / veya bir proxy sunucusunun arkasında kullanıldığında önbelleğe almayı açıkça devre dışı bırakmak için .

Çıkışa "Z" eklemek yerine, '-u' seçeneğini kullanan RHEL 6 ile test edilmiş alternatif form:

sudo date -u --set="$(curl -H 'Cache-Control: no-cache' -sD - http://google.com |grep '^Date:' |cut -d' ' -f3-6)"

BTW, google.comtercih edilir www.google.comçünkü eski 301, çok daha küçük ( karakterlere 569karşı 20k+) ancak yine de kullanımı iyi olan bir yönlendirme yanıtı verir.


sudo date -s "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z"
ryenus

^ yukarıdaki wgetsürümü, kişisel olarak kullanmayı tercih etmeme rağmen curl.
ryenus

2
Doğrulanmamış verileri internetten bir sudo çağrısına değişken olarak mı aktarıyorsunuz? 1999 mı?
dfc

2
Ya da sadece tlsdate kullanın ve bunun gibi pis pisliklere güvenmeyin.
dfc

evet, vekillerle çalışır. Ben de soruyu okudum.
dfc

5

Tamamen bir HTTP proxy ise, 80 numaralı bağlantı noktasını kullanıyor, bu nedenle temel cevap buna özel değil. NTP, 123 numaralı UDP bağlantı noktasını kullanır. Daha genel bir proxy sunucusuysa, tüm bağlantı noktalarına hizmet eder, o zaman belki.

HTTP üzerinden NTP yapan bazı programlar var. Linux kullanmıyorum, ancak bunu yapabilir:

http://www.rkeene.org/oss/htp/ (bunun da kimlik doğrulaması yapıp yapmadığından emin değilsiniz).

Windows için bir tane bulamadım, ancak yaparsam geri göndereceğim.


Yine Linux için bir bağlantıdan başka bir şey ekleyemiyorum : mina86.com/2010/01/16/ntp-over-http Ayrıca bunlardan birinin yayınladığı bir şey olabilir: nist.gov/pml/div688/grp40/ softwarelist.cfm
KCotreau

NTP üzerinden HTTP bağlantısı ilham veriyor, bunun için teşekkürler!
Ton van den Heuvel

5

Http proxy sunucusunun ardındaki insanlar için hızlı ve kirli bir çözüm:

Konumum GMT + 4, şu anki saati timeapi sunucusundan url ile kontrol edebilirim: http://www.timeapi.org/utc/in+four+hours , daha fazla bilgi için lütfen bulunduğunuz yerin web sitesini kontrol edin.

Tarih ve saati ayarlamak için:

time sudo date $(wget -O - "http://www.timeapi.org/utc/in+four+hours" 2>/dev/null | sed s/[-T:+]/\ /g | awk '{print $2,$3,$4,$5,".",$6}' | tr -d " " )

İlk 'zaman' komutu yüksek bir değer bildirirse komutu tekrarlayabilirsiniz ...


Bahşiş için teşekkürler, daha da kolaylaştı: sudo date -s "$(curl -s http://www.timeapi.org/utc/now)"İşletim sisteminiz doğru ayarlanmışsa saat dilimine dikkat etmeniz gerekmez. Linux dizede verilen zaman dilimini tanır ve sistem saatini uygun şekilde ayarlar.
Melebius

2

NTP servisi, zamanı senkronize etmek için UDP protokolünü kullanıyor. Bu yüzden HTTP / TCP proxy bunun için çalışmayabilir. Kabul edilen cevaba alternatif olarak, vekilin ardındaki zamanı senkronize etmek için iyi bir htpdate aracı var.

Bir cron işi örneği:

* 3 * * * /usr/bin/htpdate -s -P <PROXY_HOST>:<PROXY__PORT> www.linux.org www.freebsd.org

2

Http üzerinden ntp'den bahsedilse de, hiç kimsenin http://www.vervest.org/htp/ adresindehtpdate bulunan çok küçük bir yardımcı programdan bahsetmediğine şaşırdım . Alternatiflerin aksine, Debian'ın ve Ubuntu'nun varsayılan depolarının bir parçasıdır ve kullanılarak yüklenebilir .htpdateapt-get

Daemon modunda sıradan bir komut olarak veya sessizce çalıştırılabilir.


Yukarıdaki cevabımı kontrol et.
artificerpi

1

http_proxyOrtam değişkeninin ayarlandığı varsayılarak :

wget -S --spider "http://www.google.com/" 2>&1 | grep -E '^[[:space:]]*[dD]ate:' | sed 's/^[[:space:]]*[dD]ate:[[:space:]]*//'

Ya da kullan curl -I --proxy="..." "http://www.google.com/"

Ne de olsa, Google’ın sitesi zaman ayarlamamışsa umut yoktur.


1

Https://superuser.com/a/509620/362156 adresinde genişletiliyor

Farz edelim ki Berlin’de (Almanya).

O zaman bunu kullan:

sudo TZ=Europe/Berlin date -s "$(TZ=Europe/Berlin date --date='TZ="UTC" '"$(wget -S  "http://www.google.com/" 2>&1 | grep -E '^[[:space:]]*[dD]ate:' | sed 's/^[[:space:]]*[dD]ate:[[:space:]]*//' | head -1l | awk '{print $1, $3, $2,  $5 , $6, $4 }' | sed 's/,//')")"

Çözümünüzde neyin farklı olduğunu fiford_g tarafından verilen cevaba göre açıklamalısınız.
pabouk

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.