rotear o tráfego proxy do gateway através de uma interface diferente com gateways upstream idênticos

1

Minha pergunta é semelhante à abaixo, com uma pequena advertência não respondida por nenhum desses tópicos:

Saída de tráfego em diferentes interfaces com base na porta de destino

link

iptables --set-mark - Rota diferente portas através de diferentes interfaces

Permitir apenas determinado tráfego de saída em determinadas interfaces

Eu tenho três dispositivos de rede: eth0 (roteador), eth1 (conectado à internet gw1) e eth2 (conectado à internet gw2)

eth0 - > eth1 (ip via dhcp) - > gw1 (192.168.0.1 netmask 255.255.255.0) - > internet

eth0 - > eth2 (ip via dhcp) - > gw2 (192.168.0.1 netmask 255.255.255.0) - > internet

Estou executando o Polipo no roteador e quero que o tráfego de todas as pessoas que se conectam ao polipo passem pela eth2. Todos os outros terão seu tráfego roteado via eth1.

O problema é que tanto eth1 quanto eth2 obtêm seu endereço IP via DHCP. E gw1 é idêntico ao gw2. Isso faz parte da nossa infraestrutura e ambos terão o mesmo endereço IP (ou seja, gw1 e gw2 são ambos 192.168.0.1 com máscara de rede 255.255.255.0).

Todas as respostas nos tópicos mencionados acima envolvem sub-redes e endereços IP distintos para isolar / marcar o tráfego do gateway. No meu caso, isso não é uma opção. Eu tenho que realizar isso sem alterar nada sobre gw1 / gw2 e não envolvendo endereços IP estáticos em eth1 e eth2. Isso é possível?

    
por iptables 21.12.2014 / 03:07

1 resposta

0

Desculpe, não posso fornecer um exemplo prático, mas o que você precisa deve ser possível usando do netfilter CONNTRACK alvo. Que diferença isso da MARK normal é que o CONNTRACK marca todo o tráfego em uma conexão, enquanto o MARK só marca pacotes. Então, a ideia seria:

  • Marque as conexões de entrada em cada interface com números diferentes (por exemplo, "1" para gw1, "2" para gw2)
  • Use "ip rule add fwmark 1 lookup 101" e "ip rule add fwmark 2 lookup 102" para tornar o tráfego com a marca 1 e a marca 2 para diferentes tabelas de rotas
  • Crie uma rota padrão diferente para cada tabela: "ip route add default via 192.168.0.1 dev eth1 tabela 101" para gw1 e "ip route add default via 192.168.0.1 dev eth2 tabela 102" para gw2

As conexões provenientes da eth1 seriam CONNMARK com o fwmark 1, que seria mantido para todos os pacotes (entrada e saída); o mesmo aconteceria para as conexões provenientes da eth2, com o fwmark 2. Assim, o firewall sempre saberá qual interface usar nas respostas. As conexões iniciadas a partir do firewall ou dos hosts por trás dele passariam por qualquer interface / gateway que você escolhesse como seu principal.

Talvez você possa fazer isso mais facilmente usando um software de firewall pré-fabricado, como o Shorewall . Ele tem suporte multi-ISP, embora eu não saiba se ele usa CONNTRACK ou apenas MARK.

    
por 14.05.2018 / 17:51