2つのインターネットチャネルの帯域幅と単純なフォールトトレランスの組み合わせ

Linuxサーバーを備えた自分のホームネットワークがあり、ワイヤレス接続を使用してインターネットに接続されています。屋根にアンテナとルーターがあり、ツイストペアケーブルがサーバーに接続されています。 一般に、それは悪くありません。双方向の帯域が保証されたチャネル、一定のIPアドレス、非常に信頼性が高く、めったに落ちません。 しかし、ここで彼は1つのマイナスを持っています-価格に噛まれます。

プロバイダーの価格設定ポリシーは、速度を2倍にするために2倍も支払う必要があるように設計されています。 そして、もっとスピードが欲しい! 信頼性も-激しい霜のときのように、ルーターは「冷たく」なり、夕方と夜はインターネットがありませんでした。

したがって、私は2番目のインターネットチャネルを持ち帰ることにしました。ADSL経由のアクセスを提供するウクライナの有名なプロバイダーの1つが選択されました。 安価な関税があり、ADSLモデムは安価です。 だから、私はスイッチにADLSモデムを接続し、接続しました-すべてが機能します。 しかし、古き良きワイヤレスチャネルを拒否したくなかったため、合計帯域幅を使用できるように、インターネットトラフィックが両方のチャネルを同時に通過することを確認することにしました。 はい。1つのチャネルが落ちたときに、すべての負荷が別のチャネルによって負担されることになります。







インターネットを検索した結果、少なくとも2つの解決策があることがわかりました。



-ファイアウォールレベルで、異なるインターフェイスにTCPセッションを分散します。 短所-1人のユーザーからの連続した要求が異なるチャネルおよび異なるIPから来る可能性があるため、セッションがIPアドレスにバインドされているサイトは機能しなくなります。

-ルーティングレベルで、異なるインターフェイスを介してルートを分散します。 ルートはキャッシュされ、同じアドレスへの後続の呼び出しは同じインターフェイスを通過するため、最初のソリューションで問題は発生しません。 ただし、バランシングはそれほど正確ではなく、複数のストリームで1つのサーバーからダウンロードしても、2つのチャネルの合計速度を達成することはできません。



すべてのサイトの安定した動作が私にとって非常に重要であるため、ルーティングを使用してバランスをとることを選択しました。まあ、この機能はすでに私のコアにあり、ファイアウォールにパッチを適用する必要があります。



それでは始めましょう!



まず、変数を定義します。

$ cat / etc / balance / vars



  1. #!/bin/bash # LAN interface IF0= "eth1" # WAN interface 1 IF1= "eth0" # WAN interface 2 IF2= "ppp0" IP1= "194.9.xx.xx" IP2= "`ip addr show $IF2 | grep inet | awk '{print $2}'`" # gateway 1 P1= "194.9.xx.xx" # gateway 2 P2= "195.5.xx.xx" # LAN netmask P0_NET= "192.168.0.0/24" # WAN1 netmask P1_NET= "194.9.xx.xx/xx" # WAN2 netmask P2_NET= "195.5.xx.xx/xx" TBL1= "provider1" TBL2= "provider2" # Realtive weight of channels bandwidth W1= "2" W2= "1"









  2. #!/bin/bash # LAN interface IF0= "eth1" # WAN interface 1 IF1= "eth0" # WAN interface 2 IF2= "ppp0" IP1= "194.9.xx.xx" IP2= "`ip addr show $IF2 | grep inet | awk '{print $2}'`" # gateway 1 P1= "194.9.xx.xx" # gateway 2 P2= "195.5.xx.xx" # LAN netmask P0_NET= "192.168.0.0/24" # WAN1 netmask P1_NET= "194.9.xx.xx/xx" # WAN2 netmask P2_NET= "195.5.xx.xx/xx" TBL1= "provider1" TBL2= "provider2" # Realtive weight of channels bandwidth W1= "2" W2= "1"









  3. #!/bin/bash # LAN interface IF0= "eth1" # WAN interface 1 IF1= "eth0" # WAN interface 2 IF2= "ppp0" IP1= "194.9.xx.xx" IP2= "`ip addr show $IF2 | grep inet | awk '{print $2}'`" # gateway 1 P1= "194.9.xx.xx" # gateway 2 P2= "195.5.xx.xx" # LAN netmask P0_NET= "192.168.0.0/24" # WAN1 netmask P1_NET= "194.9.xx.xx/xx" # WAN2 netmask P2_NET= "195.5.xx.xx/xx" TBL1= "provider1" TBL2= "provider2" # Realtive weight of channels bandwidth W1= "2" W2= "1"









  4. #!/bin/bash # LAN interface IF0= "eth1" # WAN interface 1 IF1= "eth0" # WAN interface 2 IF2= "ppp0" IP1= "194.9.xx.xx" IP2= "`ip addr show $IF2 | grep inet | awk '{print $2}'`" # gateway 1 P1= "194.9.xx.xx" # gateway 2 P2= "195.5.xx.xx" # LAN netmask P0_NET= "192.168.0.0/24" # WAN1 netmask P1_NET= "194.9.xx.xx/xx" # WAN2 netmask P2_NET= "195.5.xx.xx/xx" TBL1= "provider1" TBL2= "provider2" # Realtive weight of channels bandwidth W1= "2" W2= "1"









  5. #!/bin/bash # LAN interface IF0= "eth1" # WAN interface 1 IF1= "eth0" # WAN interface 2 IF2= "ppp0" IP1= "194.9.xx.xx" IP2= "`ip addr show $IF2 | grep inet | awk '{print $2}'`" # gateway 1 P1= "194.9.xx.xx" # gateway 2 P2= "195.5.xx.xx" # LAN netmask P0_NET= "192.168.0.0/24" # WAN1 netmask P1_NET= "194.9.xx.xx/xx" # WAN2 netmask P2_NET= "195.5.xx.xx/xx" TBL1= "provider1" TBL2= "provider2" # Realtive weight of channels bandwidth W1= "2" W2= "1"









  6. #!/bin/bash # LAN interface IF0= "eth1" # WAN interface 1 IF1= "eth0" # WAN interface 2 IF2= "ppp0" IP1= "194.9.xx.xx" IP2= "`ip addr show $IF2 | grep inet | awk '{print $2}'`" # gateway 1 P1= "194.9.xx.xx" # gateway 2 P2= "195.5.xx.xx" # LAN netmask P0_NET= "192.168.0.0/24" # WAN1 netmask P1_NET= "194.9.xx.xx/xx" # WAN2 netmask P2_NET= "195.5.xx.xx/xx" TBL1= "provider1" TBL2= "provider2" # Realtive weight of channels bandwidth W1= "2" W2= "1"









  7. #!/bin/bash # LAN interface IF0= "eth1" # WAN interface 1 IF1= "eth0" # WAN interface 2 IF2= "ppp0" IP1= "194.9.xx.xx" IP2= "`ip addr show $IF2 | grep inet | awk '{print $2}'`" # gateway 1 P1= "194.9.xx.xx" # gateway 2 P2= "195.5.xx.xx" # LAN netmask P0_NET= "192.168.0.0/24" # WAN1 netmask P1_NET= "194.9.xx.xx/xx" # WAN2 netmask P2_NET= "195.5.xx.xx/xx" TBL1= "provider1" TBL2= "provider2" # Realtive weight of channels bandwidth W1= "2" W2= "1"









  8. #!/bin/bash # LAN interface IF0= "eth1" # WAN interface 1 IF1= "eth0" # WAN interface 2 IF2= "ppp0" IP1= "194.9.xx.xx" IP2= "`ip addr show $IF2 | grep inet | awk '{print $2}'`" # gateway 1 P1= "194.9.xx.xx" # gateway 2 P2= "195.5.xx.xx" # LAN netmask P0_NET= "192.168.0.0/24" # WAN1 netmask P1_NET= "194.9.xx.xx/xx" # WAN2 netmask P2_NET= "195.5.xx.xx/xx" TBL1= "provider1" TBL2= "provider2" # Realtive weight of channels bandwidth W1= "2" W2= "1"









  9. #!/bin/bash # LAN interface IF0= "eth1" # WAN interface 1 IF1= "eth0" # WAN interface 2 IF2= "ppp0" IP1= "194.9.xx.xx" IP2= "`ip addr show $IF2 | grep inet | awk '{print $2}'`" # gateway 1 P1= "194.9.xx.xx" # gateway 2 P2= "195.5.xx.xx" # LAN netmask P0_NET= "192.168.0.0/24" # WAN1 netmask P1_NET= "194.9.xx.xx/xx" # WAN2 netmask P2_NET= "195.5.xx.xx/xx" TBL1= "provider1" TBL2= "provider2" # Realtive weight of channels bandwidth W1= "2" W2= "1"









  10. #!/bin/bash # LAN interface IF0= "eth1" # WAN interface 1 IF1= "eth0" # WAN interface 2 IF2= "ppp0" IP1= "194.9.xx.xx" IP2= "`ip addr show $IF2 | grep inet | awk '{print $2}'`" # gateway 1 P1= "194.9.xx.xx" # gateway 2 P2= "195.5.xx.xx" # LAN netmask P0_NET= "192.168.0.0/24" # WAN1 netmask P1_NET= "194.9.xx.xx/xx" # WAN2 netmask P2_NET= "195.5.xx.xx/xx" TBL1= "provider1" TBL2= "provider2" # Realtive weight of channels bandwidth W1= "2" W2= "1"









  11. #!/bin/bash # LAN interface IF0= "eth1" # WAN interface 1 IF1= "eth0" # WAN interface 2 IF2= "ppp0" IP1= "194.9.xx.xx" IP2= "`ip addr show $IF2 | grep inet | awk '{print $2}'`" # gateway 1 P1= "194.9.xx.xx" # gateway 2 P2= "195.5.xx.xx" # LAN netmask P0_NET= "192.168.0.0/24" # WAN1 netmask P1_NET= "194.9.xx.xx/xx" # WAN2 netmask P2_NET= "195.5.xx.xx/xx" TBL1= "provider1" TBL2= "provider2" # Realtive weight of channels bandwidth W1= "2" W2= "1"









  12. #!/bin/bash # LAN interface IF0= "eth1" # WAN interface 1 IF1= "eth0" # WAN interface 2 IF2= "ppp0" IP1= "194.9.xx.xx" IP2= "`ip addr show $IF2 | grep inet | awk '{print $2}'`" # gateway 1 P1= "194.9.xx.xx" # gateway 2 P2= "195.5.xx.xx" # LAN netmask P0_NET= "192.168.0.0/24" # WAN1 netmask P1_NET= "194.9.xx.xx/xx" # WAN2 netmask P2_NET= "195.5.xx.xx/xx" TBL1= "provider1" TBL2= "provider2" # Realtive weight of channels bandwidth W1= "2" W2= "1"









  13. #!/bin/bash # LAN interface IF0= "eth1" # WAN interface 1 IF1= "eth0" # WAN interface 2 IF2= "ppp0" IP1= "194.9.xx.xx" IP2= "`ip addr show $IF2 | grep inet | awk '{print $2}'`" # gateway 1 P1= "194.9.xx.xx" # gateway 2 P2= "195.5.xx.xx" # LAN netmask P0_NET= "192.168.0.0/24" # WAN1 netmask P1_NET= "194.9.xx.xx/xx" # WAN2 netmask P2_NET= "195.5.xx.xx/xx" TBL1= "provider1" TBL2= "provider2" # Realtive weight of channels bandwidth W1= "2" W2= "1"









  14. #!/bin/bash # LAN interface IF0= "eth1" # WAN interface 1 IF1= "eth0" # WAN interface 2 IF2= "ppp0" IP1= "194.9.xx.xx" IP2= "`ip addr show $IF2 | grep inet | awk '{print $2}'`" # gateway 1 P1= "194.9.xx.xx" # gateway 2 P2= "195.5.xx.xx" # LAN netmask P0_NET= "192.168.0.0/24" # WAN1 netmask P1_NET= "194.9.xx.xx/xx" # WAN2 netmask P2_NET= "195.5.xx.xx/xx" TBL1= "provider1" TBL2= "provider2" # Realtive weight of channels bandwidth W1= "2" W2= "1"









  15. #!/bin/bash # LAN interface IF0= "eth1" # WAN interface 1 IF1= "eth0" # WAN interface 2 IF2= "ppp0" IP1= "194.9.xx.xx" IP2= "`ip addr show $IF2 | grep inet | awk '{print $2}'`" # gateway 1 P1= "194.9.xx.xx" # gateway 2 P2= "195.5.xx.xx" # LAN netmask P0_NET= "192.168.0.0/24" # WAN1 netmask P1_NET= "194.9.xx.xx/xx" # WAN2 netmask P2_NET= "195.5.xx.xx/xx" TBL1= "provider1" TBL2= "provider2" # Realtive weight of channels bandwidth W1= "2" W2= "1"









  16. #!/bin/bash # LAN interface IF0= "eth1" # WAN interface 1 IF1= "eth0" # WAN interface 2 IF2= "ppp0" IP1= "194.9.xx.xx" IP2= "`ip addr show $IF2 | grep inet | awk '{print $2}'`" # gateway 1 P1= "194.9.xx.xx" # gateway 2 P2= "195.5.xx.xx" # LAN netmask P0_NET= "192.168.0.0/24" # WAN1 netmask P1_NET= "194.9.xx.xx/xx" # WAN2 netmask P2_NET= "195.5.xx.xx/xx" TBL1= "provider1" TBL2= "provider2" # Realtive weight of channels bandwidth W1= "2" W2= "1"









  17. #!/bin/bash # LAN interface IF0= "eth1" # WAN interface 1 IF1= "eth0" # WAN interface 2 IF2= "ppp0" IP1= "194.9.xx.xx" IP2= "`ip addr show $IF2 | grep inet | awk '{print $2}'`" # gateway 1 P1= "194.9.xx.xx" # gateway 2 P2= "195.5.xx.xx" # LAN netmask P0_NET= "192.168.0.0/24" # WAN1 netmask P1_NET= "194.9.xx.xx/xx" # WAN2 netmask P2_NET= "195.5.xx.xx/xx" TBL1= "provider1" TBL2= "provider2" # Realtive weight of channels bandwidth W1= "2" W2= "1"









  18. #!/bin/bash # LAN interface IF0= "eth1" # WAN interface 1 IF1= "eth0" # WAN interface 2 IF2= "ppp0" IP1= "194.9.xx.xx" IP2= "`ip addr show $IF2 | grep inet | awk '{print $2}'`" # gateway 1 P1= "194.9.xx.xx" # gateway 2 P2= "195.5.xx.xx" # LAN netmask P0_NET= "192.168.0.0/24" # WAN1 netmask P1_NET= "194.9.xx.xx/xx" # WAN2 netmask P2_NET= "195.5.xx.xx/xx" TBL1= "provider1" TBL2= "provider2" # Realtive weight of channels bandwidth W1= "2" W2= "1"









  19. #!/bin/bash # LAN interface IF0= "eth1" # WAN interface 1 IF1= "eth0" # WAN interface 2 IF2= "ppp0" IP1= "194.9.xx.xx" IP2= "`ip addr show $IF2 | grep inet | awk '{print $2}'`" # gateway 1 P1= "194.9.xx.xx" # gateway 2 P2= "195.5.xx.xx" # LAN netmask P0_NET= "192.168.0.0/24" # WAN1 netmask P1_NET= "194.9.xx.xx/xx" # WAN2 netmask P2_NET= "195.5.xx.xx/xx" TBL1= "provider1" TBL2= "provider2" # Realtive weight of channels bandwidth W1= "2" W2= "1"









  20. #!/bin/bash # LAN interface IF0= "eth1" # WAN interface 1 IF1= "eth0" # WAN interface 2 IF2= "ppp0" IP1= "194.9.xx.xx" IP2= "`ip addr show $IF2 | grep inet | awk '{print $2}'`" # gateway 1 P1= "194.9.xx.xx" # gateway 2 P2= "195.5.xx.xx" # LAN netmask P0_NET= "192.168.0.0/24" # WAN1 netmask P1_NET= "194.9.xx.xx/xx" # WAN2 netmask P2_NET= "195.5.xx.xx/xx" TBL1= "provider1" TBL2= "provider2" # Realtive weight of channels bandwidth W1= "2" W2= "1"









  21. #!/bin/bash # LAN interface IF0= "eth1" # WAN interface 1 IF1= "eth0" # WAN interface 2 IF2= "ppp0" IP1= "194.9.xx.xx" IP2= "`ip addr show $IF2 | grep inet | awk '{print $2}'`" # gateway 1 P1= "194.9.xx.xx" # gateway 2 P2= "195.5.xx.xx" # LAN netmask P0_NET= "192.168.0.0/24" # WAN1 netmask P1_NET= "194.9.xx.xx/xx" # WAN2 netmask P2_NET= "195.5.xx.xx/xx" TBL1= "provider1" TBL2= "provider2" # Realtive weight of channels bandwidth W1= "2" W2= "1"









  22. #!/bin/bash # LAN interface IF0= "eth1" # WAN interface 1 IF1= "eth0" # WAN interface 2 IF2= "ppp0" IP1= "194.9.xx.xx" IP2= "`ip addr show $IF2 | grep inet | awk '{print $2}'`" # gateway 1 P1= "194.9.xx.xx" # gateway 2 P2= "195.5.xx.xx" # LAN netmask P0_NET= "192.168.0.0/24" # WAN1 netmask P1_NET= "194.9.xx.xx/xx" # WAN2 netmask P2_NET= "195.5.xx.xx/xx" TBL1= "provider1" TBL2= "provider2" # Realtive weight of channels bandwidth W1= "2" W2= "1"









  23. #!/bin/bash # LAN interface IF0= "eth1" # WAN interface 1 IF1= "eth0" # WAN interface 2 IF2= "ppp0" IP1= "194.9.xx.xx" IP2= "`ip addr show $IF2 | grep inet | awk '{print $2}'`" # gateway 1 P1= "194.9.xx.xx" # gateway 2 P2= "195.5.xx.xx" # LAN netmask P0_NET= "192.168.0.0/24" # WAN1 netmask P1_NET= "194.9.xx.xx/xx" # WAN2 netmask P2_NET= "195.5.xx.xx/xx" TBL1= "provider1" TBL2= "provider2" # Realtive weight of channels bandwidth W1= "2" W2= "1"









  24. #!/bin/bash # LAN interface IF0= "eth1" # WAN interface 1 IF1= "eth0" # WAN interface 2 IF2= "ppp0" IP1= "194.9.xx.xx" IP2= "`ip addr show $IF2 | grep inet | awk '{print $2}'`" # gateway 1 P1= "194.9.xx.xx" # gateway 2 P2= "195.5.xx.xx" # LAN netmask P0_NET= "192.168.0.0/24" # WAN1 netmask P1_NET= "194.9.xx.xx/xx" # WAN2 netmask P2_NET= "195.5.xx.xx/xx" TBL1= "provider1" TBL2= "provider2" # Realtive weight of channels bandwidth W1= "2" W2= "1"









#!/bin/bash # LAN interface IF0= "eth1" # WAN interface 1 IF1= "eth0" # WAN interface 2 IF2= "ppp0" IP1= "194.9.xx.xx" IP2= "`ip addr show $IF2 | grep inet | awk '{print $2}'`" # gateway 1 P1= "194.9.xx.xx" # gateway 2 P2= "195.5.xx.xx" # LAN netmask P0_NET= "192.168.0.0/24" # WAN1 netmask P1_NET= "194.9.xx.xx/xx" # WAN2 netmask P2_NET= "195.5.xx.xx/xx" TBL1= "provider1" TBL2= "provider2" # Realtive weight of channels bandwidth W1= "2" W2= "1"













/ etc / iproute2 / rt_tablesファイルに2つの追加ルーティングテーブルを追加します。

echo "1 provider1" >> /etc/iproute2/rt_tables

echo "2 provider2" >> /etc/iproute2/rt_tables









次に、必要なすべてのルートとファイアウォールルールを登録するスクリプトを作成します。



cat /etc/balance/routing.sh



  1. #!/bin/bash . /etc/balance/vars echo "1" > /proc/sys/net/ipv4/ip_forward ip route add $P1_NET dev $IF1 src $IP1 table $TBL1 > /dev/ null 2>&1 ip route add default via $P1 table $TBL1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 src $IP2 table $TBL2 > /dev/ null 2>&1 ip route add default via $P2 table $TBL2 > /dev/ null 2>&1 ip route add $P1_NET dev $IF1 src $IP1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 src $IP2 ip route add default via $P1 > /dev/ null 2>&1 ip rule add from $IP1 table $TBL1 > /dev/ null 2>&1 ip rule add from $IP2 table $TBL2 > /dev/ null 2>&1 ip route add $P0_NET dev $IF0 table $TBL1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 table $TBL1 > /dev/ null 2>&1 ip route add 127.0.0.0/8 dev lo table $TBL1 > /dev/ null 2>&1 ip route add $P0_NET dev $IF0 table $TBL2 > /dev/ null 2>&1 ip route add $P1_NET dev $IF1 table $TBL2 > /dev/ null 2>&1 ip route add 127.0.0.0/8 dev lo table $TBL2 > /dev/ null 2>&1 iptables -t nat -F POSTROUTING iptables -t nat -A POSTROUTING -s $P0_NET -o $IF1 -j MASQUERADE iptables -t nat -A POSTROUTING -s $P0_NET -o $IF2 -j MASQUERADE







  2. #!/bin/bash . /etc/balance/vars echo "1" > /proc/sys/net/ipv4/ip_forward ip route add $P1_NET dev $IF1 src $IP1 table $TBL1 > /dev/ null 2>&1 ip route add default via $P1 table $TBL1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 src $IP2 table $TBL2 > /dev/ null 2>&1 ip route add default via $P2 table $TBL2 > /dev/ null 2>&1 ip route add $P1_NET dev $IF1 src $IP1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 src $IP2 ip route add default via $P1 > /dev/ null 2>&1 ip rule add from $IP1 table $TBL1 > /dev/ null 2>&1 ip rule add from $IP2 table $TBL2 > /dev/ null 2>&1 ip route add $P0_NET dev $IF0 table $TBL1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 table $TBL1 > /dev/ null 2>&1 ip route add 127.0.0.0/8 dev lo table $TBL1 > /dev/ null 2>&1 ip route add $P0_NET dev $IF0 table $TBL2 > /dev/ null 2>&1 ip route add $P1_NET dev $IF1 table $TBL2 > /dev/ null 2>&1 ip route add 127.0.0.0/8 dev lo table $TBL2 > /dev/ null 2>&1 iptables -t nat -F POSTROUTING iptables -t nat -A POSTROUTING -s $P0_NET -o $IF1 -j MASQUERADE iptables -t nat -A POSTROUTING -s $P0_NET -o $IF2 -j MASQUERADE







  3. #!/bin/bash . /etc/balance/vars echo "1" > /proc/sys/net/ipv4/ip_forward ip route add $P1_NET dev $IF1 src $IP1 table $TBL1 > /dev/ null 2>&1 ip route add default via $P1 table $TBL1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 src $IP2 table $TBL2 > /dev/ null 2>&1 ip route add default via $P2 table $TBL2 > /dev/ null 2>&1 ip route add $P1_NET dev $IF1 src $IP1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 src $IP2 ip route add default via $P1 > /dev/ null 2>&1 ip rule add from $IP1 table $TBL1 > /dev/ null 2>&1 ip rule add from $IP2 table $TBL2 > /dev/ null 2>&1 ip route add $P0_NET dev $IF0 table $TBL1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 table $TBL1 > /dev/ null 2>&1 ip route add 127.0.0.0/8 dev lo table $TBL1 > /dev/ null 2>&1 ip route add $P0_NET dev $IF0 table $TBL2 > /dev/ null 2>&1 ip route add $P1_NET dev $IF1 table $TBL2 > /dev/ null 2>&1 ip route add 127.0.0.0/8 dev lo table $TBL2 > /dev/ null 2>&1 iptables -t nat -F POSTROUTING iptables -t nat -A POSTROUTING -s $P0_NET -o $IF1 -j MASQUERADE iptables -t nat -A POSTROUTING -s $P0_NET -o $IF2 -j MASQUERADE







  4. #!/bin/bash . /etc/balance/vars echo "1" > /proc/sys/net/ipv4/ip_forward ip route add $P1_NET dev $IF1 src $IP1 table $TBL1 > /dev/ null 2>&1 ip route add default via $P1 table $TBL1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 src $IP2 table $TBL2 > /dev/ null 2>&1 ip route add default via $P2 table $TBL2 > /dev/ null 2>&1 ip route add $P1_NET dev $IF1 src $IP1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 src $IP2 ip route add default via $P1 > /dev/ null 2>&1 ip rule add from $IP1 table $TBL1 > /dev/ null 2>&1 ip rule add from $IP2 table $TBL2 > /dev/ null 2>&1 ip route add $P0_NET dev $IF0 table $TBL1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 table $TBL1 > /dev/ null 2>&1 ip route add 127.0.0.0/8 dev lo table $TBL1 > /dev/ null 2>&1 ip route add $P0_NET dev $IF0 table $TBL2 > /dev/ null 2>&1 ip route add $P1_NET dev $IF1 table $TBL2 > /dev/ null 2>&1 ip route add 127.0.0.0/8 dev lo table $TBL2 > /dev/ null 2>&1 iptables -t nat -F POSTROUTING iptables -t nat -A POSTROUTING -s $P0_NET -o $IF1 -j MASQUERADE iptables -t nat -A POSTROUTING -s $P0_NET -o $IF2 -j MASQUERADE







  5. #!/bin/bash . /etc/balance/vars echo "1" > /proc/sys/net/ipv4/ip_forward ip route add $P1_NET dev $IF1 src $IP1 table $TBL1 > /dev/ null 2>&1 ip route add default via $P1 table $TBL1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 src $IP2 table $TBL2 > /dev/ null 2>&1 ip route add default via $P2 table $TBL2 > /dev/ null 2>&1 ip route add $P1_NET dev $IF1 src $IP1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 src $IP2 ip route add default via $P1 > /dev/ null 2>&1 ip rule add from $IP1 table $TBL1 > /dev/ null 2>&1 ip rule add from $IP2 table $TBL2 > /dev/ null 2>&1 ip route add $P0_NET dev $IF0 table $TBL1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 table $TBL1 > /dev/ null 2>&1 ip route add 127.0.0.0/8 dev lo table $TBL1 > /dev/ null 2>&1 ip route add $P0_NET dev $IF0 table $TBL2 > /dev/ null 2>&1 ip route add $P1_NET dev $IF1 table $TBL2 > /dev/ null 2>&1 ip route add 127.0.0.0/8 dev lo table $TBL2 > /dev/ null 2>&1 iptables -t nat -F POSTROUTING iptables -t nat -A POSTROUTING -s $P0_NET -o $IF1 -j MASQUERADE iptables -t nat -A POSTROUTING -s $P0_NET -o $IF2 -j MASQUERADE







  6. #!/bin/bash . /etc/balance/vars echo "1" > /proc/sys/net/ipv4/ip_forward ip route add $P1_NET dev $IF1 src $IP1 table $TBL1 > /dev/ null 2>&1 ip route add default via $P1 table $TBL1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 src $IP2 table $TBL2 > /dev/ null 2>&1 ip route add default via $P2 table $TBL2 > /dev/ null 2>&1 ip route add $P1_NET dev $IF1 src $IP1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 src $IP2 ip route add default via $P1 > /dev/ null 2>&1 ip rule add from $IP1 table $TBL1 > /dev/ null 2>&1 ip rule add from $IP2 table $TBL2 > /dev/ null 2>&1 ip route add $P0_NET dev $IF0 table $TBL1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 table $TBL1 > /dev/ null 2>&1 ip route add 127.0.0.0/8 dev lo table $TBL1 > /dev/ null 2>&1 ip route add $P0_NET dev $IF0 table $TBL2 > /dev/ null 2>&1 ip route add $P1_NET dev $IF1 table $TBL2 > /dev/ null 2>&1 ip route add 127.0.0.0/8 dev lo table $TBL2 > /dev/ null 2>&1 iptables -t nat -F POSTROUTING iptables -t nat -A POSTROUTING -s $P0_NET -o $IF1 -j MASQUERADE iptables -t nat -A POSTROUTING -s $P0_NET -o $IF2 -j MASQUERADE







  7. #!/bin/bash . /etc/balance/vars echo "1" > /proc/sys/net/ipv4/ip_forward ip route add $P1_NET dev $IF1 src $IP1 table $TBL1 > /dev/ null 2>&1 ip route add default via $P1 table $TBL1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 src $IP2 table $TBL2 > /dev/ null 2>&1 ip route add default via $P2 table $TBL2 > /dev/ null 2>&1 ip route add $P1_NET dev $IF1 src $IP1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 src $IP2 ip route add default via $P1 > /dev/ null 2>&1 ip rule add from $IP1 table $TBL1 > /dev/ null 2>&1 ip rule add from $IP2 table $TBL2 > /dev/ null 2>&1 ip route add $P0_NET dev $IF0 table $TBL1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 table $TBL1 > /dev/ null 2>&1 ip route add 127.0.0.0/8 dev lo table $TBL1 > /dev/ null 2>&1 ip route add $P0_NET dev $IF0 table $TBL2 > /dev/ null 2>&1 ip route add $P1_NET dev $IF1 table $TBL2 > /dev/ null 2>&1 ip route add 127.0.0.0/8 dev lo table $TBL2 > /dev/ null 2>&1 iptables -t nat -F POSTROUTING iptables -t nat -A POSTROUTING -s $P0_NET -o $IF1 -j MASQUERADE iptables -t nat -A POSTROUTING -s $P0_NET -o $IF2 -j MASQUERADE







  8. #!/bin/bash . /etc/balance/vars echo "1" > /proc/sys/net/ipv4/ip_forward ip route add $P1_NET dev $IF1 src $IP1 table $TBL1 > /dev/ null 2>&1 ip route add default via $P1 table $TBL1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 src $IP2 table $TBL2 > /dev/ null 2>&1 ip route add default via $P2 table $TBL2 > /dev/ null 2>&1 ip route add $P1_NET dev $IF1 src $IP1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 src $IP2 ip route add default via $P1 > /dev/ null 2>&1 ip rule add from $IP1 table $TBL1 > /dev/ null 2>&1 ip rule add from $IP2 table $TBL2 > /dev/ null 2>&1 ip route add $P0_NET dev $IF0 table $TBL1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 table $TBL1 > /dev/ null 2>&1 ip route add 127.0.0.0/8 dev lo table $TBL1 > /dev/ null 2>&1 ip route add $P0_NET dev $IF0 table $TBL2 > /dev/ null 2>&1 ip route add $P1_NET dev $IF1 table $TBL2 > /dev/ null 2>&1 ip route add 127.0.0.0/8 dev lo table $TBL2 > /dev/ null 2>&1 iptables -t nat -F POSTROUTING iptables -t nat -A POSTROUTING -s $P0_NET -o $IF1 -j MASQUERADE iptables -t nat -A POSTROUTING -s $P0_NET -o $IF2 -j MASQUERADE







  9. #!/bin/bash . /etc/balance/vars echo "1" > /proc/sys/net/ipv4/ip_forward ip route add $P1_NET dev $IF1 src $IP1 table $TBL1 > /dev/ null 2>&1 ip route add default via $P1 table $TBL1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 src $IP2 table $TBL2 > /dev/ null 2>&1 ip route add default via $P2 table $TBL2 > /dev/ null 2>&1 ip route add $P1_NET dev $IF1 src $IP1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 src $IP2 ip route add default via $P1 > /dev/ null 2>&1 ip rule add from $IP1 table $TBL1 > /dev/ null 2>&1 ip rule add from $IP2 table $TBL2 > /dev/ null 2>&1 ip route add $P0_NET dev $IF0 table $TBL1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 table $TBL1 > /dev/ null 2>&1 ip route add 127.0.0.0/8 dev lo table $TBL1 > /dev/ null 2>&1 ip route add $P0_NET dev $IF0 table $TBL2 > /dev/ null 2>&1 ip route add $P1_NET dev $IF1 table $TBL2 > /dev/ null 2>&1 ip route add 127.0.0.0/8 dev lo table $TBL2 > /dev/ null 2>&1 iptables -t nat -F POSTROUTING iptables -t nat -A POSTROUTING -s $P0_NET -o $IF1 -j MASQUERADE iptables -t nat -A POSTROUTING -s $P0_NET -o $IF2 -j MASQUERADE







  10. #!/bin/bash . /etc/balance/vars echo "1" > /proc/sys/net/ipv4/ip_forward ip route add $P1_NET dev $IF1 src $IP1 table $TBL1 > /dev/ null 2>&1 ip route add default via $P1 table $TBL1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 src $IP2 table $TBL2 > /dev/ null 2>&1 ip route add default via $P2 table $TBL2 > /dev/ null 2>&1 ip route add $P1_NET dev $IF1 src $IP1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 src $IP2 ip route add default via $P1 > /dev/ null 2>&1 ip rule add from $IP1 table $TBL1 > /dev/ null 2>&1 ip rule add from $IP2 table $TBL2 > /dev/ null 2>&1 ip route add $P0_NET dev $IF0 table $TBL1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 table $TBL1 > /dev/ null 2>&1 ip route add 127.0.0.0/8 dev lo table $TBL1 > /dev/ null 2>&1 ip route add $P0_NET dev $IF0 table $TBL2 > /dev/ null 2>&1 ip route add $P1_NET dev $IF1 table $TBL2 > /dev/ null 2>&1 ip route add 127.0.0.0/8 dev lo table $TBL2 > /dev/ null 2>&1 iptables -t nat -F POSTROUTING iptables -t nat -A POSTROUTING -s $P0_NET -o $IF1 -j MASQUERADE iptables -t nat -A POSTROUTING -s $P0_NET -o $IF2 -j MASQUERADE







  11. #!/bin/bash . /etc/balance/vars echo "1" > /proc/sys/net/ipv4/ip_forward ip route add $P1_NET dev $IF1 src $IP1 table $TBL1 > /dev/ null 2>&1 ip route add default via $P1 table $TBL1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 src $IP2 table $TBL2 > /dev/ null 2>&1 ip route add default via $P2 table $TBL2 > /dev/ null 2>&1 ip route add $P1_NET dev $IF1 src $IP1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 src $IP2 ip route add default via $P1 > /dev/ null 2>&1 ip rule add from $IP1 table $TBL1 > /dev/ null 2>&1 ip rule add from $IP2 table $TBL2 > /dev/ null 2>&1 ip route add $P0_NET dev $IF0 table $TBL1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 table $TBL1 > /dev/ null 2>&1 ip route add 127.0.0.0/8 dev lo table $TBL1 > /dev/ null 2>&1 ip route add $P0_NET dev $IF0 table $TBL2 > /dev/ null 2>&1 ip route add $P1_NET dev $IF1 table $TBL2 > /dev/ null 2>&1 ip route add 127.0.0.0/8 dev lo table $TBL2 > /dev/ null 2>&1 iptables -t nat -F POSTROUTING iptables -t nat -A POSTROUTING -s $P0_NET -o $IF1 -j MASQUERADE iptables -t nat -A POSTROUTING -s $P0_NET -o $IF2 -j MASQUERADE







  12. #!/bin/bash . /etc/balance/vars echo "1" > /proc/sys/net/ipv4/ip_forward ip route add $P1_NET dev $IF1 src $IP1 table $TBL1 > /dev/ null 2>&1 ip route add default via $P1 table $TBL1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 src $IP2 table $TBL2 > /dev/ null 2>&1 ip route add default via $P2 table $TBL2 > /dev/ null 2>&1 ip route add $P1_NET dev $IF1 src $IP1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 src $IP2 ip route add default via $P1 > /dev/ null 2>&1 ip rule add from $IP1 table $TBL1 > /dev/ null 2>&1 ip rule add from $IP2 table $TBL2 > /dev/ null 2>&1 ip route add $P0_NET dev $IF0 table $TBL1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 table $TBL1 > /dev/ null 2>&1 ip route add 127.0.0.0/8 dev lo table $TBL1 > /dev/ null 2>&1 ip route add $P0_NET dev $IF0 table $TBL2 > /dev/ null 2>&1 ip route add $P1_NET dev $IF1 table $TBL2 > /dev/ null 2>&1 ip route add 127.0.0.0/8 dev lo table $TBL2 > /dev/ null 2>&1 iptables -t nat -F POSTROUTING iptables -t nat -A POSTROUTING -s $P0_NET -o $IF1 -j MASQUERADE iptables -t nat -A POSTROUTING -s $P0_NET -o $IF2 -j MASQUERADE







  13. #!/bin/bash . /etc/balance/vars echo "1" > /proc/sys/net/ipv4/ip_forward ip route add $P1_NET dev $IF1 src $IP1 table $TBL1 > /dev/ null 2>&1 ip route add default via $P1 table $TBL1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 src $IP2 table $TBL2 > /dev/ null 2>&1 ip route add default via $P2 table $TBL2 > /dev/ null 2>&1 ip route add $P1_NET dev $IF1 src $IP1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 src $IP2 ip route add default via $P1 > /dev/ null 2>&1 ip rule add from $IP1 table $TBL1 > /dev/ null 2>&1 ip rule add from $IP2 table $TBL2 > /dev/ null 2>&1 ip route add $P0_NET dev $IF0 table $TBL1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 table $TBL1 > /dev/ null 2>&1 ip route add 127.0.0.0/8 dev lo table $TBL1 > /dev/ null 2>&1 ip route add $P0_NET dev $IF0 table $TBL2 > /dev/ null 2>&1 ip route add $P1_NET dev $IF1 table $TBL2 > /dev/ null 2>&1 ip route add 127.0.0.0/8 dev lo table $TBL2 > /dev/ null 2>&1 iptables -t nat -F POSTROUTING iptables -t nat -A POSTROUTING -s $P0_NET -o $IF1 -j MASQUERADE iptables -t nat -A POSTROUTING -s $P0_NET -o $IF2 -j MASQUERADE







  14. #!/bin/bash . /etc/balance/vars echo "1" > /proc/sys/net/ipv4/ip_forward ip route add $P1_NET dev $IF1 src $IP1 table $TBL1 > /dev/ null 2>&1 ip route add default via $P1 table $TBL1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 src $IP2 table $TBL2 > /dev/ null 2>&1 ip route add default via $P2 table $TBL2 > /dev/ null 2>&1 ip route add $P1_NET dev $IF1 src $IP1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 src $IP2 ip route add default via $P1 > /dev/ null 2>&1 ip rule add from $IP1 table $TBL1 > /dev/ null 2>&1 ip rule add from $IP2 table $TBL2 > /dev/ null 2>&1 ip route add $P0_NET dev $IF0 table $TBL1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 table $TBL1 > /dev/ null 2>&1 ip route add 127.0.0.0/8 dev lo table $TBL1 > /dev/ null 2>&1 ip route add $P0_NET dev $IF0 table $TBL2 > /dev/ null 2>&1 ip route add $P1_NET dev $IF1 table $TBL2 > /dev/ null 2>&1 ip route add 127.0.0.0/8 dev lo table $TBL2 > /dev/ null 2>&1 iptables -t nat -F POSTROUTING iptables -t nat -A POSTROUTING -s $P0_NET -o $IF1 -j MASQUERADE iptables -t nat -A POSTROUTING -s $P0_NET -o $IF2 -j MASQUERADE







  15. #!/bin/bash . /etc/balance/vars echo "1" > /proc/sys/net/ipv4/ip_forward ip route add $P1_NET dev $IF1 src $IP1 table $TBL1 > /dev/ null 2>&1 ip route add default via $P1 table $TBL1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 src $IP2 table $TBL2 > /dev/ null 2>&1 ip route add default via $P2 table $TBL2 > /dev/ null 2>&1 ip route add $P1_NET dev $IF1 src $IP1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 src $IP2 ip route add default via $P1 > /dev/ null 2>&1 ip rule add from $IP1 table $TBL1 > /dev/ null 2>&1 ip rule add from $IP2 table $TBL2 > /dev/ null 2>&1 ip route add $P0_NET dev $IF0 table $TBL1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 table $TBL1 > /dev/ null 2>&1 ip route add 127.0.0.0/8 dev lo table $TBL1 > /dev/ null 2>&1 ip route add $P0_NET dev $IF0 table $TBL2 > /dev/ null 2>&1 ip route add $P1_NET dev $IF1 table $TBL2 > /dev/ null 2>&1 ip route add 127.0.0.0/8 dev lo table $TBL2 > /dev/ null 2>&1 iptables -t nat -F POSTROUTING iptables -t nat -A POSTROUTING -s $P0_NET -o $IF1 -j MASQUERADE iptables -t nat -A POSTROUTING -s $P0_NET -o $IF2 -j MASQUERADE







  16. #!/bin/bash . /etc/balance/vars echo "1" > /proc/sys/net/ipv4/ip_forward ip route add $P1_NET dev $IF1 src $IP1 table $TBL1 > /dev/ null 2>&1 ip route add default via $P1 table $TBL1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 src $IP2 table $TBL2 > /dev/ null 2>&1 ip route add default via $P2 table $TBL2 > /dev/ null 2>&1 ip route add $P1_NET dev $IF1 src $IP1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 src $IP2 ip route add default via $P1 > /dev/ null 2>&1 ip rule add from $IP1 table $TBL1 > /dev/ null 2>&1 ip rule add from $IP2 table $TBL2 > /dev/ null 2>&1 ip route add $P0_NET dev $IF0 table $TBL1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 table $TBL1 > /dev/ null 2>&1 ip route add 127.0.0.0/8 dev lo table $TBL1 > /dev/ null 2>&1 ip route add $P0_NET dev $IF0 table $TBL2 > /dev/ null 2>&1 ip route add $P1_NET dev $IF1 table $TBL2 > /dev/ null 2>&1 ip route add 127.0.0.0/8 dev lo table $TBL2 > /dev/ null 2>&1 iptables -t nat -F POSTROUTING iptables -t nat -A POSTROUTING -s $P0_NET -o $IF1 -j MASQUERADE iptables -t nat -A POSTROUTING -s $P0_NET -o $IF2 -j MASQUERADE







  17. #!/bin/bash . /etc/balance/vars echo "1" > /proc/sys/net/ipv4/ip_forward ip route add $P1_NET dev $IF1 src $IP1 table $TBL1 > /dev/ null 2>&1 ip route add default via $P1 table $TBL1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 src $IP2 table $TBL2 > /dev/ null 2>&1 ip route add default via $P2 table $TBL2 > /dev/ null 2>&1 ip route add $P1_NET dev $IF1 src $IP1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 src $IP2 ip route add default via $P1 > /dev/ null 2>&1 ip rule add from $IP1 table $TBL1 > /dev/ null 2>&1 ip rule add from $IP2 table $TBL2 > /dev/ null 2>&1 ip route add $P0_NET dev $IF0 table $TBL1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 table $TBL1 > /dev/ null 2>&1 ip route add 127.0.0.0/8 dev lo table $TBL1 > /dev/ null 2>&1 ip route add $P0_NET dev $IF0 table $TBL2 > /dev/ null 2>&1 ip route add $P1_NET dev $IF1 table $TBL2 > /dev/ null 2>&1 ip route add 127.0.0.0/8 dev lo table $TBL2 > /dev/ null 2>&1 iptables -t nat -F POSTROUTING iptables -t nat -A POSTROUTING -s $P0_NET -o $IF1 -j MASQUERADE iptables -t nat -A POSTROUTING -s $P0_NET -o $IF2 -j MASQUERADE







  18. #!/bin/bash . /etc/balance/vars echo "1" > /proc/sys/net/ipv4/ip_forward ip route add $P1_NET dev $IF1 src $IP1 table $TBL1 > /dev/ null 2>&1 ip route add default via $P1 table $TBL1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 src $IP2 table $TBL2 > /dev/ null 2>&1 ip route add default via $P2 table $TBL2 > /dev/ null 2>&1 ip route add $P1_NET dev $IF1 src $IP1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 src $IP2 ip route add default via $P1 > /dev/ null 2>&1 ip rule add from $IP1 table $TBL1 > /dev/ null 2>&1 ip rule add from $IP2 table $TBL2 > /dev/ null 2>&1 ip route add $P0_NET dev $IF0 table $TBL1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 table $TBL1 > /dev/ null 2>&1 ip route add 127.0.0.0/8 dev lo table $TBL1 > /dev/ null 2>&1 ip route add $P0_NET dev $IF0 table $TBL2 > /dev/ null 2>&1 ip route add $P1_NET dev $IF1 table $TBL2 > /dev/ null 2>&1 ip route add 127.0.0.0/8 dev lo table $TBL2 > /dev/ null 2>&1 iptables -t nat -F POSTROUTING iptables -t nat -A POSTROUTING -s $P0_NET -o $IF1 -j MASQUERADE iptables -t nat -A POSTROUTING -s $P0_NET -o $IF2 -j MASQUERADE







  19. #!/bin/bash . /etc/balance/vars echo "1" > /proc/sys/net/ipv4/ip_forward ip route add $P1_NET dev $IF1 src $IP1 table $TBL1 > /dev/ null 2>&1 ip route add default via $P1 table $TBL1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 src $IP2 table $TBL2 > /dev/ null 2>&1 ip route add default via $P2 table $TBL2 > /dev/ null 2>&1 ip route add $P1_NET dev $IF1 src $IP1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 src $IP2 ip route add default via $P1 > /dev/ null 2>&1 ip rule add from $IP1 table $TBL1 > /dev/ null 2>&1 ip rule add from $IP2 table $TBL2 > /dev/ null 2>&1 ip route add $P0_NET dev $IF0 table $TBL1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 table $TBL1 > /dev/ null 2>&1 ip route add 127.0.0.0/8 dev lo table $TBL1 > /dev/ null 2>&1 ip route add $P0_NET dev $IF0 table $TBL2 > /dev/ null 2>&1 ip route add $P1_NET dev $IF1 table $TBL2 > /dev/ null 2>&1 ip route add 127.0.0.0/8 dev lo table $TBL2 > /dev/ null 2>&1 iptables -t nat -F POSTROUTING iptables -t nat -A POSTROUTING -s $P0_NET -o $IF1 -j MASQUERADE iptables -t nat -A POSTROUTING -s $P0_NET -o $IF2 -j MASQUERADE







  20. #!/bin/bash . /etc/balance/vars echo "1" > /proc/sys/net/ipv4/ip_forward ip route add $P1_NET dev $IF1 src $IP1 table $TBL1 > /dev/ null 2>&1 ip route add default via $P1 table $TBL1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 src $IP2 table $TBL2 > /dev/ null 2>&1 ip route add default via $P2 table $TBL2 > /dev/ null 2>&1 ip route add $P1_NET dev $IF1 src $IP1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 src $IP2 ip route add default via $P1 > /dev/ null 2>&1 ip rule add from $IP1 table $TBL1 > /dev/ null 2>&1 ip rule add from $IP2 table $TBL2 > /dev/ null 2>&1 ip route add $P0_NET dev $IF0 table $TBL1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 table $TBL1 > /dev/ null 2>&1 ip route add 127.0.0.0/8 dev lo table $TBL1 > /dev/ null 2>&1 ip route add $P0_NET dev $IF0 table $TBL2 > /dev/ null 2>&1 ip route add $P1_NET dev $IF1 table $TBL2 > /dev/ null 2>&1 ip route add 127.0.0.0/8 dev lo table $TBL2 > /dev/ null 2>&1 iptables -t nat -F POSTROUTING iptables -t nat -A POSTROUTING -s $P0_NET -o $IF1 -j MASQUERADE iptables -t nat -A POSTROUTING -s $P0_NET -o $IF2 -j MASQUERADE







  21. #!/bin/bash . /etc/balance/vars echo "1" > /proc/sys/net/ipv4/ip_forward ip route add $P1_NET dev $IF1 src $IP1 table $TBL1 > /dev/ null 2>&1 ip route add default via $P1 table $TBL1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 src $IP2 table $TBL2 > /dev/ null 2>&1 ip route add default via $P2 table $TBL2 > /dev/ null 2>&1 ip route add $P1_NET dev $IF1 src $IP1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 src $IP2 ip route add default via $P1 > /dev/ null 2>&1 ip rule add from $IP1 table $TBL1 > /dev/ null 2>&1 ip rule add from $IP2 table $TBL2 > /dev/ null 2>&1 ip route add $P0_NET dev $IF0 table $TBL1 > /dev/ null 2>&1 ip route add $P2_NET dev $IF2 table $TBL1 > /dev/ null 2>&1 ip route add 127.0.0.0/8 dev lo table $TBL1 > /dev/ null 2>&1 ip route add $P0_NET dev $IF0 table $TBL2 > /dev/ null 2>&1 ip route add $P1_NET dev $IF1 table $TBL2 > /dev/ null 2>&1 ip route add 127.0.0.0/8 dev lo table $TBL2 > /dev/ null 2>&1 iptables -t nat -F POSTROUTING iptables -t nat -A POSTROUTING -s $P0_NET -o $IF1 -j MASQUERADE iptables -t nat -A POSTROUTING -s $P0_NET -o $IF2 -j MASQUERADE











この一連のコマンドは、要求が受信されたインターフェイスを介した応答のルーティングと、両方のインターフェイスでのマスカレードを提供します。



次に、特定のチャネルが機能するかどうかを判断し、それに応じてデフォルトゲートウェイエントリを変更するスクリプトを作成します。



$ cat /etc/balance/check.sh



  1. #!/ bin / bash
  2. 。 / etc / balance / vars
  3. OLDIF1 = 0
  4. OLDIF2 = 0
  5. 。 /etc/balance/routing.sh
  6. 本当 ながら する
  7. ping -c 3 -s 100 $ P1 -I $ IF1> / dev / null
  8. [$? -ne 0]; それから
  9. echo "失敗したIF1!"
  10. NEWIF1 = 0
  11. 他に
  12. NEWIF1 = 1
  13. fi
  14. ping -c 3 -s 100 $ P2 -I $ IF2> / dev / null
  15. [$? -ne 0]; それから
  16. echo "IF2に失敗しました!"
  17. NEWIF2 = 0
  18. 他に
  19. NEWIF2 = 1
  20. fi
  21. if ((($ NEWIF1!= $ OLDIF1)||($ NEWIF2!= $ OLDIF2))); それから
  22. echo "ルートの変更"
  23. if ((($ NEWIF1 == 1)&&($ NEWIF2 == 1))); それから
  24. エコー「両方のチャンネル」
  25. ip route delete default
  26. ip route $ P1 dev経由でデフォルトスコープグローバルネクストホップを追加$ IF1重み$ W1 \
  27. $ P2 devを介したnexthop $ IF2の重み$ W2
  28. elif((($ NEWIF1 == 1)&&($ NEWIF2 == 0))); それから
  29. エコー「最初のチャンネル」
  30. ip route delete default
  31. ip routeは、$ P1 dev $ IF1を介してデフォルトを追加します
  32. elif((($ NEWIF1 == 0)&&($ NEWIF2 == 1))); それから
  33. エコー「第2チャネル」
  34. ip route delete default
  35. ip routeは、$ P2 dev $ IF2を介してデフォルトを追加します
  36. fi
  37. 他に
  38. echo "変更なし"
  39. fi
  40. OLDIF1 = $ NEWIF1
  41. OLDIF2 = $ NEWIF2
  42. 寝る3
  43. やった




pingゲートウェイによるチャネルの動作を確認し、3つのpingへの応答が連続していない場合、チャネルが落ちたと見なし、それに応じてルーティングテーブルから除外します。



したがって、両方のチャネルが機能する場合:



$ ipルート

195.5.xx.xx dev ppp0 proto kernel scope link src 95.133.xx.xx

194.9.xx.xx/xx dev eth0 proto kernel scope link src 194.9.xx.xx

192.168.0.0/24 dev eth1 proto kernel scope link src 192.168.0.75

default

nexthop via 194.9.xx.xx dev eth0 weight 2

nexthop via 195.5.xx.xx dev ppp0 weight 1









合計で2つのデフォルトgwがあります。1つ目は2の重みで、2つ目は1の重みです。つまり、2つ目よりも2倍のトラフィックが最初のチャネルを通過します。



これらのスクリプトをニーズに合わせてカスタマイズするには、varsファイルの値を構成する必要があります。残りのスクリプトは実際には構成を必要としません。



All Articles