debianでiproute2を使ったルーティングを設定する

iproute2を使ったルーティング設定をしたい場合、RedHat系だと/etc/sysconfig/network-scripts以下のファイルを編集して設定できますが、Debian系はどうすれば良いのか調べてみたら次のページが見つかりました。

Routing for multiple uplinks

このページでは/etc/network/interfaces中でpost-up/post-downを使って、ifup/ifdown時にiproute2コマンドを実行して設定しています。

紹介されている設定例は、Linux Advanced Routing & Traffic Control HOWTOの「4.2. 複数のアップリンク/プロバイダに対するルーティング」と同一です。

http://www.linux.or.jp/JF/JFdocs/Adv-Routing-HOWTO/lartc.rpdb.multiple-links.html

僕はバランシングの必要がなかったので、再起動でソースアドレスルーティングが設定される部分までしか確認していません。詳しくはリンク先を参照して下さい。

以下はリンク先を参考に、手元の環境でソースアドレスルーティングを設定した作業メモです(※繰り返しますがバランシングはしていません)。

インストール

apt-get install iproute

セットアップ

eth0が192.168.1.2/24でゲートウェイが192.168.1.1、eth1が192.168.2.2/24でゲートウェイが192.168.2.1とします。デフォルトゲートウェイは192.168.1.1にします。どちらもアップリンクでLANはありません。

アップリンクのためのテーブルT1/T2を作ります。/etc/iproute2/rt_tablesを以下のように記述。

#
# reserved values
#
255     local
254     main
253     default
0       unspec
#
# local
#
200     T1
201     T2

続いて/etc/network/interfacesを以下のように記述。

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address 192.168.1.2
        netmask 255.255.255.0
        post-up ip route add 192.168.1.0/24 dev eth0 src 192.168.1.2 table T1
        post-up ip route add default via 192.168.1.1 table T1
        post-up ip route add default via 192.168.1.1
        post-up ip rule add from 192.168.1.2 table T1
        post-down ip rule del from 192.168.1.2 table T1

auto eth1
iface eth1 inet static
        address 192.168.2.2
        netmask 255.255.255.0
        post-up ip route add 192.168.2.0/24 dev eth1 src 192.168.2.2 table T2
        post-up ip route add default via 192.168.2.1 table T2
        post-up ip rule add from 192.168.2.2 table T2
        post-down ip rule del from 192.168.2.2 table T2

この状態でifup/ifdownするとiproute2で経路が追加/削除される事が確認できます。