4.1. 簡単なソースポリシールーティング

ここでまた実際の例を見てみることにしましょう。 私は 2 台 (実際にはそろそろ返さないといけないのも含めると 3 台) の ケーブルモデムを持っていて、それらは Linux の NAT (マスカレード) ルータにつながっています。ここに住んでいる人達は、 インターネット接続の対価を私に支払っています。 私の同居人の一人が、hotmail しか見に行かないので額を減らしてほしい、 と言ってきたとしましょう。私に異存はありませんが、 彼らにはローエンドの方のケーブルモデムを使ってもらうことにします。

「速い」ケーブルモデムは 212.64.94.251 で、 212.64.94.1 に PPP 接続されています。 「遅い」ケーブルモデムはいろいろな IP アドレスを取りますが、 この例では 212.64.78.148 とし、195.96.98.253 に接続されているとします。

local テーブルは次の通り:

[ahu@home ahu]$ ip route list table local
broadcast 127.255.255.255 dev lo  proto kernel  scope link  src 127.0.0.1 
local 10.0.0.1 dev eth0  proto kernel  scope host  src 10.0.0.1 
broadcast 10.0.0.0 dev eth0  proto kernel  scope link  src 10.0.0.1 
local 212.64.94.251 dev ppp0  proto kernel  scope host  src 212.64.94.251 
broadcast 10.255.255.255 dev eth0  proto kernel  scope link  src 10.0.0.1 
broadcast 127.0.0.0 dev lo  proto kernel  scope link  src 127.0.0.1 
local 212.64.78.148 dev ppp2  proto kernel  scope host  src 212.64.78.148 
local 127.0.0.1 dev lo  proto kernel  scope host  src 127.0.0.1 
local 127.0.0.0/8 dev lo  proto kernel  scope host  src 127.0.0.1 

自明ですが、どこかで指定しておかなければならない内容です。 で、それがこれらです。default テーブルは空です。

では 'main' テーブルをみましょう:

[ahu@home ahu]$ ip route list table main 
195.96.98.253 dev ppp2  proto kernel  scope link  src 212.64.78.148 
212.64.94.1 dev ppp0  proto kernel  scope link  src 212.64.94.251 
10.0.0.0/8 dev eth0  proto kernel  scope link  src 10.0.0.1 
127.0.0.0/8 dev lo  scope link 
default via 212.64.94.1 dev ppp0 

ここで 'John' という新しいテーブルを、さきほど仮定した同居人のために作ります。 数値だけで設定を行うこともできますが、このテーブルを /etc/iproute2/rt_tables に追加するほうがずっと楽になります。

# echo 200 John >> /etc/iproute2/rt_tables
# ip rule add from 10.0.0.10 table John
# ip rule ls
0:	from all lookup local 
32765:	from 10.0.0.10 lookup John
32766:	from all lookup main 
32767:	from all lookup default

これであと必要なのは John のテーブルを作って、 ルートキャッシュをフラッシュ (クリア) するだけです。

# ip route add default via 195.96.98.253 dev ppp2 table John
# ip route flush cache

これで完了です。これを ip-up に対して実装するのは、 読者の課題としておきましょう。