Duas NICs, dois IPs públicos estáticos, o mesmo gateway no CentOS 7

1

Eu tenho um servidor com duas placas de rede, configuradas cada uma com um IP estático (ambas públicas, se faz alguma diferença). Eles pertencem à mesma sub-rede. Por exemplo (ips falsos, mas seguindo a mesma lógica):

NIC1:

# cat ifcfg-enp4s0 
TYPE="Ethernet"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
NAME="enp4s0"
DEVICE="enp4s0"
ONBOOT="yes"
DNS1="192.168.1.1"
IPADDR=192.168.0.1
PREFIX=24
GATEWAY=192.168.0.254
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_PRIVACY=no

NIC2:

# cat ifcfg-enp2s0f0 
TYPE=Ethernet
BOOTPROTO=none
IPADDR=192.168.0.2
PREFIX=24
GATEWAY=192.168.0.254
DNS1=192.168.1.1
DEFROUTE=no
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp2s0f0
DEVICE=enp2s0f0
ONBOOT=yes

Eu gostaria que as conexões de saída passassem pelo NIC1 por padrão, a menos que esteja inativo - então ele deve passar pelo NIC2.

Os pacotes para 192.168.0.1 devem ir para o NIC1 e as respostas devem sair do NIC1. Da mesma forma, os pacotes para 192.168.0.2 devem ir para o NIC2 e as respostas saem do NIC2.

Com a configuração acima, recebo a seguinte rota:

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.254  0.0.0.0         UG    100    0        0 enp4s0
192.168.0.0    0.0.0.0         255.255.255.0   U     100    0        0 enp2s0f0
192.168.0.0    0.0.0.0         255.255.255.0   U     101    0        0 enp4s0

Agora, o servidor está conectado, mas somente 192.168.0.1 é pingável de fora. 192.168.0.2 é inacessível.

Os caras da rede me dizem que 192.168.0.2 é alcançável dentro da mesma sub-rede, então deve ser um erro na minha configuração que o torna indisponível fora.

O que eu fiz de errado? Você pode aconselhar sobre uma correção?

    
por Fabio 03.03.2017 / 16:34

1 resposta

2

Acho que seria melhor ligar os dois NICs e atribuir um único IP ao vínculo.

A documentação do RedHat tem um bom guia sobre isso.

De acordo com suas necessidades, você provavelmente desejará mode = 1 (mas verifique se os outros modos podem não fazer algo "melhor" - por exemplo, duplicando sua taxa de transferência, a menos que uma NIC esteja inativa).

Se um vínculo não for uma solução aceitável, talvez você queira criar rotas estáticas com métricas para cada interface, de modo que uma seja a preferida em relação à outra (acho que você pode se safar com 'apenas' definindo um GATEWAY em cada arquivo ifcfg-PORT).

O NIC2 é acessível localmente porque é endereçado por seu endereço físico (MAC), não por seu IP. Quando você tentar contatá-lo remotamente, eu tenderia a pensar que você precisaria do encaminhamento de IP para ser ativado.

tl; dr : um vínculo simplificaria sua vida e criaria um servidor mais resiliente, mas se você realmente não quiser isso, provavelmente precisará de uma combinação de métricas / custos de rota e de ip_forwarding . Mas você não será capaz de evitar o tráfego da NIC2 passando pela NIC1 quando a NIC1 estiver ativa, pois ela tem a rota padrão preferida (ou seja, a menor métrica / custo).

    
por 03.03.2017 / 16:53