Algo como o seguinte deve funcionar.
restrict default ignore
restrict 127.0.0.1 nomodify
restrict 192.168.2.102 mask 255.255.255.0 nomodify notrap noquery
server 192.168.2.102 burst iburst
server 127.127.1.0
fudge 127.127.1.0 stratum 10
Estou tentando obter um sistema sem acesso externo à Internet (A) para obter o tempo de outro sistema na LAN que faz (B).
No ntp.conf de A (a coisa toda está no final), adicionei:
server 192.168.2.102
restrict 192.168.2.102
Referindo-se ao IP de B. Depois de uma hora lendo páginas de manual, olhando exemplos online, etc., tanto quanto eu posso dizer isto deve significar que usará aquele servidor local, e confiará em qualquer coisa.
No entanto, isso não funciona. Eu posso assistir os dois tempos de troca em wireshark
e executar ntpq -p
em A mostra:
remote refid st t when poll reach delay offset jitter
==============================================================================
192.168.2.102 .INIT. 16 u 16 64 0 0.000 0.000 0.000
Se eu parar ntpd
em A e tentar ntpd -gq
, eu posso assistir novamente em frente e para trás em wireshark, mas depois de um minuto ou dois o tempo de espera é esgotado com "Nenhum servidor encontrado".
Eu até tentei adicionar ao conf de A:
fudge 192.168.2.102 stratum 1
Não faz nenhuma diferença.
Como posso forçar o ntpd a definir a hora de um servidor específico? Parece que isso costumava ser bastante fácil usando ntpdate
- que é depreciado e não existe no sistema.
Aqui está o arquivo ntp.conf completo para a máquina A. Este é o estoque Debian wheezy. As únicas mudanças que fiz foram adicionar as linhas envolvendo 192.168.2.102, e comentar os servidores do pool de debian para tentar eliminar a confusão lá, então eles são inacessíveis de qualquer maneira.
# /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for help
driftfile /var/lib/ntp/ntp.drift
# Enable this if you want statistics to be logged.
#statsdir /var/log/ntpstats/
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable
# You do need to talk to an NTP server or two (or three).
#server ntp.your-provider.example
server 192.168.2.102
restrict 192.168.2.102
fudge 192.168.2.102 stratum 1
# pool.ntp.org maps to about 1000 low-stratum NTP servers. Your server will
# pick a different set every time it starts up. Please consider joining the
# pool: <http://www.pool.ntp.org/join.html>
#server 0.debian.pool.ntp.org iburst
#server 1.debian.pool.ntp.org iburst
#server 2.debian.pool.ntp.org iburst
#server 3.debian.pool.ntp.org iburst
# Access control configuration; see /usr/share/doc/ntp-doc/html/accopt.html for
# details. The web page <http://support.ntp.org/bin/view/Support/AccessRestrictions>
# might also be helpful.
#
# Note that "restrict" applies to both servers and clients, so a configuration
# that might be intended to block requests from certain clients could also end
# up blocking replies from your own upstream servers.
# By default, exchange time with everybody, but don't allow configuration.
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
# Local users may interrogate the ntp server more closely.
restrict 127.0.0.1
restrict ::1
# Clients from this (example!) subnet have unlimited access, but only if
# cryptographically authenticated.
#restrict 192.168.123.0 mask 255.255.255.0 notrust
# If you want to provide time to your local subnet, change the next line.
# (Again, the address is an example only.)
#broadcast 192.168.123.255
# If you want to listen to time broadcasts on your local subnet, de-comment the
# next lines. Please do this only if you trust everybody on the network!
#disable auth
#broadcastclient
Algo como o seguinte deve funcionar.
restrict default ignore
restrict 127.0.0.1 nomodify
restrict 192.168.2.102 mask 255.255.255.0 nomodify notrap noquery
server 192.168.2.102 burst iburst
server 127.127.1.0
fudge 127.127.1.0 stratum 10
Eu consegui que funcionasse, então, para a posteridade, alguém em #ntp
(freenode) disse que a máquina A pode não ficar feliz se B não se relatar como sincronizado. Isso pode ser observado com ntpq -p
em B não mostrando nenhum servidor prefixado com um asterisco.
Fudging de uma fonte local em B (que realmente sincroniza, pelo exame do clock do sistema) corrigiu que:
server 127.127.1.0
fudge 127.127.1.0 stratum 10
No entanto, é importante não fazer isso em A , já que ele irá confiar no estrato 10 mais do que o que conta a máquina "localmente sincronizada" B