Problemas de roteamento assimétricos estão me enlouquecendo!
Estou tentando criar um servidor multi-homed com 3 NICs. Cada NIC está conectada a três sub-redes diferentes:
eth0: LAN conectado, 10.99.72.38; função: tráfego de gestão
eth1: LAN conectado, 10.99.70.150; função: tráfego de usuários
eth2: WAN conectado, 10.99.74.85; função: tráfego do usuário
Estou usando uma imagem do Linux no Linux (Linux 3.14.20-20.44.amzn1.x86_64 x86_64), mas posso mudar para o CentOS se realmente fizer diferença.
A funcionalidade que estou tentando implementar:
eth0: tráfego de gerenciamento
- endereço: 10.99.72.38
- Eu quero que essa seja uma interface "isolada", aceitando e respondendo apenas aos endereços em 10.0.0.0/8
- Pense nisso como um 'ssh somente da LAN local'.
- SOMENTE pode responder de volta através da eth0
- Todos os outros destinos estão bloqueados, ou seja, nenhum outro destino pode ser alcançado por meio dessa interface
- NÃO usará eth1 ou eth2 para o tráfego de resposta para o tráfego que chega à eth0.
eth1: tráfego de usuários de / para LAN
- Endereço: 10.99.70.150
- aceita qualquer tráfego de usuário da LAN para qualquer destino
- distribui os pacotes pela eth1 para o tráfego destinado a 10.x.x.x.
- distribui pacotes pela eth2 para qualquer outro destino (rota padrão)
- NÃO encaminhará os pacotes recebidos por meio de eth0
eth2: tráfego de usuários de / para WAN
- endereço: 10.99.74.85
- aceita qualquer tráfego de usuário da eth1 e envia pacotes pela eth2 para qualquer destino que não esteja em 10.x.x.x
- aceita pacotes de resposta no eth2 e encaminha através do eth1 para qualquer tráfego destinado a 10.x.x.x
- NÃO encaminhará os pacotes recebidos por meio de eth0
Eu criei uma tabela iproute2 em rt_tables chamada 'mgmt' e adicionei regras de roteamento baseadas em políticas com alta prioridade para tentar isolar essa interface, mas não importa o que eu tente, a tabela de roteamento principal ainda parece ser chamada como eth0 a rota padrão. Problemas incluem:
- Pacotes de entrada da eth1 são roteados através da eth0 (eu não quero isso!)
- Os pacotes de entrada da eth2 destinados para 10.x.x.x são roteados por meio de eth0 (não quero isso!)
- Quando eu excluo a rota eth0 padrão da main, perco a funcionalidade eth0 completamente, mesmo com uma rota na tabela mgmt, mas a eth1 então responde corretamente.
A partir do início, a tabela de rotas não modificada (route -n):
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.99.72.1 0.0.0.0 UG 0 0 0 eth0
0.0.0.0 10.99.70.1 0.0.0.0 UG 10001 0 0 eth1
0.0.0.0 10.99.74.1 0.0.0.0 UG 10002 0 0 eth2
10.99.70.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
10.99.72.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.99.74.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2
Regras IP não modificadas são:
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
Qualquer assistência para formular corretamente as regras de roteamento específicas, tabelas e rotas, e me mostrar como seriam as tabelas e regras finais de roteamento, seria muito apreciada!