Quando você tem uma configuração de rede complexa, é frustrante ter o “ Sem rota para o host ”Começa a aparecer depois de criar uma nova interface. Freqüentemente, isso ocorre devido à rota padrão ser alterada ou eliminada.
Para verificar sua rota padrão, digite
show de rota ip
Como mostrado acima, tenho três interfaces físicas, uma voltada para o exterior e duas para redes internas. A rota padrão caiu na rede quando uma conexão foi redefinida, fazendo com que o resto da minha rede operasse normalmente, com apenas esta máquina não sabendo onde acessar a Internet.
Para que a máquina consiga acessar a Internet ela precisa ter uma rota padrão que pode ser adicionada com o seguinte comando
sudo ip route add default via 136.63.176.1
Se você tiver esse problema surgindo mais de uma ou duas vezes, pode se tornar um incômodo, então escrevi alguns scripts de shell para corrigir rapidamente a situação.
O primeiro script irá buscar seu ip atual para você. Eu tenho $ INTF definido como STDIN, você pode alterá-lo para sua interface específica se não quiser inserir o nome da interface.
Usando seu editor de texto favorito, gosto do vim e tenho uma pasta de origem no meu diretório inicial
mkdir ~ / src && cd ~ / src
vim getip.sh
#! / bin / bash
#fetch endereço IP definido para determinado dispositivo
INTF = $ {1}
PTH = (~ / src /)
declarar TMP_IP2
TMP_IP2 = $ (ip a | grep $ {INTF} | grep inet | cut -d ”” -f6 | cut -d “/” -f1> $ {PTH} atual _ $ {INTF} .ip)
ip a | grep $ {INTF} | grep inet | cut -d ”” -f6 | cut -d “/” -f1 | cut -d ”.” -f1-3 | awk ‘{print $ 0 ″ .0 / 24 ″}’> $ {PTH} net _ $ {INTF} .ip
ip a | grep $ {INTF} | grep inet | cut -d ”” -f6 | cut -d “/” -f1 | cut -d ”.” -f1-3 | awk ‘{print $ 0 ″ .1 ″}’> $ {PTH} gw _ $ {INTF} .ip
declarar TMP_IP
TMP_IP = $ (cat $ {PTH} atual _ $ {INTF} .ip)
eco “ip wan atual $ TMP_IP”
Salve e saia, torne-o executável e teste-o.
sudo chmod a + x getip.sh
bash getip.sh eth0.2
Assumindo que funcionou corretamente para você, vá em frente e copie-o em / usr / local / bin / para torná-lo executável globalmente.
sudo cp getip.sh / usr / local / bin / getip
Agora posso simplesmente digitar getip eth0.2 e o ip será retornado.
O segundo script atribuirá a rota padrão, bem como executará o primeiro script.
vim setip.sh
#! / bin / bash
getip $ {1}
#fetch endereço IP definido para determinado dispositivo
PTH = (~ / src /)
declarar RT_IP
RT_IP = $ (cat $ {PTH} gw _ $ {1} .ip)
mudança de rota IP padrão via $ RT_IP
rota ip adicionar padrão via $ RT_IP
echo “ip route - padrão via $ RT_IP”
Salve e saia. Você deve ter notado que eu mudei e adicionei a rota padrão, isto é para ocasiões em que você configurou o gateway errado.
sudo chmod a + x setip.sh
sudo setip.sh eth0.2
Você pode verificar a tabela de roteamento novamente para verificar se tudo está bem.
sudo ip route show
Você pode copiar os scripts em / usr / local / bin / se desejar que eles sejam executáveis globalmente. Ele ainda exigirá sudo, pois você está modificando e fazendo a interface.
2 minutos lidossudo cp setip.sh / usr / local / bin / setip