Linux

設置具有 2 個 WAN 和多個子網的路由器

  • November 19, 2018

我正在嘗試將 Debian 盒子設置為辦公室的路由器。我需要在 LAN 中有 3 個子網和 2 個 WAN 連接,並且我希望其中一個子網始終使用 WAN 1,而另一個子網始終使用 WAN 2(無負載平衡)。

例如,我想要這三個子網: - 10.1.1.0/24 - 10.1.2.0/24 - 10.1.3.0/24

我希望 10.1.1.0/24 使用 ISP #1 和 10.1.2.0/24 和 10.1.3.0/24 使用 ISP #2 上網。

還有一秒的複雜性:ISP #2 是具有動態 IP 地址的 DSL 連接。

我認為這應該很容易實現,但是我以前從未這樣做過,也無法在網上找到範例。我一直在閱讀lartc,但我無法將它們提供的範例用於我想做的事情。

我會很感激任何線索!

你可以和朋友一起做這個ip rule(關鍵字:基於源的路由)。首先,您需要建構另一個路由表。讓我們稱之為wan2。將其添加到/etc/iproute2/rt_tables

幸運的是 ip route 的輸出與輸入的格式相同。您可以這樣做來複製表(沒有預設路由)

ip route show table main | grep -Ev "^default" | while read ROUTE; do
 ip route add table wan2 $ROUTE
done

然後添加預設路由

ip route add table wan2 default via 1.2.3.4 dev ethX

完成後可以使用ip rule命令建構規則來選擇對應的路由表:

ip rule add from 10.1.2.0/24 table wan2

我在網際網路的某個地方找到了這個腳本,但忘記了在哪裡。您可以將其用作模板

#!/bin/sh
set -e

MARK=100
TABLE_NAME=wan2
DEV=eth2
GATEWAY=192.168.4.1

IPTABLES=/sbin/iptables
IP=/sbin/ip

$IP route flush table $TABLE_NAME

$IP route show table main | grep -Ev "^default" | while read ROUTE; do
   $IP route add table $TABLE_NAME $ROUTE
done

$IP route add table $TABLE_NAME default dev $DEV via $GATEWAY

while true; do
   ip rule del table $TABLE_NAME 2>/dev/null || break
done

$IP rule add from 10.1.2.0/24 table $TABLE_NAME
....
$IP route flush cache

引用自:https://serverfault.com/questions/396474