Nunca configure duas interfaces para a mesma sub-rede, isso provavelmente não funcionará como desejado. Se você examinar a saída de ip ro
, entenderá que o Linux é predominantemente baseado em roteamento baseado em destino. Embora o roteamento baseado em fonte seja possível , é muito raro na prática. Só consigo me lembrar de uma vez em que precisei fazer isso em minha vida, seja qual for o motivo.
Você entendeu mal o que o ping -I
faz, daí a confusão. Do homem:
-I interface address
Set source address to specified interface address.
Ping não envia o pacote através da interface -I. Quando um pacote está pronto para ser enviado, o kernel analisa IP de destino e ip ro
e, com base nessas duas coisas, decide qual interface usar. Ele não olha para o IP de origem do pacote .
-I se para definir o IP de origem de um pacote. Quando um pacote flui, o switch sabe que ambos os seus IPs vieram do MAC de eth0, então ele envia respostas lá. Mas eth0 descarta tudo o que não está endereçado ao seu próprio IP (ou broadcast). Não há "ligação interna mágica" entre eth0 e eht1, fora do que você vê no ip ro
. Então a resposta nunca chega a eth1.
O ip ro
é um substituto moderno de route
preterido.
Como você usa o mesmo switch / gateway, você provavelmente quer ter bonding de eth0 e eth1. Em seguida, defina seus dois endereços IP na interface bond0 (ifcfg-bond0). Esta é uma prática padrão e funcionaria como um encanto.
Para separar completamente o tráfego entre eth0 e eth1, é melhor definir eth1 para uma sub-rede IP diferente, como 192.168.2.40 e usar um roteador / gateway diferente:)