Debian perdendo conexão Ethernet com fio após falta de energia

1

Eu tenho um servidor home debian headless (Jessie, 8.9). Ocasionalmente, temos quedas de energia. O problema é que o roteador não inicializa tão rápido quanto o servidor debian quando a eletricidade volta. O roteador precisa de 1 minuto para inicializar, mas o servidor é inicializado em ~ 10 segundos.

Meu servidor não inicia novas solicitações para o link ethernet depois que a inicialização da interface detectou que não há um link (o roteador não concluiu a inicialização, não aceita conexões ainda). Estou usando o IP estático definido no debian.

Como faço para configurar minha interface para verificar novamente mais tarde ou atrasar a inicialização por tempo suficiente para o roteador concluir a inicialização e aceitar a conexão?

    
por JCs 24.10.2017 / 21:04

3 respostas

2

Em vez de configurar um IP estático no servidor Debian, você pode definir uma configuração de IP estático através do servidor DHCP do roteador.

Alguns roteadores têm mais opções e alguns têm menos ... No entanto, normalmente é possível configurar o servidor DHCP do roteador para ter pelo menos um pool dinâmico de IPs e pelo menos alguns IPs estáticos. Desta forma, os IPs estáticos serão atribuídos a partir do servidor DHCP em vez dos clientes.

Na minha rede doméstica, eu configurei um servidor isc dhcp que roda em um netbook de reserva e desliguei o servidor dhcp do meu roteador. Se o seu servidor doméstico estiver sempre em execução sempre que alguém estiver usando a Internet, você provavelmente poderá executar o DHCP da LAN a partir do servidor.

Se você fizer isso, e se você decidir usar o ISC DHCP (o que eu recomendo), então você pode facilmente configurar hosts IPs estáticos vi o /etc/dhcpd.conf algo assim:

subnet 192.168.6.0 netmask 255.255.255.0 {
        pool {range 192.168.6.129 192.168.6.190; }
}

host workstation {
        hardware ethernet f4:8d:14:5c:4b:6a;
        fixed-address 192.168.6.60;
}

que fornece um pool dinâmico de tamanho adequado de .129 a .199 e um IP estático de .60

Ou ... talvez o seu roteador permita que você faça algo semelhante.

    
por 24.10.2017 / 21:50
2

O DHCP com a concessão estática é uma boa opção (eu também uso isso).

No entanto, outra coisa me veio à mente:

Debian Jessie está usando o Upstart.

  • Com o Upstart, você pode executar net init quando a conexão física estiver ativada.

OU ... e se você escrever um script que:

  • Pinga o roteador - se houver saídas bem-sucedidas
  • Se o ping for malsucedido, execute um ifdown e ifup
  • Talvez verifique se você está logado (e se sim, não faz ifdown)
  • Execute este script regularmente (a cada 2 ou 10 minutos do cron).
por 24.10.2017 / 22:14
0

Eu fiz um script que pinga o roteador periodicamente. Se o ping falhar, ele tentará recuperar a interface chamando ifdown e ifup com um pequeno atraso.

Observe que o ping do roteador não funciona se a interface estiver inativa, também ifup não funciona se a interface não foi fechada corretamente antes com ifdown .

A scipt é baseada em esta perguntas melhor resposta.

#!/bin/bash

timeout=30
pingip='192.168.1.1'
iface="eth0"
LOG_FILE="/var/log/pinglog"
isdown=0

while true; do
        LOG_TIME='date +%b' '%d' '%T'
        if ! ping -q -c 2 "$pingip" >> /dev/null ; then
                if [[ "$isdown" -eq 0 ]]; then
                        isdown=1
                        timeout=0
                        printf "$LOG_TIME $0: Interface %s is down!\n" "$iface" | tee -a $LOG_FILE
                fi
                ifdown $iface
                sleep 1
                ifup $iface
        else
                if [[ "$isdown" -eq 1 ]]; then
                        isdown=0
                        timeout=30
                        printf "$LOG_TIME $0: Interface %s is up!\n" "$iface" | tee -a $LOG_FILE
                fi
        fi
        sleep "$timeout"
done
    
por 25.10.2017 / 23:42