iptables direcionando o tráfego através da vpn

0

Novato em rede. Eu tenho duas interfaces no host: eth0 e tun0 do meu cliente OpenVPN. Os endereços IP são:

eth0    192.168.1.22
tun0    10.1.0.8

Pergunta 1

Para o tráfego de saída alterando o endereço de destino para tun0 , ele será forçado a usar a vpn?

Não, mas usando o endereço de gateway para tun0. Testado com o seguinte:

    iptables -t nat -N VPN
    iptables -t nat -I OUTPUT -j VPN
    iptables -t nat -A VPN -p tcp -j DNAT --to-destination 10.1.0.170

Em que 10.1.0.170 era o endereço do gateway da VPN (encontrado usando ip route ).

  1. O exemplo acima cria uma cadeia NEW ( -N ) para a tabela nat ( -t ).
  2. O salto para a cadeia VPN é de OUT (logo após o aplicativo local). Usando a inserção ( -I ) para substituir outras regras em OUT.
  3. Está implícito que, para o tráfego originado de qualquer origem, o destino de alteração para o gateway de tun0 device.

Questão 2 (a)

Para o tráfego de saída, o endereço de destino é o endereço IP da interface eth0 ou é o endereço do gateway? Assumindo que eth0 é a interface / gateway padrão.

Questão 2 (b)

Para o tráfego gerado a partir do aplicativo local, qual é o endereço de origem?

Pergunta 3

Isso pode ser resolvido puramente pelo iptables ou eu preciso modificar a tabela de roteamento? Como ambas as interfaces estão no mesmo host (isto é, a mesma caixa debian).

Informações adicionais

Estou tentando entender os princípios para poder aplicá-lo ao meu caso. Há três sub-redes de endereços I no total, a terceira está no intervalo 172.17.42.1/16 associada a outra interface virtual docker0 .

Essencialmente, quero direcionar o tráfego de apenas 172.17.42.8 através da VPN.

    
por fswings 14.05.2015 / 14:42

2 respostas

0

Em primeiro lugar, a excelente figura ligada à página wiki iptables do ArchLinux é útil para identificar o fluxo de pacotes através das várias iptables chains (na parte inferior da resposta).

Backup

iptables-save > back.up.file

Verifique seu sabor da distribuição do Linux, eu precisei adicionar sudo porque eu não era root.

Questão 2 (a), 2 (b)

Para determinar os endereços de origem e destino, encontrei as funções LOG e TRACE muito úteis:

iptables -t filter -I OUTPUT -m limit --limit 5/m --limit-burst 10 -j LOG  --log-prefix "ABC-LOG-PREFIX "

A tabela padrão é filter , mas a afirmei explicitamente para que você possa ver a sintaxe, especialmente se quiser explorar outras tabelas mangle , nat etc. Inseri a regra -I porque Eu queria que os pacotes fossem registrados antes que outras regras fossem aplicadas. Adicionado um limite de taxa para que o arquivo de log não fique saturado -m limit --limit 5/m --limit-burst 10 . Finalmente, acrescentou um prefixo para que o arquivo de log possa ser pesquisado facilmente --log-prefix . Por exemplo, no Linux Mint:

cat /var/log/kern.log | grep "ABC-LOG-PREFIX"

Em segundo lugar, para depuração, o comando TRACE rastreará um pacote durante todo o processo:

IPTABLES -t raw -A PREROUTING -p tcp -j TRACE

Atenção, isto irá rastrear all pacotes tcp, para mais informações veja Admin Berlin

Pergunta 3

Como as duas interfaces ( eth0 e tun0 ) estavam no mesmo host, no diagrama de filtro de pacotes abaixo você pode ver para o tráfego de saída que elas começam no mesmo ponto. A rota que um pacote toma é determinada pelo gateway padrão e sua interface associada, que pode ser determinada usando iproute2 executando:

ip route

Isso mostrará o gateway padrão, quais interfaces são usadas para quais intervalos de endereço.

Diagrama de Fluxo de Pacotes

    
por 20.05.2015 / 09:46
0

Pelo que eu posso dizer, você está falando sobre o tunelamento dividido (ou melhor, tentando desativá-lo).

Veja a diretiva de redirecionamento do gateway no OpenVPN: link

    
por 14.05.2015 / 14:51