Conflito SNAT de ponte e iptables

Conflito SNAT de ponte e iptables

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:

  1. Site_A possui todos os servidores e estações de trabalho de produção.
  2. 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.
  3. 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.
  4. 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.
  5. Todos os hosts do Site_A podem acessar a Internet sem problemas.
  6. 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:

  1. O pacote/quadro chega no physdev no Site_B destinado à Internet.
  2. O kernel vê o pacote e o encaminha do outro lado da ponte para o GW padrão daquele host.
  3. 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).
  4. 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:

  1. 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:

  1. Faça o SNAT do pacote.
  2. 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)

informação relacionada