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:
-
Adquira o endereço ipv6 do google.com, por exemplo, com host -t aaaa
-
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.
-
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).