セカンダリIP(eth0:0)はメインサーバIPのように動作します

セカンダリIP(eth0:0)はメインサーバIPのように動作します

CentOS サーバーがあり、4 つの連続した IP が設定されています:
eth0 5.xx251
eth0:0 5.xx252
eth0:1 5.xx253
eth0:2 5.xx254

問題は、すべてのトラフィックが、eth0 ではなく eth0:0 (5.xx252) を送信元 IP としてインターネットに送信されることにあります。
# curl ifconfig.me
5.x.x.252

すべてのトラフィックが eth0、つまりメイン IP 経由で送信されるようにするには、どうすればこれを修正できますか?

PS: 私のサーバーは Xen dom0 上で実行されている VPS であり、後者はルーティング モード ネットワークで構成されています。

前もって感謝します!

サーバー構成

# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:x:x:x:x:AE  
          inet addr:5.x.x.251  Bcast:5.x.x.255  Mask:255.255.255.255
          inet6 addr: fe80::x:x:x:x/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:14675569 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9463227 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:4122016502 (3.8 GiB)  TX bytes:25959110751 (24.1 GiB)
          Interrupt:23 

eth0:0    Link encap:Ethernet  HWaddr 00:x:x:x:x:AE   
          inet addr:5.x.x.252  Bcast:5.x.x.255  Mask:255.255.255.224
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:23 

eth0:1    Link encap:Ethernet  HWaddr 00:x:x:x:x:AE  
          inet addr:5.x.x.253  Bcast:5.x.x.255  Mask:255.255.255.224
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:23 

eth0:2    Link encap:Ethernet  HWaddr 00:x:x:x:x:AE  
          inet addr:5.x.x.254  Bcast:5.x.x.255  Mask:255.255.255.224
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:23  

# cat /etc/hosts
127.0.0.1       localhost.localdomain localhost
5.x.x.251       [fqdn] [hostname]

# cat ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
IPADDR=5.x.x.251
NETMASK=255.255.255.224
SCOPE="peer 5.x.y.82"

# cat ifcfg-eth0:0
DEVICE=eth0:0
BOOTPROTO=static
ONBOOT=yes
IPADDR=5.x.x.252
NETMASK=255.255.255.224

# cat route-eth0 
ADDRESS0=0.0.0.0
NETMASK0=0.0.0.0
GATEWAY0=5.x.y.82

# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
5.x.y.82        0.0.0.0         255.255.255.255 UH        0 0          0 eth0
5.x.x.224       0.0.0.0         255.255.255.224 U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
0.0.0.0         5.x.y.82        0.0.0.0         UG        0 0          0 eth0

2012年8月29日更新
実行するとエラー/etc/init.d/network restartが発生しRTNETLINK answers: File exists、デフォルトゲートウェイを使用して別のネットワークへの別のルートがあると思われます。ここ

# /etc/init.d/network restart
Shutting down interface eth0:                              [  OK  ]
Shutting down loopback interface:                          [  OK  ]
Bringing up loopback interface:                            [  OK  ]
Bringing up interface eth0:  RTNETLINK answers: File exists
                                                           [  OK  ]

確かなのは、最初に削除してからip route del default via 5.x.y.82 dev eth0.251 IP で再度追加すると、すべてが期待どおりに機能することです。またはファイルにコマンド
を追加する方法はありますか? これは Debian で実行できることがわかっています(route delifcfg-eth0route-eth0pre-up ip addr del ...より詳しい情報) ですが、 CentOS はどうでしょうか?

答え1

からこのドキュメント少なくとも CentOS 5 では、正しい iproute2 コマンド引数を指定するだけでルートを指定できるようです。( のセクションを参照してくださいIP Command Arguments Format)

したがって、次のように書く代わりに:

# route-eth0 
ADDRESS0=0.0.0.0
NETMASK0=0.0.0.0
GATEWAY0=5.x.y.82

次のようなファイルを作成できます。

default via 5.x.y.82 dev eth0  src 5.x.x.251

ただし、テストできる Redhat/Redhat 派生のボックスが手元にありません。

答え2

エイリアス IP アドレスを非ローカルの宛先への送信元アドレスとして使用しない場合は、デフォルト ルートのターゲットと同じサブネット内に配置しないでください。そのため、それらのネットマスクを に変更し255.255.255.255、ブロードキャスト アドレスを削除します。

答え3

まず0.0.0.0のデフォルトゲートウェイをクリアします

route del -net default

次に、デフォルトのeth0をデフォルトゲートウェイデバイスとして宣言します。

route add -net default gw 5.x.y.82 dev eth0

動作するはずです。確認するには

ip ro li

それをルールとして保存するには、次の面倒なことを試してください。

を開き/etc/sysconfig/network-scripts/network-functions、関数を見つけてadd_default_route ()、その関数内で、 の呼び出しの後に のfind_gateway_dev行を追加しますGATEWAYDEV="eth0"

スクリプトは、network-functionsどのデバイスをデフォルト ゲートウェイにするかを決定します。 ゲートウェイ IP へのルートを調べip get route to GATEWAY、sed を使用してデバイスを一致させます。 eth0:0 が毎回選択されるようです。そのため、ハードコーディングすることで、GATEWAYDEV="eth0"eth0 が常にゲートウェイ デバイスとして選択されるようにします。

RHの古いバージョンでは、編集し/etc/sysconfig/static-routesて追加するだけで済みましたdefault via 5.x.y.82 dev eth0

最後の手段として、/etc/rc.local常にあなたの友達です!

答え4

これらはすべて同じサブネット上にあるため、カーネルは使用するサブネットを選択します。これを確認するには、次のコマンドを実行します。

 ip addr list dev eth0

正しく動作させるには、iptablesの魔法を使う必要があります。以下を参照してください。

IP エイリアシングの場合、OS は送信 TCP/IP 接続のソースとしてどの IP アドレスを使用するかをどのように決定しますか?

関連情報