Alterando o servidor NTP com base nas conexões disponíveis

5

Por favor, consulte a ilustração.

Eu tenho duas máquinas em uma LAN, apenas uma delas tem uma conexão com a Internet (através de uma interface diferente). Servidor 1 tem um relógio de hardware de lixo. O servidor 2 tem um bom hardware RTC.

Infelizmente, o Servidor 1 geralmente tem uma conexão com a Internet, enquanto o que possui o bom hardware RTC não, portanto, dependendo do status da conexão com a Internet, o Servidor 1 é o mais preciso ou altamente confiável.

É importante que ambas as máquinas sejam mantidas em estreita sincronização entre si.

É possível que o sistema falhe automaticamente do cenário 1 para o cenário 2, talvez por meio de ajustes automatizados no estrato de cada máquina?

    
por EnemyBagJones 21.10.2016 / 01:21

1 resposta

2

Primeiro, é altamente improvável que você tenha permissão para acessar um servidor Stratum 1 , a menos que você seja conhecido dos administradores do servidor Stratum 1 e eles lhe deram permissão explícita para isso. Dito isto, o estrato desse servidor não importa para esta resposta, então eu vou me referir a essa máquina como o servidor de "baixo estrato" para maior clareza.

Você deve configurar server2 para obter seu tempo no servidor de baixa estratificação, não em server1 . Isso exigirá que ele seja capaz (pelo menos para NTP) de acessar o link da Internet em server1 . Se server2 não tiver um link para a Internet com o qual seria capaz de acessar o servidor de baixa estratificação, você poderá permitir que ele faça isso executando os seguintes comandos em server1 (como root):

iptables -A FORWARD -s server2 -p udp --dport 123 -j ACCEPT
iptables -A FORWARD -s server2 -p tcp --dport 123 -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sysctl -w net.ipv4.ip_forward=1

As duas primeiras linhas permitem o tráfego NTP do host server2 somente . Nota: Não tenho 100% de certeza de que as conexões TCP são necessárias, mas isso não deve atrapalhar. Você também pode querer adicionar -d lowstratumserver a essas duas linhas, para que esta máquina não consiga acessar nenhum outro servidor (apenas o de baixa estrato). A próxima linha permite retornar o tráfego das conexões estabelecidas. A quarta linha permite a conversão de endereços de rede. A linha final permite o encaminhamento de pacotes IP. Com estes, server1 é agora um roteador (mínimo).

Se server2 não tiver server1 como seu roteador padrão, você também precisará adicionar uma rota explícita para o servidor de baixa estratificação:

ip route add lowstratumserver via server1

Com isso, server2 usará server1 como seu roteador para conectividade de rede com lowstratumserver e seu roteador comum para todo o restante.

Em seguida, configure server2 para usar o servidor de baixa estratificação na Internet como sua origem NTP, não server1 .

Por fim, configure server1 para que ele se conecte a server2 , não ao servidor Stratum 1 na Internet.

Agora, server2 é sincronizado com o servidor de baixa estratificação na Internet, não com server1 ; e server1 irá sincronizar com server2 sempre, eliminando a necessidade de adicionar uma configuração de failover (que será frágil na melhor das hipóteses).

Isso vai te perder um pouco de precisão devido ao salto extra, mas é sempre melhor sincronizar as máquinas na sua rede local para uma máquina com um bom hardware RTC, ao invés de uma máquina com um de baixa qualidade. .

    
por 02.01.2017 / 14:33

Tags