
私は次のテーブルを持っています
$ netstat -r -4 | grep 33.0
192.168.33.0/24 192.168.29.4 UGS ovpns5
同じネットワークに追加のルートを追加したいです。
$ route add -net 192.168.33.0/24 192.168.27.2
add net 192.168.33.0: gateway 192.168.27.2 fib 0: route already in table
なぜ?同じネットワークに2つのパスがありませんか?
私はそれを行うことができ、route change
効果があります。
答え1
カーネルは、アウトバウンドパケットへのパスを見つけるときに答えを見つけたいと思います。一致するものが複数ある場合は、どちらを選択するのかわかりません。
このスレッドメーリングリストでも同じ問題が扱われ、ルートのfreebsd-questions
1つを「分割」して2つのより具体的なルートを作成して問題を解決することが提案されました。
バックアップのデフォルトパスを追加する方法は、「基本」を2つの異なるより具体的なサブネットに分割することです。
# route add 0.0.0.0 PRIMARY_GW -netmask 127.0.0.0 # route add 127.0.0.0 PRIMARY_GW -netmask 127.0.0.0 # route add default SECONDARY_GW
これで、デフォルトは「デフォルト」より小さい2つの異なるサブネットに分割され、デフォルトパスになります。 PRIMARY_GWに接続するインターフェイスが失敗すると、最初の2つのパスが削除され、バックアップの「デフォルト」ゲートウェイはそのまま残ります。
あなたの場合、可能であれば既存のパス(192.168.29.4経由)を使用するには、次のようにします。
route add -net 192.168.33.0/25 192.168.29.4
route add -net 192.168.33.128/25 192.168.29.4
route add -net 192.168.33.0/24 192.168.27.2
カーネルは常に最も具体的なパスを好むので、ovpns5
インターフェイスが利用可能になるたびに、192.168.29.4がゲートウェイとして使用されます。そのインターフェイスが失敗すると、パスが削除され、カーネルはゲートウェイを使用して開始されます192.168.27.2
。
2つの接続間のロードバランシングが必要な場合は、同じコストのマルチパスルーティング(ecmp)を探していますが、FreeBSDがそれをサポートしているかどうかわかりません。