web-dev-qa-db-ja.com

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

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サーバーです

12
user163365

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

15
user163365

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で複数の異なるサービスをホストできます。

2
Alex Berry

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

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

0
wzzrd