web-dev-qa-db-ja.com

Linuxの安定性を高めるために2つのISP接続を同時に使用する

2つの異なるISPから2つのインターネット接続があります。 eth0のADSLとwlan0の4G。一方のISPに障害が発生した場合、もう一方のISPが物理ルーターなしでホストOS(Ubuntu 18.04)によって自動的に引き継ぐ方法はありますか?

1
Daniyal

私はホストOSからこれを個人的に試みたことがありません。しかし、何度も行ったり来たりした後、私はあなたが探しているものを見つけることができるかどうかを確認するためにインターネットを掘り下げることにしました。

ユーザー「Apsu」によって作成されたゲートウェイフェイルオーバーのサンプルスクリプトをGist.github.comで見つけました。 bashスクリプトをダウンロードできます ここ。

これを特定の設定に変更し、インターフェイス名、ゲートウェイアドレスを追加する必要があります。これで、準備は完了です。

ホストOSのスクリプト:

#!/bin/bash

# Set defaults if not provided by environment
CHECK_DELAY=${CHECK_DELAY:-5}
CHECK_IP=${CHECK_IP:-8.8.8.8}
PRIMARY_IF=${PRIMARY_IF:-eth0}
PRIMARY_GW=${PRIMARY_GW:-1.2.3.4}
BACKUP_IF=${BACKUP_IF:-eth1}
BACKUP_GW=${BACKUP_GW:-2.3.4.5}

# Compare arg with current default gateway interface for route to healthcheck IP
gateway_if() {
  [[ "$1" = "$(ip r g "$CHECK_IP" | sed -rn 's/^.*dev ([^ ]*).*$/\1/p')" ]]
}

# Cycle healthcheck continuously with specified delay
while sleep "$CHECK_DELAY"
do
  # If healthcheck succeeds from primary interface
  if ping -I "$PRIMARY_IF" -c1 "$CHECK_IP" &>/dev/null
  then
    # Are we using the backup?
    if gateway_if "$BACKUP_IF"
    then # Switch to primary
      ip r d default via "$BACKUP_GW" dev "$BACKUP_IF"
      ip r a default via "$PRIMARY_GW" dev "$PRIMARY_IF"
    fi
  else
    # Are we using the primary?
    if gateway_if "$PRIMARY_IF"
    then # Switch to backup
      ip r d default via "$PRIMARY_GW" dev "$PRIMARY_IF"
      ip r a default via "$BACKUP_GW" dev "$BACKUP_IF"
    fi
  fi
done

ネットワークハードウェアの場合:

ホストOSからのフェイルオーバーとは対照的に、この機能にルーターを使用することにはかなりの利点があります。すぐに頭に浮かぶのは、両方の接続帯域幅を同時に使用することです。 (両方のISP接続を十分に活用)

PFsense/OpenSenseをデュアルWANルーターとして使用できます。(ほとんどの古いPCハードウェアが機能します。)DD-WRTでサポートされているルーターもWAN =いくつかの調整を加えたフェイルオーバー。または、SophosやNetgear prosafeなどのすぐに使用できるソリューションを使用することもできますが、他にもあると思いますが、ほとんどのすぐに使用できるソリューションは、ホームユーザーが支払うよりも高価です。デュアルWANルーターのセットアップにより、インターネット帯域幅を増やすことができます。特定のニーズに合わせてトラフィックの負荷を分散できます。インターネット接続の冗長性とフェイルオーバーを取得できます。

よろしく、

2
Tim_Stewart