web-dev-qa-db-ja.com

同じサブネット上の複数のNIC上の複数のIP

だから、私は2つのNICを持っています:

eth0
eth1

それぞれに複数のIPアドレスが割り当てられています。

auto lo
iface lo inet loopback
allow-hotplug eth0
iface eth0 inet static
    address 10.0.0.194
    netmask 255.255.255.0
    gateway 10.0.0.1
    network 10.0.0.0

auto eth0:0
allow-hotplug eth0:0
iface eth0:0 inet static
    address 10.0.0.253
    netmask 255.255.255.0

auto eth0:1
allow-hotplug eth0:1
iface eth0:1 inet static
    address 10.0.0.252
    netmask 255.255.255.0

auto eth0:2
allow-hotplug eth0:2
iface eth0:2 inet static
    address 10.0.0.251
    netmask 255.255.255.0

auto eth1
allow-hotplug eth1
iface eth1 inet static
    address 10.0.0.74
    netmask 255.255.255.0
    gateway 10.0.0.1
    network 10.0.0.0

auto eth1:0
allow-hotplug eth1:0
iface eth1:0 inet static
    address 10.0.0.105
    netmask 255.255.255.0

auto eth1:1
allow-hotplug eth1:1
iface eth1:1 inet static
    address 10.0.0.104
    netmask 255.255.255.0

auto eth1:2
allow-hotplug eth1:2
iface eth1:2 inet static
    address 10.0.0.106
    netmask 255.255.255.0

私も次のようにIPルートを設定しました:

Sudo ip route add 10.0.0.0/24 dev eth0 table eth0
Sudo ip route add default via 10.0.0.1 dev eth0 table eth0

Sudo ip route add 10.0.0.0/24 dev eth1 table eth1
Sudo ip route add default via 10.0.0.1 dev eth1 table eth1

Sudo ip rule add from 10.0.0.194 table eth0
Sudo ip rule add from 10.0.0.74 table eth1

次のコマンドを実行すると、すべてが正常に機能し、外部IPが返されます。

curl --interface eth0  http://ipecho.net/plain ; echo
curl --interface eth0:0  http://ipecho.net/plain ; echo
curl --interface eth0:1  http://ipecho.net/plain ; echo
curl --interface eth0:2  http://ipecho.net/plain ; echo
curl --interface eth1  http://ipecho.net/plain ; echo

ただし、実行すると:

curl --interface eth1:0  http://ipecho.net/plain ; echo

何も起こりません。私は明らかに私のルートか何かを台無しにしました。誰かが私を助けることができますか?ありがとう。

ipルート

default via 10.0.0.1 dev eth0 
10.0.0.0/24 dev eth0  proto kernel  scope link  src 10.0.0.194 
10.0.0.0/24 dev eth1  proto kernel  scope link  src 10.0.0.74

ルート-n

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.0.1        0.0.0.0         UG    0      0        0 eth0
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 eth1

編集:

だから私はこれを見つけました、それは私がやろうとしていることです、しかし私はサブネットを指定したくありません。リクエストをラウンドロビンするだけです。

https://unix.stackexchange.com/questions/111293/load-balancing-among-multiple-virtual-network-interfaces

2
Hugh

bonding interfacesについて読んでおくべきだと思います。

2つのインターフェイスを使用して負荷分散を行う場合、接続先のシステムは、まったく同じLBプロトコルを「話す」必要があります。

そうしないと、パケットが失われます。

1
Nils

2つの物理NIC間の負荷分散を試みている場合は、ブリッジ接続を調べることをお勧めします。 2番目のNICが応答しない理由は、2番目のNICのルートが、最初のNICのルートと同じであるためです。したがって、NIC自体を含むNIC 2の下のすべての仮想インターフェイスは、最初のNICを介してルーティングしようとします。これは、NICをブリッジしない限り不可能です。 Linuxではブリッジ接続を簡単に作成でき、仮想インターフェイス用の仮想ブリッジを作成することもできます。

0
Frostalf