Listar * todas as rotas IP para um destino na tabela de roteamento do Linux

3

ip route get 2607:f8b0:4005:804::200e mostrará a melhor rota (prefixo mais longo) para google.com , mas não mostra todas as rotas que podem me levar até lá.

Agora estou usando ip -6 route show | grep 2607:f8b0: . Isso imprime as rotas corretas, mas também imprime todas as outras rotas nesse / 32.

Tem que haver uma maneira melhor.

    
por Navin 18.07.2016 / 14:42

2 respostas

7

Existe uma maneira fácil de listar todas as rotas com o prefixo matchig no linux:

ip -6 route list match 2607:f8b0:4005:804::200e table all

Isso listará todas as rotas possíveis para o destino especificado (incluindo o padrão, se não houver mais específico) em todas as tabelas. Obviamente, isso funciona para o IPv4 também.

PS: Eu sei que a minha resposta é um pouco tarde demais, e muito provavelmente você já percebeu isso por conta própria, mas mesmo assim - quem acertar essa pergunta pode achar útil:)

    
por 04.05.2017 / 16:04
0

Se eu estiver interpretando esse direito, você desejará descobrir se um determinado endereço IPv6 (google.com) está contido em uma entrada da tabela de roteamento (rede / máscara de rede) e imprimir a rota, se for.

Se sim, então:

  1. Adquira o endereço ipv6 do google.com, por exemplo, com host -t aaaa

  2. Obtenha uma lista de todas as rotas do ipv6. por exemplo. com ip -6 route show . ou consulte seu daemon de roteamento para obter uma lista.

  3. Para cada rota ipv6, verifique se o endereço ipv6 do google.com está contido nessa rede e na máscara de rede.

O módulo perl Net::CIDR tem uma função cidrlookup() para verificar se um endereço IP está em um bloco de rede (ou matriz de blocos de rede) - funciona com endereços ipv4 e ipv6. perl também tem um módulo Net::DNS para fazer pesquisas de DNS e provavelmente tem módulo (s) para buscar tabelas de roteamento de vários roteadores / daemons de roteamento - perl tem um módulo (ou dois. ou uma dúzia) para fazer quase qualquer coisa você pode pensar. É fácil o suficiente extrair o que você precisa da saída de ip -6 route show .

NOTA: isso só encontrará correspondências onde haja uma rota específica em sua tabela de roteamento para uma rede / máscara que contenha seu IP de destino. A rota "padrão" contém todos os IPs, é claro.

Se você preferir não usar perl , também há libcidr . Não deve ser muito difícil escrever o seu próprio (ou alguém já pode ter feito isso).

    
por 19.07.2016 / 12:40