ip route get 2607:f8b0:4005:804::200e
はgoogle.com
への最良の(最長プレフィックス)ルートを表示しますが、そこに到達できるallルートは表示されません。
現在、私はip -6 route show | grep 2607:f8b0:
を使用しています。これにより、正しいルートが出力されますが、その/ 32内の他のすべてのルートも出力されます。
より良い方法が必要です。
Linuxですべてのルートmatchigプレフィックスを一覧表示する簡単な方法があります。
ip -6 route list match 2607:f8b0:4005:804::200e table all
これにより、指定されたターゲットへのすべての可能なルート(具体的なものが見つからない場合のデフォルトを含む)がすべてのテーブルに一覧表示されます。明らかに、これはIPv4でも機能します。
PS:私の答えは少し遅すぎることを知っています、そしておそらくあなたはすでにこれを自分で理解しているでしょう、しかしそれにもかかわらず-この質問に答える人は誰でもそれが役立つと思うかもしれません:)
私がこの権利を解釈している場合は、特定のipv6アドレス(google.com)がルーティングテーブルエントリ(ネットワーク/ネットマスク)に含まれているかどうかを確認し、含まれている場合はルートを印刷します。
もしそうなら、それから:
Google.comのipv6アドレスを取得します。例: _Host -t aaaa
_で
すべてのipv6ルートのリストを取得します。例えば_ip -6 route show
_で。または、ルーティングデーモンにリストを照会します。
各ipv6ルートについて、google.comのipv6アドレスがそのネットワークとネットマスク内に含まれているかどうかを確認します。
Perl _Net::CIDR
_モジュールには、IPアドレスがネットブロック(またはネットブロックの配列)にあるかどうかを確認するためのcidrlookup()
関数があります。ipv4アドレスとipv6アドレスの両方で機能します。 Perl
にはDNSルックアップを実行するための_Net::DNS
_モジュールもあり、おそらくさまざまなルーター/ルーティングデーモンからルーティングテーブルをフェッチするためのモジュールがあります-Perlにはモジュール(または2つまたは1ダース)があります)あなたが考えることができるほとんどすべてをすること。とにかく、_ip -6 route show
_の出力から必要なものを抽出するのは簡単です。
注:これは、ターゲットIPを含むネットワーク/マスクのルーティングテーブルに特定のルートがある場合にのみ一致を検索します。もちろん、「デフォルト」ルートにはすべてのIPが含まれています。
Perl
を使用したくない場合は、 libcidr もあります。自分で書くのはそれほど難しいことではありません(または誰かがすでに書いているかもしれません)。