web-dev-qa-db-ja.com

3つの異なる方法で単一のネットワークインターフェイスを構成し、特定の条件に基づいてルートを設定しますか?

私は SB Armory Mk II Debianを実行していて、立ち上がるのはかなり簡単です SBホストとの通信

しかし、私が達成したいのは次のとおりです。 USBアーモリーのネットワークアダプターに条件付きで構成できるようにしたいと思います。 3つの角度:

  1. ホストでDHCPが有効になっていて、 [〜#〜] cdc [〜#〜] イーサネットアダプターにバインドしている場合は、dhclientを使用してIPを割り当てます。
  2. 10.0.0.0/24ネットワークは無条件に(InversePathによって提供されるDebianイメージで事前構成されたもの)10.0.0.1が割り当てられたインターフェースで構成されます...
  3. 192.168.137.2(または.1以外の別の192.168.137.0/24 IPアドレス)をさらに別のIPアドレスとして構成します( Windows ICS

これを行うことは、これまでのところ大きな問題ではありません。例として、 この回答 StackOverflowでそれを達成する2つの方法を示しています(2番目の方法では、ICS範囲アドレスを別のエイリアスとして追加します)。

しかし、重要なのは、ルートを設定する方法です。そして、それは私が今立ち往生している部分です:

  1. dHCPが成功した場合、DHCPを介して構成されたものをアップリンク(ゲートウェイ)として使用したい
  2. そうでない場合は、残りの2つの構成済みサブネットのいずれかで通信できるかどうかを確認したいと思います...できれば、USB Armory Mk IIのスクリプトで、使用するゲートウェイを特定する必要があります(つまり、明らかなことを試してください)。対応する/ 24サブネットの.1、.2、および.254で、必要に応じて「検索」を展開します)

次の分野でアドバイスが必要です。

  • どのIP範囲がアップリンクとして実行可能であるかを最もよく理解する方法は?例えば。 ARPトラフィックをスニッフィングし、それをインジケータとして使用する必要がありますか?または、より信頼性の高い方法(_ping -I <address>_など)はありますか?そして後付けとして:アップリンクの可用性の変化にどのように対処するか?
  • スクリプトを使用する代わりに、これを ip-rule(8) で表現する信頼できる方法はありますか?
2
0xC0000022L

私は過去にそれらのシナリオのいくつかに会ったことがありますが、それでも完璧な解決策は見つかりませんでした。

まず、2つの静的IPを割り当てるとき、それらのルーティングメトリックが1000などの高いものであることを確認します。そうすると、DHCPのデフォルトルートがある場合、それは低くなり、自動的に選択されます。これは私が通常行う方法です。

良いアップリンクとは何なので、次のビットははるかにトリッキーです。 Linuxはあなたのためにその選択をすることは決してありません-リンクがアップしているなら、それはアップしています。

私がこれらの問題に取り組んでいるシステムでは、常にスクリプトまたはデーモンが実行されており、それらはすぐに非常に複雑になる可能性があります。ほとんどの場合、エンドポイントに対する接続を一定の間隔でテストし、それに応じてルートを設定するか、インターフェイスを上下に設定します。

優先インターフェース(イーサネットとモデムなど)がある場合もありますが、その場合、モデム接続を切断せずにイーサネット接続が実行されているかどうかをテストする必要があるため、さらに難しくなります。 ping -Iスイッチが実際にインターフェイスエイリアスで機能するかどうかはわかりませんが、機能する可能性があります。そうでない場合は、たとえばを使用してアドレスを完全に分割することもできます。 macvlanまたはipvlan。これにより、アドレス(またはその仮想インターフェイス)を上下に設定することもできます。

考慮しなければならない、また考慮しなければならないかもしれない、まったく異なる何かは、インターフェースとサブネットを変更するときに、異なるDNSサーバーを使用しなければならず、場合によってはサービスも再起動しなければならないことです。

Linuxでフェイルオーバーを行うためのガイドはたくさんありますが、ほとんどの場合、物理リンクのダウンに基づいており、もちろん簡単にトリガーできます。または、デーモンまたはスクリプトがあります。これは、ルートをテストするために提案するものです。

それらは私の5セントでした、私はそれがいくらか理にかなっていて、それがあなたを正しい方向に導くことができることを願っています。