iptables direcionando o tráfego através de VPN

iptables direcionando o tráfego através de VPN

Novato em redes. Tenho duas interfaces no host: eth0e tun0no meu cliente OpenVPN. Os endereços IP são:

eth0    192.168.1.22
tun0    10.1.0.8

Questão 1

Paraextrovertidotráfego alterando o endereço de destino para tun0forçá-lo a usar a VPN?

Não, mas usar o endereço do gateway para tun0 sim. 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

Onde 10.1.0.170estava 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 insert( -I) para substituir outras regras em OUT.
  3. Está implícito que, para o tráfego originado de qualquer origem, altere o destino para o gateway do tun0dispositivo.

Pergunta 2(a)

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

Pergunta 2(b)

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

Questão 3

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

Informação adicional

Estou tentando entender os princípios para poder aplicá-los ao meu caso. Existem três sub-redes de endereço 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 deapenas172.17.42.8 através da VPN.

Responder1

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

Cópia de segurança

iptables-save > back.up.file

Verifique o seu tipo de distribuição Linux, precisei acrescentar sudoporque não era root.

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

Para determinar os endereços de origem e destino, achei as funções LOGe TRACEmuito ú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 é, filtermas eu a declarei explicitamente para que você possa ver a sintaxe, especialmente se quiser explorar outras tabelas mangle, natetc. Inseri a regra -Iporque 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 foi adicionado 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 TRACEcomando rastreará um pacote durante todo o processo:

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

Atenção, isso rastrearátodospacotes tcp, para mais informações vejaAdministrador Berlim

Questão 3

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

ip route

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

Diagrama de fluxo de pacotes

diagrama de fluxo de pacotes iptables

Responder2

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

Dê uma olhada na diretiva de gateway de redirecionamento no OpenVPN:https://openvpn.net/index.php/open-source/documentation/howto.html#redirect

Responder3

Nos exemplos a seguir, o nome do dispositivo VPN é tun0 (OpenVPN) e o gateway VPN é 172.21.23.172

#1 - Instale VPN em seu roteador Linux (estou usando ipvanish com openvpn)

#2 – Roteie o tráfego usando iptables

sudo iptables -t nat -A POSTROUTING -o [VPN dev] -j MASQUERADE

exemplo:

sudo iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

#3 – Configure tabelas de roteamento (para garantir que todo o tráfego seja roteado através da VPN)

sudo ip route add default via [VPN ipv4 address] dev [VPN dev]

exemplo:

sudo ip route add default via 172.21.23.172 dev tun0

#4 - Verifique se os dispositivos na rede estão realmente roteando através da VPN executando estes comandos:

Janelas: tracert 1.1.1.1Linux:traceroute 1.1.1.1

Você Terminou!

informação relacionada