Por que posso me conectar ao IP de uma interface de rede (em um servidor com várias interfaces de rede) quando o cabo de rede é removido?

1

Eu tenho um servidor com várias (quatro) interfaces de rede executando o Arch Linux quando encontrei algo estranho que não consigo explicar.

Eu tenho duas interfaces configuradas para os endereços IP 192.168.100.11/24 e 192.168.100.12/24 (usando dois perfis netctl).

Ambas as interfaces estão conectadas a um switch que também se conecta ao meu computador.

Quando eu ativo os perfis, ambas as interfaces parecem funcionar bem.

Mas quando estou pingando o endereço da interface principal ( 192.168.100.11 ) e removendo seu cabo (enquanto a interface secundária está funcionando), continuo recebendo respostas de 192.168.100.11 , mesmo que nenhum cabo esteja conectado a a interface. Eu até posso com sucesso ssh 192.168.100.11 na máquina.

A saída de ip addr mostra que a interface não tem portadora e está inativa, mas ainda tem seu endereço IP:

2: enp7s0f0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether 00:1e:67:a3:7f:b6 brd ff:ff:ff:ff:ff:ff
inet 192.168.100.11/24 brd 192.168.100.255 scope global enp7s0f0
   valid_lft forever preferred_lft forever
inet6 fd00::21e:67ff:fea3:7fb6/64 scope global mngtmpaddr dynamic 
   valid_lft 6836sec preferred_lft 3236sec
inet6 fe80::21e:67ff:fea3:7fb6/64 scope link 
   valid_lft forever preferred_lft forever
3: enp7s0f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:1e:67:a3:7f:b7 brd ff:ff:ff:ff:ff:ff
inet 192.168.100.12/24 brd 192.168.100.255 scope global enp7s0f1
   valid_lft forever preferred_lft forever
inet6 fd00::21e:67ff:fea3:7fb7/64 scope global mngtmpaddr dynamic 
   valid_lft 6836sec preferred_lft 3236sec
inet6 fe80::21e:67ff:fea3:7fb7/64 scope link 
   valid_lft forever preferred_lft forever

Quando faço netctl status main para verificar o status em que o perfil ainda está ativo:

# netctl status main
● [email protected] - Main interface
   Loaded: loaded (/etc/systemd/system/[email protected]; enabled; vendor preset: disabled)
   Active: active (exited) since Thu 2015-01-08 11:29:07 UTC; 25min ago
     Docs: man:netctl.profile(5)
 Main PID: 55293 (code=exited, status=0/SUCCESS)

Jan 08 11:29:03 timingserver1 network[55293]: Starting network profile 'main'...
Jan 08 11:29:07 timingserver1 network[55293]: Started network profile 'main'

Como isso é possível?

É importante para mim entender a mecânica por trás disso. O plano é que eu tenha dois servidores redundantes oferecendo um serviço no ip 192.168.100.11 . Um dos servidores terá a interface principal inoperante e ambos estão conectados ao mesmo switch. A segunda interface em ambos os servidores é usada para manutenção quando o servidor está em espera ou está degradado (obviamente, eles não terão o mesmo IP).

Portanto, no caso de um failover, configurarei a interface do servidor principal inativa (ou desconectarei o cabo) e ativarei a interface do servidor de backup. É claro que, se o servidor principal ainda responder a 192.168.100.11 mesmo que esteja inativo, isso seria ruim ...: - /

Meus arquivos de perfil netctl:

  • interface principal

    Description='Main interface'
    Interface=enp7s0f0
    Connection=ethernet
    IP=static
    Address=('192.168.100.11/24')
    Gateway='192.168.100.1'
    DNS=('192.168.100.1' '8.8.8.8')
    
  • interface secundária

    Description='Secondary interface'
    Interface=enp7s0f1
    Connection=ethernet
    IP=static
    Address=('192.168.100.12/24')
    DNS=('192.168.100.2' '8.8.8.8')
    

Eu agradeceria muito se alguém pudesse me orientar sobre como arquivar minha solução desejada. Talvez seja algo estúpido que eu tenha esquecido ou não saiba, mas no momento isso está me incomodando um pouco ...: - /

    
por deepthought-64 08.01.2015 / 13:18

1 resposta

1

OK, o problema parece ser que qualquer interface atende as requisições ARP porque elas estão todas na mesma sub-rede e, portanto, mesmo que as interfaces de rede tenham endereços IP diferentes, as entradas ARP apontam para a mesma interface. Assim, todos os pacotes para os diferentes IPs são enviados para o mesmo endereço MAC (porque todos os IPs têm o mesmo MAC na entrada ARP)

Meu cache de arp é assim:

$ ip neigh
192.168.100.11 dev enp2s0 lladdr 00:1e:67:a3:7f:b7 STALE
192.168.100.12 dev enp2s0 lladdr 00:1e:67:a3:7f:b7 STALE

Obrigado @ChristopherNeylan por me dar a pista para ver o ARP.

Parece que não é possível ter mais de um nic na mesma sub-rede e arquivar o comportamento que eu gostaria.

O problema é que o linux usa um modelo de host fraco , mas um modelo host strong seria necessário aqui. Eu encontrei uma pergunta no serverfault que resolve esse problema caso alguém seja interrested: várias interfaces físicas com IPs na mesma sub-rede

    
por 08.01.2015 / 21:44