何らかの理由で、私のCentos 5.9 Linux 2.6.18 x86_64では、2つのデフォルトルートが必要です。
サーバーを再起動すると、ルーティングテーブルは次のようになります。
[root@server1 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
255.255.255.255 0.0.0.0 255.255.255.255 UH 0 0 0 bond0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 bond1
192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 bond0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 bond1
0.0.0.0 192.168.10.1 0.0.0.0 UG 0 0 0 bond0
0.0.0.0 192.168.0.254 0.0.0.0 UG 0 0 0 bond1
bond1はローカルネットワークであるため、このネットワークを指す最後のデフォルトルートがあると、すべてのインターネット要求が失敗します。
route del default gw 192.168.0.254
を実行することで簡単に修正できます。起動コマンドにそのコマンドを追加することもできます。しかし、私は何が起こっているのかを理解し、問題の根本に到達したいと思います。
私は誰もが私に言うことができることを願っています、なぜこれが起こるのですか?私の調査では、デフォルトゲートウェイは常に1つだけであることが確認されていますが、なぜ自動的に2つあるのかについては答えがわかりません。
ここにいくつかの設定ファイルがあります:
[root@server1 ~]# cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=myhostname.com
[root@server1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
IPADDR=192.168.10.11
NETMASK=255.255.255.0
NETWORK=192.168.10.0
BROADCAST=192.168.10.255
GATEWAY=192.168.10.1
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
[root@server1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-bond1
DEVICE=bond1
IPADDR=192.168.0.15
NETMASK=255.255.255.0
NETWORK=192.168.0.0
BROADCAST=192.168.0.255
GATEWAY=192.168.0.254
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
Bond0とbond1を入れ替えると、2つのデフォルトルートも入れ替わり、起動時にインターネットにアクセスできることを理解しています。しかし、それでも良い解決策ではないと思います。
インターネットの周りで人々が/etc/sysconfig/network-scripts/route-X
でファイルについて話しているのですが、私はそれらのどれも持っていません。
御時間ありがとうございます。
「デフォルト」ルートは、ifcfg-<interface>
ファイルのGATEWAY行に基づいて設定されます。 Domがコメントで述べたように、誤ったGATEWAY行を削除すると、ルーティングテーブルは期待どおりになります。
GWとデフォルトGWには違いがあります。設定に基づいて、両方のインターフェースが外部ネットワークにアクセスできるようにしたいようです。推奨されているようにGATEWAY行を削除することもできますが、そうすることで、bond1が外部と通信できなくなります。
マルチホームになるとすぐに、ポリシーベースのルーティングを使用することをお勧めします。スプリットアクセスルーティングとも呼ばれます。これは良い習慣であり、同じサブネット上に複数のインターフェースを置きたい場合に必要です。
あなたの場合は具体的に私は:
/etc/iproute2/rt_tables
100 bond0tbl
101 bond1tbl
これで、それぞれbond0tblおよびbond1tblという内部テーブルを定義しました。次に、これらのテーブルのルールを作成する必要があります
/etc/sysconfig/network-scripts/rule-bond0
from 192.168.10.11 table bond0tbl
/etc/sysconfig/network-scripts/rule-bond1
from 192.168.0.15 table bond1tbl
ルールを定義したので、今度はルートを定義します。
/etc/sysconfig/network-scripts/route-bond0
/etc/sysconfig/network-scripts/rule-bond1
最後に、両方のifcfg-devXファイルからGATEWAY行を削除し、/etc/syconfig/network
に追加します。
特定のインターフェイスがルーティングに使用するGWと、誰もが使用するデフォルトGWについて、必要なルートが存在しない場合に、混乱するのは簡単です。 /etc/sysconfig/network
に設定すると、常に「グローバル」に感じられます。
アヒルが一列に並んだら、service network restart
またはifup/ifdown
またはreboot
を使用して、すべてを作成します。それが機能したかどうかを確認するには、次のようにします。
ip route show table bond0tbl
ip route show table bond1tbl
ip route show table main
ip rule show
要点をまとめると、