同時使用兩個 ISP 連線來增加 Linux 的穩定性

同時使用兩個 ISP 連線來增加 Linux 的穩定性

我有兩個來自兩個不同 ISP 的網路連線。 eth0 上使用 ADSL,wlan0 上使用 4G。有沒有辦法,如果一個 ISP 發生故障,另一個 ISP 可以在沒有實體路由器的情況下透過主機作業系統(Ubuntu 18.04)自動接管?

答案1

我個人從未嘗試過從主機作業系統執行此操作。但經過反覆考慮,我決定在網路上挖掘一下,看看是否能找到您要找的東西。

我在 gist.github.com 上找到了由使用者「Apsu」創建的網關故障轉移範例腳本。你可以下載bash腳本這裡。

您必須根據您的特定設定進行修改,新增您的介面名稱、網關位址,然後您就可以開始了。

主機作業系統的腳本:

#!/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

使用網路硬體:

與僅從主機作業系統進行故障轉移相比,使用路由器來實現此功能具有相當大的優勢。我立即想到的是同時使用兩個連接頻寬。 (充分利用兩個 ISP 連線)

您可以使用 PFsense / OpenSense 作為雙 WAN 路由器。 (大多數舊的 PC 硬體都可以工作。)我相信 DD-WRT 支援的路由器也能夠透過一些調整進行 WAN 故障轉移。或者您可以使用開箱即用的解決方案,例如 Sophos 或 Netgear prosafe,我相信還有其他解決方案,但大多數開箱即用的解決方案比家庭用戶願意支付的更昂貴。雙 WAN 路由器設定可讓您增加網路頻寬。您可以根據您的特定需求對流量進行負載平衡。您可以獲得網路連線冗餘和故障轉移。

問候,

相關內容