プロバイダーの価格設定ポリシーは、速度を2倍にするために2倍も支払う必要があるように設計されています。 そして、もっとスピードが欲しい! 信頼性も-激しい霜のときのように、ルーターは「冷たく」なり、夕方と夜はインターネットがありませんでした。
したがって、私は2番目のインターネットチャネルを持ち帰ることにしました。ADSL経由のアクセスを提供するウクライナの有名なプロバイダーの1つが選択されました。 安価な関税があり、ADSLモデムは安価です。 だから、私はスイッチにADLSモデムを接続し、接続しました-すべてが機能します。 しかし、古き良きワイヤレスチャネルを拒否したくなかったため、合計帯域幅を使用できるように、インターネットトラフィックが両方のチャネルを同時に通過することを確認することにしました。 はい。1つのチャネルが落ちたときに、すべての負荷が別のチャネルによって負担されることになります。
インターネットを検索した結果、少なくとも2つの解決策があることがわかりました。
-ファイアウォールレベルで、異なるインターフェイスにTCPセッションを分散します。 短所-1人のユーザーからの連続した要求が異なるチャネルおよび異なるIPから来る可能性があるため、セッションがIPアドレスにバインドされているサイトは機能しなくなります。
-ルーティングレベルで、異なるインターフェイスを介してルートを分散します。 ルートはキャッシュされ、同じアドレスへの後続の呼び出しは同じインターフェイスを通過するため、最初のソリューションで問題は発生しません。 ただし、バランシングはそれほど正確ではなく、複数のストリームで1つのサーバーからダウンロードしても、2つのチャネルの合計速度を達成することはできません。
すべてのサイトの安定した動作が私にとって非常に重要であるため、ルーティングを使用してバランスをとることを選択しました。まあ、この機能はすでに私のコアにあり、ファイアウォールにパッチを適用する必要があります。
それでは始めましょう!
まず、変数を定義します。
$ cat / etc / balance / vars
#!/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"
#!/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"
#!/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"
#!/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"
#!/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"
#!/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"
#!/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"
#!/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"
#!/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"
#!/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"
#!/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"
#!/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"
#!/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
#!/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
#!/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
#!/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
#!/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
#!/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
#!/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
#!/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
#!/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
#!/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
#!/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
#!/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
#!/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
#!/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
#!/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
#!/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
#!/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
#!/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
#!/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
#!/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
#!/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
#!/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
- #!/ bin / bash
- 。 / etc / balance / vars
- OLDIF1 = 0
- OLDIF2 = 0
- 。 /etc/balance/routing.sh
- 本当 ながら する
- ping -c 3 -s 100 $ P1 -I $ IF1> / dev / null
- [$? -ne 0]; それから
- echo "失敗したIF1!"
- NEWIF1 = 0
- 他に
- NEWIF1 = 1
- fi
- ping -c 3 -s 100 $ P2 -I $ IF2> / dev / null
- [$? -ne 0]; それから
- echo "IF2に失敗しました!"
- NEWIF2 = 0
- 他に
- NEWIF2 = 1
- fi
- if ((($ NEWIF1!= $ OLDIF1)||($ NEWIF2!= $ OLDIF2))); それから
- echo "ルートの変更"
- if ((($ NEWIF1 == 1)&&($ NEWIF2 == 1))); それから
- エコー「両方のチャンネル」
- ip route delete default
- ip route $ P1 dev経由でデフォルトスコープグローバルネクストホップを追加$ IF1重み$ W1 \
- $ P2 devを介したnexthop $ IF2の重み$ W2
- elif((($ NEWIF1 == 1)&&($ NEWIF2 == 0))); それから
- エコー「最初のチャンネル」
- ip route delete default
- ip routeは、$ P1 dev $ IF1を介してデフォルトを追加します
- elif((($ NEWIF1 == 0)&&($ NEWIF2 == 1))); それから
- エコー「第2チャネル」
- ip route delete default
- ip routeは、$ P2 dev $ IF2を介してデフォルトを追加します
- fi
- 他に
- echo "変更なし"
- fi
- OLDIF1 = $ NEWIF1
- OLDIF2 = $ NEWIF2
- 寝る3
- やった
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ファイルの値を構成する必要があります。残りのスクリプトは実際には構成を必要としません。