프록시 뒤에 ntpdate를 사용하는 방법은 무엇입니까? 뒤에 ntpdate를 사용할 수 있습니까?

인증을 통해 HTTP 프록시 뒤에 ntpdate를 사용할 수 있습니까? 가능하지 않은 경우 좋은 대안이 있습니까?



답변

이것은 tlsdate의 경우처럼 보입니다.

 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.

인터넷에서 비위생 데이터를 sudo 호출에 대한 인수로 사용하라는 권장 사항을 본 적이 없다고 생각합니다.

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


답변

carveone의 답변 확대 :

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/,//')"

답변

짧막 한 농담

환경 변수 http_proxy이미 설정 되었다고 가정합니다 .

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

검색된 날짜 / 시간을 먼저 확인할 수 있습니다.

# 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)"    

노트

경우에 따라 다음과 같은 경우 특정 옵션이 필요할 수 있습니다 curl.

  • curl -x $proxy

    http_proxy환경 변수가 설정되지 않은 경우 프록시 서버가 명시 적으로 사용하도록 설정하려면 기본적으로 protocol httpand port 1080
    ( manual )로 설정하십시오.

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

    특히 cron 작업 및 / 또는 프록시 서버 뒤에서 사용될 때 캐싱 을 명시 적으로 비활성화 합니다.

출력에 “Z”를 추가하는 대신 ‘-u’옵션을 사용하는 RHEL 6으로 테스트 된 대체 양식 :

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

BTW, google.com이상이 바람직하다 www.google.com, 때문에에서 이전 결과 301(훨씬 작은 리디렉션 응답, 56920k+문자)하지만 사용에 여전히 좋아.


답변

순전히 HTTP 프록시 인 경우 포트 80을 사용하므로 기본 답변은 구체적이지 않습니다. NTP는 UDP 포트 123을 사용합니다.보다 일반적인 프록시 서버 인 경우 모든 포트를 제공합니다.

HTTP를 통해 NTP를 수행하는 일부 프로그램이 있습니다. 나는 리눅스를 사용하지 않지만 이것을 할 수도있다.

http://www.rkeene.org/oss/htp/ (여전히 인증을 수행할지 확실하지 않음)

Windows 용을 찾을 수 없지만 게시하면 다시 게시하겠습니다.


답변

http 프록시 서버를 사용하는 사람들을위한 빠르고 더러운 솔루션 :

내 위치는 GMT + 4이며 URL http://www.timeapi.org/utc/in+four+hours를 사용 하여 timeapi 서버에서 현재 시간을 확인할 수 있습니다. 자세한 내용은 웹 사이트에서 귀하의 위치에 대한 웹 사이트를 확인하십시오.

날짜 및 시간을 설정하려면 :

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 " " )

초기 ‘시간’명령이 높은 값을보고하면 명령을 반복 할 수 있습니다.


답변

NTP 서비스는 UDP 프로토콜을 사용하여 시간을 동기화합니다. 따라서 HTTP / TCP 프록시가 작동하지 않을 수 있습니다. 수락 된 답변 대신 프록시 뒤에 시간을 동기화 하는 좋은 htpdate 도구가 있습니다.

크론 작업 예 :

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

답변

http를 통한 ntp가 언급되었지만 아무도 http://www.vervest.org/htp/에서htpdate 사용할 수 있는 멋진 작은 유틸리티 를 언급하지 않은 것에 놀랐습니다 . 다른 방법과 달리 데비안과 우분투의 기본 리포지토리의 일부이며를 사용하여 설치할 수 있습니다 .htpdateapt-get

일반 명령으로 또는 데몬 모드에서 자동으로 실행할 수 있습니다.