組み込みデバイスがあり、そこには eth0、wwan0、wlan0 の 3 つのネットワーク接続があります。wwan0 は従量制接続なので、通常は eth0 または wlan0 を使用します。問題は、どのインターフェイスも接続されていても、実際にはインターネットに接続できないことです。さまざまな理由により、どのインターフェイスも存在しない場合があります。この場合、ルーティング テーブルは期待どおりに動作しません。ルーティング テーブルを常にチェックして変更するスクリプトよりも、これを処理するより良い方法はありますか? 問題の一部は、使用可能、使用不可、インターネットなしなどの組み合わせや順列が多すぎることです。
答え1
お気づきのとおり、可能性は多数あります。曖昧なものもあり、たとえば、「インターネットはあるが、テスト サーバーだけが利用できない」という場合、テスト サーバーはすべて故障しているか政府によってブロックされているため利用できない可能性があります。また、インターネットの「半分」が 1 つの ISP からアクセス可能で、「もう半分」がアクセスできないという可能性もありますが、他の ISP では状況が「逆」になっています。(信じてもらえないかもしれませんが、私はそのような状況を一度見たことがあります。) どちらを「インターネットがある」と宣言しますか?
これは非常に難しい質問です。だからこそ、SOHOルーターのビジネスニッチが存在し、多かれ少なかれさまざまな状況で決定を下すことができ、一般的にセットアップがそれほど簡単ではないため、十分だ決定。これが、通信業界で BGP ビジネスが盛んに行われている理由でもあります。
ご覧のとおり、スクリプトより優れた効率的な方法はありません。なぜそれが必要なのかはわかりませんが、デスクトップ/エンド ユーザー マシンの場合、これを自動化する価値はまったくないと思います。Linux ルーターの場合、RPDB を使用した標準の分割アクセス構成を作成し、各リンクを高いメトリックで優先順にデフォルト ルートで通過させます。その後、スクリプトは、たとえば、地理的に分散した 5 つのテスト ポイント (最もアクセスが多いか重要なテスト ポイント) への ping に基づいて、低いメトリックのデフォルト ルートのみを設定または更新します。