Top > Memo >

ルーティングの設定 on Gentoo

Saturday, August 27, 2011 03:58 UTC

現在、メインマシンには光回線への接続と、WiMaxルータへ有線接続の2つのネットワークインターフェースが存在する。

当然普段は光回線を利用してインターネットに接続したいのだが、なぜかルーティングがWiMax回線の方を優先してしまう。

以下、eth0が光回線側(ゲートウェイ 192.168.0.254)、eth1がWiMax回線側(ゲートウェイ 192.168.1.254)とした場合のroute結果。

# route -n
Destination   Gateway       Genmask         Flags Metric Ref Use Iface
0.0.0.0       192.168.1.254 0.0.0.0         UG    2      0   0   eth1
0.0.0.0       192.168.0.254 0.0.0.0         UG    3      0   0   eth0
127.0.0.0     127.0.0.1     255.0.0.0       UG    0      0   0   lo
192.168.1.0   0.0.0.0       255.255.255.0   U     2      0   0   eth1
192.168.0.0   0.0.0.0       255.255.255.0   U     3      0   0   eth0

なぜWiMax回線側のmetricが低く設定されるのかは正直さっぱりわからないので
強引にrouteコマンドでルーティングを設定する事にした。

routeコマンドでルーティングを変更するのは、

# route del default gw 192.168.0.254
# route add default gw 192.168.0.254 metric 1

とすればOK。
結果はこんな感じ。

# route -n
Destination   Gateway       Genmask         Flags Metric Ref Use Iface
0.0.0.0       192.168.0.254 0.0.0.0         UG    1      0   0   eth0
0.0.0.0       192.168.1.254 0.0.0.0         UG    2      0   0   eth1
127.0.0.0     127.0.0.1     255.0.0.0       UG    0      0   0   lo
192.168.1.0   0.0.0.0       255.255.255.0   U     2      0   0   eth1
192.168.0.0   0.0.0.0       255.255.255.0   U     3      0   0   eth0

しかしこれを毎回手動ではやってられないので、どうにかならないかなぁっと思って調べたら、
/etc/conf.d/netでネットワークインターフェース起動後に実行するスクリプトを記述できるようだ。

ということで、/etc/conf.d/netに以下を追加

postup() {
  if [ "${IFACE}" = "eth0" ]; then
    route del default gw 192.168.0.254
    route add default gw 192.168.0.254 metric 1
  fi
}

これで、eth0起動時に指定したルーティングが設定される。

ちなみに、

routes_eth0="default via 192.168.0.254"

といった感じでルーティングを設定することもできるみたいなのだが、metricを反映させることがどうしてもできなかったので、結局postupスクリプトで設定することにしている。