Múltiplos IPs em Múltiplas NICs na mesma sub-rede

2

Então, eu tenho dois NICs:

eth0
eth1

e eu tenho vários endereços IP atribuídos a cada um:

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

Eu também configurei o ip route da seguinte forma:

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

Agora, quando executo os seguintes comandos, tudo funciona bem. Recebo meu IP externo:

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

No entanto, quando eu corro:

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

Nada acontece. Eu obviamente estraguei minhas rotas ou algo assim. Alguém pode me ajudar? Obrigado.

rota 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

route -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

EDITAR:

Então eu encontrei isso, que é o que estou tentando fazer, no entanto, não quero especificar nenhuma sub-rede. Eu só quero que ele faça um round-robin nos pedidos.

link

    
por Hugh 15.03.2014 / 14:05

3 respostas

1

Acho que você deve ler sobre as interfaces bonding .

Se você quiser balancear a carga usando duas interfaces, o sistema ao qual você está se conectando tem que "falar" exatamente o mesmo protocolo LB que você faz.

Senão você perderá pacotes.

    
por 23.03.2014 / 23:00
0

Se você estiver tentando balancear a carga entre dois nics físicos, convém procurar uma conexão em ponte. A razão pela qual o seu segundo nic não está respondendo, é porque o caminho que você tem para ele é o mesmo caminho que você tem para o seu primeiro nic. Assim, todas as interfaces virtuais sob nic 2, incluindo o próprio nic, estão tentando direcionar para o primeiro nic, o que não é possível a menos que você conecte o nic. É fácil, no Linux, criar conexões em ponte e você também pode criar pontes virtuais para as interfaces virtuais.

    
por 12.08.2016 / 09:56
-2

Ter várias NICs conectadas à mesma rede pode causar colisões adicionais. A menos que você configure a rede com cuidado, não funcionará. E é bastante improvável que o último link seja o seu gargalo; se for, você provavelmente está melhor com um NIC de alta velocidade (e hardare upstream para corresponder).

Toda a idéia de rede IP é que você tem uma NIC em cada rede. Uma configuração como a que você tem é extremamente desalinhada com o que normalmente é feito, e (se legal mesmo) é improvável que tenha sido resolvida e que qualquer mau comportamento seja corrigido.

    
por 23.03.2014 / 18:22