アウトバウンド接続用に複数のデフォルトゲートウェイを設定できますか?

アウトバウンド接続用に複数のデフォルトゲートウェイを設定できますか?

同じサブネットに複数のNIC(eth0とwlan0)があり、NICの1つでエラーが発生した場合は、ホスト上のアプリケーションのバックアップとして機能したいと思います。これを行うために、追加のルーティングテーブルを作成しました。次のようになります/etc/network/interfaces

iface eth0 inet static
address 192.168.178.2
netmask 255.255.255.0
dns-nameserver 8.8.8.8 8.8.4.4
    post-up ip route add 192.168.178.0/24 dev eth0 src 192.168.178.2
    post-up ip route add default via 192.168.178.1 dev eth0
    post-up ip rule add from 192.168.178.2/32
    post-up ip rule add to 192.168.178.2/32

iface wlan0 inet static
wpa-conf /etc/wpa_supplicant.conf
wireless-essid xyz
address 192.168.178.3
netmask 255.255.255.0
dns-nameserver 8.8.8.8 8.8.4.4
    post-up ip route add 192.168.178.0/24 dev wlan0 src 192.168.178.3 table rt2
    post-up ip route add default via 192.168.178.1 dev wlan0 table rt2
    post-up ip rule add from 192.168.178.3/32 table rt2
    post-up ip rule add to 192.168.178.3/32 table rt2

これはホストへの接続に有効です。インターフェイスの 1 つがダウンしても、まだホストに SSH で接続できます。ただし、eth0ホストがシャットダウンすると、ホスト上のアプリケーションは外部世界への接続を初期化できません。これが私の問題です。

トピックを調査した結果、次の興味深い情報が見つかりました。

プログラムがアウトバウンド接続を開始するときは、通常ワイルドカードソースアドレス(0.0.0.0)を使用します。これは、関連する宛先アドレスに到達できる限り、インターフェイスが最初に使用されないことを示します。このアドレスは、ルーティング決定が行われるまで特定の送信元アドレスに置き換えられません。したがって、これらの接続に関連するトラフィックは上記のポリシールールと一致せず、新しく追加されたルーティングテーブルに転送されません。設定が正しいと仮定すると、代わりにデフォルトのルーティングテーブルに入ります。 http://www.microhowto.info/howto/ensure_metry_routing_on_a_server_with_multiple_default_gateways.html

私が望むのは、デフォルトのルーティングテーブルに複数のデフォルトゲートウェイ(1つはオンeth0、1つはオフ)があり、デフォルトで動作wlan0が停止した場合はデフォルトゲートウェイに移動することです。eth0wlan0eth0

それは可能ですか?そのような機能を実装するにはどうすればよいですか?

ベストアンサー1

自分で解決しました。私はLinuxで行うことができるネットワーク操作に関する情報がほとんどないようで、私の解決策を詳しく文書化して説明することにしました。これが私の最終設定です。

  • 3つのネットワークカード:eth0(有線)、wlan0(内蔵Wi-Fi、弱い信号)、wlan1(USB Wi-Fiアダプタ、wlan0より強い信号)
  • これらはすべて同じサブネット上にあり、それぞれに一意のIPアドレスを持っています。
  • デフォルトでは、eth0は着信および発信トラフィックに使用されます。
  • eth0が失敗した場合はwlan1を使用する必要があります。
  • wlan1が失敗した場合は、wlan0を使用する必要があります。

最初のステップ:の各インターフェイスに対して新しいルーティングテーブルを作成します/etc/iproute2/rt_tables。これをrt1、rt2、rt3と呼びます。

#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1  inr.ruhep
1 rt1
2 rt2
3 rt3

ステップ2:のネットワーク構成/etc/network/interfaces。これが主な部分であり、これについて説明します。

auto eth0 wlan0
allow-hotplug wlan1

iface lo inet loopback

iface eth0 inet static
address 192.168.178.99
netmask 255.255.255.0
dns-nameserver 8.8.8.8 8.8.4.4
    post-up ip route add 192.168.178.0/24 dev eth0 src 192.168.178.99 table rt1
    post-up ip route add default via 192.168.178.1 dev eth0 table rt1
    post-up ip rule add from 192.168.178.99/32 table rt1
    post-up ip rule add to 192.168.178.99/32 table rt1
    post-up ip route add default via 192.168.178.1 metric 100 dev eth0
    post-down ip rule del from 0/0 to 0/0 table rt1
    post-down ip rule del from 0/0 to 0/0 table rt1

iface wlan0 inet static
wpa-conf /etc/wpa_supplicant.conf
wireless-essid xyz
address 192.168.178.97
netmask 255.255.255.0
dns-nameserver 8.8.8.8 8.8.4.4
    post-up ip route add 192.168.178.0/24 dev wlan0 src 192.168.178.97 table rt2
    post-up ip route add default via 192.168.178.1 dev wlan0 table rt2
    post-up ip rule add from 192.168.178.97/32 table rt2
    post-up ip rule add to 192.168.178.97/32 table rt2
    post-up ip route add default via 192.168.178.1 metric 102 dev wlan0
    post-down ip rule del from 0/0 to 0/0 table rt2
    post-down ip rule del from 0/0 to 0/0 table rt2

iface wlan1 inet static
wpa-conf /etc/wpa_supplicant.conf
wireless-essid xyz
address 192.168.178.98
netmask 255.255.255.0
dns-nameserver 8.8.8.8 8.8.4.4
    post-up ip route add 192.168.178.0/24 dev wlan1 src 192.168.178.98 table rt3
    post-up ip route add default via 192.168.178.1 dev wlan1 table rt3
    post-up ip rule add from 192.168.178.98/32 table rt3
    post-up ip rule add to 192.168.178.98/32 table rt3
    post-up ip route add default via 192.168.178.1 metric 101 dev wlan1
    post-down ip rule del from 0/0 to 0/0 table rt3
    post-down ip rule del from 0/0 to 0/0 table rt3

入力するとip rule show以下が表示されます。

0:  from all lookup local 
32756:  from all to 192.168.178.98 lookup rt3 
32757:  from 192.168.178.98 lookup rt3 
32758:  from all to 192.168.178.99 lookup rt1 
32759:  from 192.168.178.99 lookup rt1 
32762:  from all to 192.168.178.97 lookup rt2 
32763:  from 192.168.178.97 lookup rt2 
32766:  from all lookup main 
32767:  from all lookup default 

これは、IPアドレス「192.168.178.99」に入って来るトラフィックがrt1ルーティングテーブルを使用することを知らせます。今まではそんなに良くなった。ただし、ローカルで生成されたトラフィック(システムから別の場所にpingまたはsshしたい場合)には特別な処理が必要です(質問の大きな引用符を参照)。

最初の4つのポストアップラインは/etc/network/interfacesシンプルで、インターネットで説明できます。 5番目で最後のポストアップラインは魔法を引き起こすラインです。

post-up ip r add default via 192.168.178.1 metric 100 dev eth0

このバックラインのルーティングテーブルを指定していません。ルーティングテーブルを指定しないと、表示したmainルーティングテーブルに情報が保存されますip rule show。このポストラインは、デフォルトパスを「デフォルト」パステーブルに配置します。このルートは、着信トラフィックに対する応答ではなく、ローカルで生成されたトラフィックに使用されます。 (たとえば、サーバーのMTAは電子メールを送信しようとします。)

3 つのインターフェイスすべてのメトリックは異なりますが、デフォルトのルーティング テーブルにデフォルトのルートを配置します。ルーティングmainテーブルを見てみましょうip route show

default via 192.168.178.1 dev eth0  metric 100 
default via 192.168.178.1 dev wlan1  metric 101 
default via 192.168.178.1 dev wlan0  metric 102 
192.168.178.0/24 dev wlan0  proto kernel  scope link  src 192.168.178.97 
192.168.178.0/24 dev eth0  proto kernel  scope link  src 192.168.178.99 
192.168.178.0/24 dev wlan1  proto kernel  scope link  src 192.168.178.98

指標は異なりますが、基本ルーティングテーブルに3つの基本ルートがあることがわかります。最も高い優先順位はeth0、wlan1、最後にwlan0です。メトリック番号が低いほど優先順位が高いためです。メトリックが最も低いため、これはデフォルトのパスであり、eth0起動するたびに使用されます。障害がeth0発生すると、eth0発信トラフィックがに切り替わりますwlan1

この設定では、ping 8.8.8.8ある端末とifdown eth0別の端末に入力できます。発信トラフィックがに切り替わるため、引き続き機能するping必要があります。ifdown eth0eth0wlan1

ポストダウンラインは、ip rule showすべてをきれいに保つために、インターフェイスがダウンしたときに関連するルーティングテーブルがルーティングポリシーデータベース()から削除されるようにします。

残りの問題は、プライマリeth0パスからプラグを抜くときにパスがeth0まだ存在し、発信トラフィックが失敗することです。インターフェイスを監視し、ifdown eth0インターフェイスに問題がある場合(たとえば、ネットワークカードに問題がある場合、または誰かがプラグを抜く場合)、アクションを実行するためのアクションが必要です。

最後のステップ:入力するifplugd。これは、インターフェイスを監視し、ifup/ifdownプラグが抜かれているときやWi-Fi接続に問題があるときに実行されるデーモンです/etc/default/ifplugd

INTERFACES="eth0 wlan0 wlan1"
HOTPLUG_INTERFACES=""
ARGS="-q -f -u0 -d10 -w -I"
SUSPEND_ACTION="stop"

プラグを抜くと、発信eth0トラフィックがに切り替わりますwlan1。プラグを差し込むと、発信トラフィックが再び切り替わりますeth03 つのインターフェイスのいずれかが正常に動作している限り、サーバーはオンラインのままです。サーバーに接続するにはIPアドレスeth0を使用し、接続に失敗した場合はwlan1またはwlan0 IPアドレスを使用します。

おすすめ記事