だから、私は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
編集:
だから私はこれを見つけました、それは私がやろうとしていることです、しかし私はサブネットを指定したくありません。リクエストをラウンドロビンするだけです。
bonding interfacesについて読んでおくべきだと思います。
2つのインターフェイスを使用して負荷分散を行う場合、接続先のシステムは、まったく同じLBプロトコルを「話す」必要があります。
そうしないと、パケットが失われます。
2つの物理NIC間の負荷分散を試みている場合は、ブリッジ接続を調べることをお勧めします。 2番目のNICが応答しない理由は、2番目のNICのルートが、最初のNICのルートと同じであるためです。したがって、NIC自体を含むNIC 2の下のすべての仮想インターフェイスは、最初のNICを介してルーティングしようとします。これは、NICをブリッジしない限り不可能です。 Linuxではブリッジ接続を簡単に作成でき、仮想インターフェイス用の仮想ブリッジを作成することもできます。