以下のようなよくある場合を考えてみましょう。 ローカルなネットワーク (1 台のマシンかもしれませんが) をインターネットへと接続しているプロバイダが 2 つあるような場合です。
|                                                                  ________
                                          +------------+        /
                                          |            |       |
                            +-------------+ Provider 1 +-------
        __                  |             |            |     /
    ___/  \_         +------+-------+     +------------+    |
  _/        \__      |     if1      |                      /
 /             \     |              |                      |
| Local network -----+ Linux router |                      |     Internet
 \_           __/    |              |                      |
   \__     __/       |     if2      |                      \
      \___/          +------+-------+     +------------+    |
                            |             |            |     \
                            +-------------+ Provider 2 +-------
                                          |            |       |
                                          +------------+        \________ | 
この設定においては、通常 2 つの問題点があります。
最初の問題点は、特定のプロバイダからやって来たパケットに対して、 応答をどのようにルーティングするかです。 例えば Provider 1 からのパケットに対して、 返信を再び同じプロバイダに戻すにはどうすればいいでしょう。
まず記号的な名前を設定しましょう。 $IF1 を第一インターフェース (上記の絵の if1)、 $IF2 を第二インターフェースとします。次に $IP1 は $IF1 に関連付けられた IP アドレス、 $IP2 は $IF2 に関連付けられた IP アドレスとします。 さらに、 $P1 を Provider 1 のゲートウェイの IP アドレス、 $P2 を Provider 2 のゲートウェイの IP アドレスとします。 最後に、$P1_NET を $P1 の所属する IP ネットワーク、 $P2_NET を $P2 の所属する IP ネットワークとします。
2 つのルーティングテーブルを追加します。 ここでは T1 および T2 とします。 これらは /etc/iproute2/rt_tables に追加します。 そしてこれらのテーブルでのルーティングを次のように設定します。
| ip route add $P1_NET dev $IF1 src $IP1 table T1 ip route add default via $P1 table T1 ip route add $P2_NET dev $IF2 src $IP2 table T2 ip route add default via $P2 table T2 | 
次に main ルーティングテーブルを設定します。 パケットを直接の近隣に送る際には、 その近隣に接続しているインターフェースからにするのが良い考えです。 ここで `src' 引数によって、 確実に正しい起点 IP アドレスが選択されていることにも注目してください。
| ip route add $P1_NET dev $IF1 src $IP1 ip route add $P2_NET dev $IF2 src $IP2 | 
| ip route add default via $P1 | 
| ip rule add from $IP1 table T1 ip rule add from $IP2 table T2 | 
| Warning | |
| 読者である Rod Roark によると: 「$P0_NET がローカルネットワークで $IF0 をそのインターフェースとすると、 次のようなエントリも追加しておくほうが良いでしょう 
 | 
さて、これは非常に基本的な設定にすぎません。 これはルータで動作しているプロセスと、 マスカレードされている場合にはローカルネットワークに対しても動作するでしょう。 それ以外としては、両方のプロバイダから IP 空間をもらっている場合と、 片方のプロバイダに対してのみマスカレードをしている場合とが考えられます。 このいずれにおいても、 どちらのプロバイダを通して発信するかを、 ローカルネットワークのマシンの IP アドレスから決めるような ルールを追加することになるでしょう。
二番目の問題点は、二つのプロバイダを通して出て行くトラフィックを バランスさせるやり方です。これは実際には、 前述のようなアクセス分割を既に行っていれば、難しくありません。
default の経路として片方のプロバイダを選ぶ代わりに、 default 経路を multipath 経路として設定します。 デフォルトのカーネルでは、これで両者のプロバイダへの経路がバランスされます。 これは次のようにして行います (ここでもアクセス分割の節における例での場合を考えます)。
| ip route add default scope global nexthop via $P1 dev $IF1 weight 1 \ nexthop via $P2 dev $IF2 weight 1 | 
このバランス化は経路に基づいたもので、経路はキャッシュされるため、 完全とは言えません。なぜかというと、良く利用されるサイトに対する経路は、 つねに同じプロバイダから出て行くことになるからです。
さらに、本当にこれを実行した場合は、 Julian Anastasov のページ にあるパッチをみるとよいでしょう。 これらを用いると、より良好な動作が期待できます。