Defina rotas estáticas persistentes para 4 interfaces em 2 servidores CentOS 7.1

2

Eu tenho a tarefa de configurar dois servidores de teste executando o CentOS 7.1 ( Instalação mínima; o NetworkManager está desabilitado em ambos ), e encontrei um conjunto de problemas que eu gostaria de obter ajuda aqui . O seguinte descreve primeiro o plano de fundo e, em seguida, lista as perguntas no final.

Informações de plano de fundo

Cada um tem quatro interfaces de rede. O servidor A reside na sub-rede A 192.168.15.0/24 e está conectado ao comutador A. O servidor B reside na sub-rede B 192.168.16.0/24 e está conectado ao comutador B. Os dois comutadores L3 A e B também estão conectados uns aos outros. O switch A possui VLAN0015 que tem 192.168.15.1 como gw para a sub-rede A. Da mesma forma, o switch B tem uma VLAN0016 que possui 192.168.16.1 como gw para a sub-rede B. Cada switch possui uma rota estática para rotear tráfego entre as duas VLANs. p>

Os requisitos de configuração de rede do servidor são os seguintes:

  • Todas as quatro interfaces em cada servidor devem poder enviar / receber tráfego independentemente (por exemplo, ping -I 192.168.15.100 -c 2 192.168.16.103 ( note que os dois IPs têm último byte diferente! ) devem ver o tráfego ICMP entre o par apenas) , ou seja, qualquer interface em uma sub-rede deve ser capaz de se comunicar com qualquer interface na outra sub-rede.
  • A ligação de interface é intencionalmente não usada
  • Todas as quatro interfaces devem usar o gw de sua respectiva sub-rede ( para sub-rede A: 192.168.15.1 ; para sub-rede B: 192.168.16.1 ) para se comunicar com interfaces do outro servidor na outra sub-rede .

O que eu fiz:

  • Adicionado a /etc/iproutes/rt_tables o seguinte: %código%
  • Introduzido 4 ens1f1table 3 ens1f0table 2 ens20f1table 1 ens20f0table /etc/sysconfig/network-scripts/ e route-* para cada uma das quatro interfaces em cada servidor (um exemplo é dado abaixo)

Por exemplo, para a interface do servidor A rule-* , tenho o seguinte em ens20f0 :

/etc/sysconfig/network-scripts/route-ens20f0

e no seu 192.168.15.0/24 dev ens20f0 src 192.168.15.100 table ens20f0table default via 192.168.15.1 dev ens20f0 table ens20f0table :

/etc/sysconfig/network-scripts/rule-ens20f0

A configuração "funciona", mas de tempos em tempos , em um servidor eu não consegui fazer ping em nenhuma interface do outro servidor. Após alguns from 192.168.15.100/32 table ens20f0table to 192.168.15.100/32 table ens20f0table ing, percebi que algumas interfaces não tinham a rota certa para o tráfego. Para se locomover, apliquei o seguinte

tracerout

para cada um dos /sbin/route add -net 192.168.16.0/24 gw 192.168.15.1 dev ... para forçar a tabela de roteamento do kernel de, e. servidor A para se parecer abaixo:

ens20f0|ens20f1|ens1f0|ens1f1

Perguntas :

Por que eu tentei usar o / Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 192.168.11.3 0.0.0.0 UG 0 0 0 ens10f0 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 ens20f0 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 ens10f0 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 ens20f1 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 ens1f0 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 ens1f1 192.168.11.0 0.0.0.0 255.255.255.0 U 0 0 0 ens10f0 192.168.15.0 0.0.0.0 255.255.255.0 U 0 0 0 ens20f0 192.168.15.0 0.0.0.0 255.255.255.0 U 0 0 0 ens20f1 192.168.15.0 0.0.0.0 255.255.255.0 U 0 0 0 ens1f0 192.168.15.0 0.0.0.0 255.255.255.0 U 0 0 0 ens1f1 192.168.16.0 192.168.15.1 255.255.255.0 UG 0 0 0 ens1f1 192.168.16.0 192.168.15.1 255.255.255.0 UG 0 0 0 ens1f0 192.168.16.0 192.168.15.1 255.255.255.0 UG 0 0 0 ens20f1 192.168.16.0 192.168.15.1 255.255.255.0 UG 0 0 0 ens20f0 em vez de sbin/route ? É porque ip route add não adicionaria a entrada de rota desejada.

Obviamente, a configuração "get-around" não é persistente. Então,

  1. Como posso fazer com que o meu "get-around" atual seja pelo menos persistente nas reinicializações do sistema? Existe um ip route add , mas é o lugar certo? A documentação do RHEL 7 nem sequer menciona esse script, nem mesmo para assinantes não inscritos.
  2. Um servidor A, tentei colocar /etc/sysconfig/network-scripts/ifup-post no 192.168.16.0/24 via 192.168.15.1 dev ens20f0 . Depois de um route-ens20f0 e, em seguida, /sbin/ifdown ens20f0 , a rota desejada não apareceu na tabela de roteamento do kernel. O que eu fiz errado? Revi /sbin/ifup ens20f0 muitas vezes, mas não sabia.
  3. Por que o comando man ip-route(8) conseguiu adicionar uma rota de desejo à tabela de roteamento do kernel, mas a mais recente /sbin/route não conseguiu, mesmo na CLI?
  4. O ip route add|replace menciona um man ip-route diferente de append , mas não há descrições para a diretiva ip route { add | del | change | append | replace } ROUTE . Qual é a utilidade disso?
  5. A abordagem que descrevi acima é a maneira correta de usar o "roteamento baseado em políticas" para atender aos requisitos que me são fornecidos? Parece "funcionar", por ex. Eu poderia ping de algumas interfaces de um servidor usando append para as interfaces do outro servidor. Mas a capacidade de fazê-lo parece não ser confiável, como meus cheques de% co-paging revelaram para mim.

Não sei o que mais tentar. Leitura repetida de Guia de rede do RHEL 7 2.4.1. Configurar uma interface de rede usando arquivos ifcfg não ajudou. Eu ficaria grato a qualquer sugestão sobre o que perdi.

- Zack

    
por user183394 27.08.2015 / 19:28

2 respostas

0

então, você basicamente está tentando

  1. tem quatro endereços da mesma rede ip na mesma vlan
  2. encaminha o tráfego por interfaces com endereços IP semelhantes na rede remota para as interfaces remotas com apenas esses endereços semelhantes?

Eu nunca ouvi falar de uma solução como a sua, mas estou fora do negócio de rede há muito tempo. Então, só para você ter uma ideia: por que você não tenta sub-redes em 15.X / 16.x em 4 sub-redes nas duas máquinas , e então apenas adiciona rotas à rede correspondente e as def-gw para as interfaces de sub-rede?

Com uma máscara de 26 bits (255.255.255.192) isto daria 15.0 (líquido) - 15.63 (bcast) / 15.64-15.127 / 15.128-15.191 / 15.192-15.255, similar no 16.X.

Espero que isso seja de alguma ajuda ...

    
por 27.08.2015 / 21:52
0

Um host não deve ter um gateway configurado para uma rede IP à qual está diretamente conectado.

Você não precisa de várias tabelas de roteamento para isso - isto é uma supercomplicação maciça, e você não disse nada sobre colocar marcação de pacotes no seu conjunto de regras iptables, então as tabelas de roteamento provavelmente estão sendo ignoradas de qualquer maneira

Além disso, é altamente recomendável que você crie uma imagem / mapa da sua rede, para mostrar os IPs e as máscaras de rede. Aqui está um exemplo decente:

Então, com um mapa como esse, você pode seguir o caminho de um pacote e ver o que acontece. Seus pacotes TCP devem ter o mesmo caminho para lá e para trás, enquanto os pacotes ICMP são mais tolerantes.

Agora específico da sua configuração, você tem a rede 192.168.15.x / 24 acessível em todas as quatro interfaces ens20f0, ens20f1, ens1f0 e ens1f1.

Seu kernel usará a última rota que foi adicionada. A questão é que o switch terá associado seu endereço IP a uma das rotas adicionadas anteriormente e, portanto, a um endereço MAC diferente na tabela ARP do switch.

Então, quando funciona, funciona por acaso ou por coincidência.

Sugiro que você faça um plano como o exemplo, mas com seus detalhes. E suspeito que você terá um momento de luz enquanto desenha. Qual é o ponto inteiro.

Se não houver lâmpadas, publique sua imagem e discutiremos tudo mais.

    
por 26.12.2016 / 23:12