カスタム検索
このエントリーをはてなブックマークに追加
tomo.gif (1144 ツバツイツト)line.gif (927 ツバツイツト)line.gif (927 ツバツイツト)line.gif (927 ツバツイツト)To previous pageTo home pageMailing to me

マルチホーミングの実験

Created: 12 July 2009

マルチホーミングとは、複数の経路(ISP)を使って接続することです。どちうらかのサービスがとまっても別の経路から接続できます。

ポリシールーティングという設定を行います。


受信側に応答を返す方法 (12 July 2009)
送信 負荷分散の方法 (12 July 2009)


受信側に応答を返す方法 

設定する環境(前提条件)

2つの経路(ISP)に接続し、それぞれにルータが接続されています。

サーバーには、2つのNICがあり、それぞれ、IF1=eth0IP1=192.168.0.100)と、IF2=eth1IP2=192.168.1.100)に、それぞれのルータ(GW1=192.168.0.1がIP1=192.168.0.100、GW2=192.168.1.1がIP2=192.168.1.100)が接続されています。


設定スクリプト

以下のスクリプトで設定します。

自動実行のため、"iproute.sh"のファイル名で保存します。

#!/bin/bash

NET1=192.168.0.0/24
NET2=192.168.1.0/24
IP1=192.168.0.100
IP2=192.168.1.100
GW1=192.168.0.1
GW2=192.168.1.1
IF1=eth0
IF2=eth1
T1=100
T2=200

# table flush
ip route show table $T1 | sed -n 's/\(.*\)/ip route del \1 table '$T1'/p' | sh
ip route show table $T2 | sed -n 's/\(.*\)/ip route del \1 table '$T2'/p' | sh
ip route show table main | sed -n 's/^[0-9]/ip route del &/p' | sh
ip route show table main | sed -n 's/^default/ip route del &/p' | sh
ip rule show | sed -n 's/[0-9]\(.*'$T1'\)/ip rule del from '$IP1' table '$T1'/p' | sh
ip rule show | sed -n 's/[0-9]\(.*'$T2'\)/ip rule del from '$IP2' table '$T2'/p' | sh

# set route & rule
ip route add $NET1 dev $IF1 src $IP1
ip route add $NET2 dev $IF2 src $IP2
ip route add $NET1 dev $IF1 src $IP1 table $T1
ip route add default via $GW1 table $T1
ip route add $NET2 dev $IF1 src $IP2 table $T2
ip route add default via $GW2 table $T2
ip route add default via $GW1
ip rule add from $IP1 table $T1
ip rule add from $IP2 table $T2
ip route flush cache


設定の確認

# ip rule show
0:     from all lookup 255
32764: from 192.168.1.100 lookup 200
32765: from 192.168.0.100 lookup 100
32766: from all lookup main
32767: from all lookup default
# ip route show table 100
192.168.0.0/26 dev eth0 scope link src 192.168.0.100
default via 192.168.0.1 dev eth0
# ip route show table 200
192.168.1.0/26 dev eth0 scope link src 192.168.1.100
default via 192.168.1.1 dev eth1
# ip route show
192.168.1.0/26 dev eth1 scope link src 192.168.1.100
192.168.0.0/26 dev eth0 scope link src 192.168.0.100
default via 192.168.0.1 dev eth0
#

起動時の自動実行

"/etc/rc.local"に追加します。

#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local

sh /root/iproute.sh
 


動作確認

外部から接続し、どちらからでも接続できることを確認します。


送信 負荷分散の方法 

デフォルトルートの設定を以下のように変更すれば、OKです。

#!/bin/bash

   :

ip route add default scope global \
    nexthop via $IP1 dev $IF1 weight 10 \
    nexthop via $IP2 dev $IF2 weight 10

   :
 


設定の確認

# ip rule show
0:     from all lookup 255
32764: from 192.168.1.100 lookup 200
32765: from 192.168.0.100 lookup 100
32766: from all lookup main
32767: from all lookup default
# ip route show table 100
192.168.0.0/26 dev eth0 scope link src 192.168.0.100
default via 192.168.0.1 dev eth0
# ip route show table 200
192.168.1.0/26 dev eth0 scope link src 192.168.1.100
default via 192.168.1.1 dev eth1
# ip route show
192.168.1.0/26 dev eth1 scope link src 192.168.1.100
192.168.0.0/26 dev eth0 scope link src 192.168.0.100
default
        nexthop via 192.168.0.100 dev eth0 weight 10
        nexthop via 192.168.1.100 dev eth1 weight 10

#


動作確認

"traceroute www.yahoo.co.jp"を何度か実行し、先頭に出てくるIPアドレスが変わるのを確認します。


To previous pageTo home pageMailing to meJump to Top of pageline.gif (927 ツバツイツト)line.gif (927 ツバツイツト)tomo.gif (1144 ツバツイツト)
カスタム検索



このエントリーをはてなブックマークに追加