ここでまた実際の例を見てみることにしましょう。 私は 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 に対して実装するのは、 読者の課題としておきましょう。