Conflito de ponte e iptables SNAT

1

Estou trabalhando em uma configuração aqui e faço isso com uma pequena exceção.

Dispositivos em um lado da minha ponte não estão sendo usados 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. O Site_A possui todos os servidores de produção e estações de trabalho.
  2. O Site_B tem um conjunto de servidores para os quais gostaríamos de realizar o failover e também servir nossos serviços voltados para a Internet.
  3. O GW tem duas interfaces que são troncalizadas e transportam o tráfego de VLAN apropriado (permitir a propagação da camada 2 de tráfego entre sites) // tudo isso funciona perfeitamente bem.
  4. O problema que está sendo 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 passadas.
  5. Todos os hosts no Site_A podem acessar a Internet sem problemas.
  6. O GW tem endereços em uma sub-rede que é SOMENTE para o tráfego destinado à Internet. (Isso foi feito para que o Websense não tivesse que analisar o tráfego desnecessário. Usamos essa VLAN como a origem da porta do monitor no comutador onde o Websense está instalado).

O que eu acho que está acontecendo:

  1. Pacote / Quadro vem em physdev no Site_B destinado a Internet.
  2. O kernel vê o pacote e o encaminha para o outro lado da ponte para o GW padrão do host.
  3. Site_A (que contém o GW padrão da rede principal) vê que o pacote é destinado a um host que ele não conhece, então ele o envia para o GW padrão (a ponte do Linux, já que é ligado à 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á oculto.

Por que eu acho que está acontecendo:

  1. Um tcpdump na Internet, voltado para a NIC, mostra o pacote deixando a interface com o endereço privado como fonte.

O que eu gostaria:

  1. Tenha o pacote com SNAT.
  2. Algo como o abaixo seria incrível
    • o pacote vem do Site_B
    • o kernel vê que o pacote NÃO está destinado a si mesmo ou a qualquer endereço privado
    • o kernel diz "OK, bem, já que você está destinado à Internet, vou enviar essa interface para você, em vez de encaminhá-lo para o seu GW padrão normal que é o WAAAY."
    • O pacote
    • vem da internet e é enviado para o physdev de bridge apropriado, dependendo do site para o qual o host está destinado.
por sad_admin 20.11.2011 / 16:48

1 resposta

1

se os pacotes estão sendo ligados, é claro que iptables nunca os verão.

Solução? use o ebtables para redirecionar os pacotes ligados à internet para a máquina, de modo que eles recebam o tratamento SNAT (eu usaria o -j REDIRECT para o desmembramento do MAC)

    
por 20.11.2011 / 16:51