Estou trabalhando em uma configuração aqui e ela está funcionando com uma pequena exceção.
Os dispositivos em um lado da minha ponte não estão recebendo SNAT para a Internet.
O Diagrama / Visão Geral:
Primary_Network (Site_A)
|
|
Internet ------- Linux_Bridge_GW (GW)
|
|
Secondary/CoLo Site (Site_B)
Aqui está a configuração:
- Site_A possui todos os servidores e estações de trabalho de produção.
- O Site_B possui um conjunto de servidores para os quais gostaríamos de fazer failover e também servir nossos serviços voltados para a Internet.
- GW tem duas interfaces que são troncalizadas e transportam o tráfego VLAN apropriado (permitem a propagação de tráfego da camada 2 entre sites) //tudo funciona perfeitamente bem.
- O problema encontrado é que os hosts do Site_B têm seu GW padrão no Site_A (mesma sub-rede). O GW não possui IPs nas VLANs que estão sendo transmitidas.
- Todos os hosts do Site_A podem acessar a Internet sem problemas.
- GW possui endereços em uma sub-rede APENAS para tráfego destinado à Internet. (Isso foi feito para que o Websense não precisasse analisar tráfego desnecessário. Usamos essa VLAN como origem da porta do monitor no switch onde o Websense está instalado).
O que eu acho que está acontecendo:
- O pacote/quadro chega no physdev no Site_B destinado à Internet.
- O kernel vê o pacote e o encaminha do outro lado da ponte para o GW padrão daquele host.
- Site_A (contendo o GW padrão da rede principal) vê que o pacote está destinado a um host que ele não conhece, então o envia para seu GW padrão (a ponte Linux, já que está vinculado à Internet).
- O kernel diz "Ei, já vi você antes" e, portanto, não faz SNAT no pacote e o envia para a Internet, onde está bloqueado.
Por que acho que isso está acontecendo:
- Um tcpdump na Internet voltado para a NIC mostra o pacote saindo da interface com o endereço privado como origem.
O que eu gostaria:
- Faça o SNAT do pacote.
- Algo como o abaixo seria incrível
- pacote chega do Site_B
- o kernel vê que o pacote NÃO é destinado a si mesmo ou a qualquer endereço privado
- o kernel diz "OK, bem, já que você está destinado à Internet, vou enviar-lhe esta interface em vez de encaminhá-lo para o seu GW padrão normal que está WAAAY ali."
- o pacote chega da Internet e é enviado pela ponte physdev apropriada, dependendo do site em que o host está destinado.
Responder1
se os pacotes estiverem sendo interligados, é claro que o iptables nunca os verá.
Solução? use ebtables para redirecionar pacotes vinculados à Internet para a máquina para que eles recebam o tratamento SNAT (eu usaria -j REDIRECT para manipulação de MAC)