デフォルトのネットワークインターフェースを選択する


11

2つのインターフェイスを持つサーバーがあります。eth0はeth1の100倍高速です。何らかの理由で、再起動するたびに、デフォルトのインターフェースがランダムに選択されます。面倒なことに、両方とも同じゲートウェイを使用するため、デフォルトゲートウェイを選択しても機能しません。Linuxはデフォルトのインターフェースをどのように選択し、デフォルトのインターフェースをどのように選択しますか?

ここに私はroute -n状況を少し説明するために。

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
173.246.100.0   0.0.0.0         255.255.252.0   U     0      0        0 eth1
173.246.100.0   0.0.0.0         255.255.252.0   U     0      0        0 eth0
0.0.0.0         173.246.103.254 0.0.0.0         UG    0      0        0 eth1
0.0.0.0         173.246.103.254 0.0.0.0         UG    100    0        0 eth0

PS。これはVPSであるため、私のプロバイダーもどこかに障害がある可能性があります。2番目のインターフェイスの理由は、DNSのみを使用するため、DNSに別のIPを使用することです。これは非常に遅いためです。

編集:これはUbuntu 10.04サーバーです


興味深いことに、ifconfigのマンページには「メトリック」に関するセクションでこれが記載されているため、このパラメーターはインターフェイスメトリックを設定します。GNU / Linuxでは使用できません。
wzzrd

1
これを理解できてよかった。他の誰もこれに答えず、あなたの編集が解決策を表す場合、それ自身の答えセクションにそれを追加し、それを正しい答えとして受け入れます(タイムアウト後)。質問セクションに回答を入れないでください。
カレブ

@Caleb:私はタイムアウトにまだあった、私はanwserを掲載しました
user163365

回答:


15

ifmetric両方のインターフェイスのメトリック値を変更するために使用します。eth1をeth0より大きくすると、すべての接続にeth0が使用されます。問題を完全に解決します。


2
これにより、デフォルトゲートウェイがすぐに、または再起動後に変更されますか?
CMCDragonkai

2

2番目の低速イン​​ターフェイスを無効にしてから、セカンダリIPをプライマリに追加する必要があります。これを行うには、以下を使用してinterfacesファイルを編集します。

sudo vi /etc/network/interfaces

ネットワークファイルにアクセスすると、おそらく次のようなものが表示されます。

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
    address 173.246.100.1
    network 173.246.100.0
    netmask 255.255.252.0
    broadcast 173.246.100.255
    gateway 173.246.103.254

auto eth1
iface eth0 inet static
    address 173.246.100.2
    network 173.246.100.0
    netmask 255.255.252.0
    broadcast 173.246.100.255
    gateway 173.246.103.254

次のように再構成します。

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
    address 173.246.100.1
    network 173.246.100.0
    netmask 255.255.252.0
    broadcast 173.246.100.255
    gateway 173.246.103.254

iface eth0:1 inet static
    address 173.246.100.2
    network 173.246.100.0
    netmask 255.255.252.0

これにより、両方のIPが最初のNICに割り当てられます。これが完了したら、ファイルを保存して実行します:

/etc/init.d/networking restart

そして、変更がコミットされます。

<-編集->

私の経験では、同じ仮想スイッチ上にある場合は問題になりませんが、ホストされた環境ではさらにロックダウンされる場合があります。試してみる価値はありますが、うまくいかない場合は、ホスティング会社に仮想インターフェイスをより高性能なものに変更するよう依頼することができます。

<-編集->

また、プライマリIPが現在DNSを提供していない場合、なぜDNSにも使用しないのですか?異なるポートを使用するため、1つのIPで複数の異なるサービスをホストできます。


0

同じサブネットに2つのインターフェイスがあるようですが、これは少し奇妙です。Linux(Red Hatの派生物を使用していると仮定)は、からGATEWAY値を読み取ることでデフォルトゲートウェイを選択します/etc/sysconfig/network。ただし、この変数は、インターフェイス名ではなくゲートウェイ識別子としてIPアドレスを保持します。したがって、あなたの場合、1つのIPアドレスが両方のインターフェイスのゲートウェイになり、何らかの競合状態につながる(と思う)ことができます。

2番目のインターフェイスが必要な理由はまだわかりません。遅いインターフェイスを完全に停止するとどうなりますか?


まず、ubuntuを使用しますが、これはゲートウェイの問題ではないので、問題ではありません。2番目に、2番目のインターフェイスを停止すると、トラフィックは最初のインターフェイスを使用しますが、2番目のIPを失います。これが、最初の場所に2番目のインターフェイスがある理由です。
user163365

1
エイリアスを使用して、1つのインターフェイスに2つのアドレスを簡単に設定できます。高速インターフェイスを介したすべてのトラフィック、2つのIPが構成され、問題は解決しましたか?「Linuxがデフォルトのインターフェースをどのように選択し、どのようにデフォルトのインターフェースを選択するのですか?」を考慮すると、これはゲートウェイの問題ではないのでしょうか?
wzzrd

1
これらは仮想インターフェイスであり、おそらく指定されたIPに着信するデータのみをルーティングするように構成されているため、機能しません。また、ゲートウェイは両方のインターフェースで同じであるため、この問題はゲートウェイではなくインターフェースに関するものです。
user163365

2
着信要求は1つのインターフェイスに到着する可能性がありますが、発信のものは既にとにかくランダムインターフェイス経由で送信されています。アドバイスを試して、インターフェイスの1つをドロップし、エイリアスを使用して他のIPを他のIPに配置し、機能するかどうかを確認します。あなたが言うように、それらが仮想である場合、なぜ速度の違いと分離の試みがなぜですか?何かがゲル化しない。
EightBitTony
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.