ルーティングにはBGPを使用して2つのISPに接続されているルーター(Linuxを実行)がありますが、各接続を個別にping /追跡したいと思います。
標準のTracerouteコマンドはこれを行うことができるように見えますが(発信インターフェイス、送信元IPの選択を許可する)、ゲートウェイの選択は許可されません。コマンドラインオプション(-g)がありますが、ここで行うことは単にパケットを送信するのではなく、IPルーティングオプションを設定するだけです。
私が望むものは次のとおりです。私のルーターには、10.0.0.1(最初のISPで提供)、10.1.0.1(2番目のISPで提供)という2つのIPがあるとします。最初のISPのデフォルトゲートウェイ(次のホップ)は10.0.0.254、2番目のISPのデフォルトゲートウェイは10.1.0.254です。そのうちの1つが現在デフォルトゲートウェイ(BGP経由)として選択されていますが、他のゲートウェイでもトレース/ピングを使用できるようにしたいと思います。ルーティングテーブルを変更することはできません(特に他のISPに問題がある場合は切断されません)。
Traceroute_oth --nexthop 10.0.0.254 8.8.8.8 は以下を提供する必要があります。
1 10.0.0.254
2 some-iother-ip.first-isp.com
...
x 8.8.8.8
Traceroute_oth --nexthop 10.1.0.254 8.8.8.8 は以下を提供しなければなりません。
1 10.1.0.254
2 some-ip.second-isp.com
...
x 8.8.8.8
編集:ルーターが他のゲートウェイについて知らないため、「traceroute -i」は機能しません。デフォルトでは、ルーティングテーブルは次のとおりです(単純化)。
0.0.0.0/0 gw 10.0.0.254 eth0
明示的に指定しないと、プログラムは他のISPに接続されているeth1のデフォルトゲートウェイが何であるかを知りません。
答え1
マニュアルページを読みましたか?
-i interface, --interface=interface
Specifies the interface through which traceroute should send
packets. By default, the interface is selected according to the
routing table.
答え2
もし私のような問題がある方がいらっしゃるかと思います。
Ubuntuでは、inetutils-traceroute
パッケージはソースインターフェイスの設定を許可しませんが、パッケージはtraceroute
それを許可します。あなたはほぼ確実に後者が欲しい。
答え3
私も同じ問題がありましたが、幸い解決しました。
マルチホームシステムでは、インターフェイスの数に関係なく、デフォルトゲートウェイは1つだけ定義できます。フラグで指定されたインターフェイスと同じサブネット上にないホストへのパス追跡を試みると、ゲートウェイの欠落-i
によりパス追跡が失敗します(デフォルトが定義されている単一のインターフェイスを使用するほど運が悪いと仮定します)。ゲートウェイ)。
解決策は、マシンの各「追加」インターフェイス用の追加のルーティングテーブルを定義することです。
要約すると、次のような特性を持つ2つのインターフェースがあります。
Interface A: IP: 10.0.0.10 subnet: 255.255.255.0 Gateway 10.0.0.1
Interface B: IP: 192.168.0.10 subnet: 255.255.255.0 Gateway 192.168.0.1
Aのデフォルトゲートウェイのみがルーティングテーブルに表示されるため、Bのゲートウェイを含めるには、次の手順を実行する必要があります。
/etc/iproute2/rt_tables
次の行の終わりに移動1 routingTableB
ルートとして次のコマンドを実行します。
ip route add 192.168.0.0/24 dev <Interface B> src 192.168.0.10 table routingTableB ip route add default via 192.168.0.1 dev <Interface B> table routingTableB ip rule add from 192.168.0.10/32 table routingTableB ip rule add to 192.168.0.10/32 table routingTableB
-i
その後、問題なくインターフェイスBでこのフラグを使用できます。
再起動後、この設定は失われます。永久に作成する方法については、上記のリンクをご覧ください。
ちなみに、フラグは-g
インターフェイスがパケットを送信するIPを示しません。中間ノードにパケットをルーティングする方法を指示するためにプローブに含まれるパラメータ。
答え4
まあ...ここでは概念だけが説明されています。 - ポリシールーティング:
Linuxに新しいRTテーブルを追加する
echo 200 test >> /etc/iproute2/rt_tables
一致するポリシールールを追加してください。
ip rule add oif <iface_to_second_ISP> table test
新しく作成されたテーブルへのデフォルトパスの追加
ip route add 0.0.0.0/0 via <second_ISP_next_hop> dev <iface_to_second_ISP> table test
キャッシュの更新とテスト
ip route flush cache
ping -I <IP_on_second_ISP_iface> google.com