É possível mascarar um pacote em uma ponte?

1

Eu tenho um contêiner que tem uma VPN de entrada. Uma conexão nesse contêiner receberá o 192.168.10.10 IP. A NIC virtual do contêiner tem um IP de 10.10.10.1 e um gateway (na ponte do host) de 10.10.10.254 .

Quando conectado diretamente ao contêiner, um pacote sairá com 10.10.10.1 como a origem e saberá como voltar (através da ponte).

Quando conectado por VPN, o pacote sai com 192.168.10.10 como a origem e não retornaria, pois 192.168.10.x não é anunciado na rede (não há rota para essa rede).

Existem duas soluções para isso:

  • seja mascarado no contêiner para que o pacote saia com 10.10.10.1
  • ou anunciar a rota 192.168.10.x na rede

Eu gostaria de (por várias razões) evitar ir para qualquer uma dessas soluções e queria saber se é possível fazer o mascaramento na própria ponte , do lado do host?
Em outras palavras, um pacote estaria deixando o contêiner com uma fonte de 192.168.10.10 , que seria então reescrito "pela ponte" para um 10.10.10.1 IP conhecido (e depois reescrito novamente quando a resposta retornasse ao contêiner)

Observação: como fazer isso em shorewall seria incrível, mas qualquer informação será ótima.

    
por WoJ 20.03.2017 / 15:27

2 respostas

1

Para o shorewall, você pode editar o / etc / shorewall / masq para parecer-se com algo como:

br0 192.168.10.1/24 - tcp 22,80,443

Você também precisará criar uma entrada em / etc / shorewall / hosts e / etc / shorewall / zones para o intervalo VPN e, é claro, adicionar quaisquer regras necessárias a / etc / shorewall / rules.

No entanto, acho que você pode ter um caso do problema XY .

Se eu entendi sua configuração corretamente, somente seu contêiner sabe sobre o intervalo 192.168.10/24 .

Ou seja, o problema não seria resolvido (apenas) usando o mascaramento.

O problema é que o host no qual o contêiner está em execução também não possui uma rota para 192.168.10 / 24, porque essa rota existe apenas na tabela de roteamento do contêiner.

Então, no mínimo, você precisaria:

  • uma rota em seu host de contêiner apontando para seu contêiner (por exemplo, ip r add 192.168.10.1/24 via 10.10.10.1 )
  • adicione a regra masq no shorewall.

Caso contrário, seu host de contêiner verá o que significa marcianos provenientes de seu contêiner de VPN.

    
por 20.03.2017 / 16:49
0

O destino MASQUERADE iptables opera na tabela POSTROUTING , que é usada apenas para pacotes roteados de uma interface para outra. Os pacotes em ponte provavelmente não são acessados em nível de IP a qualquer momento, então você não conseguirá mascará-los.

    
por 20.03.2017 / 20:14