encadeamento VPN usando openvpn

4

Meu chefe ficou extremamente paranóico e quer que eu organize algum tipo de encadeamento VPN para ele. Eu venho com esquema seguinte:

Client              VPN1                    VPN2
10.0.1.x[tun0]------10.0.1.1[tun0]
[1.1.1.1][eth0]     10.0.2.x[tun1]----------10.0.2.1[tun0]
                    2.2.2.2[eth0]           3.3.3.3[eth0]------internet

Eu posso usar VPN1 do cliente através do encaminhamento do iptables, assim:

vpn1 # iptables -A FORWARD -s 10.0.1.0/24 -j ACCEPT
vpn1 # iptables -A FORWARD -d 10.0.1.0/24 -m state --state ESTABLISHED,RELATED -j ACCEPT
vpn1 # iptables -t nat -A POSTROUTING -s 10.0.1.0/24 -j SNAT --to-source 2.2.2.2     

Eu posso usar VPN2 da VPN1 se eu fizer o gateway padrão, ou se eu selecionar hosts especificados, como este:

vpn1 # route add -host 8.8.8.8 dev tun1      

O que não posso usar é a cadeia completa VPN1-VPN2-Internet do Cliente. Tentei encaminhar o tráfego de tun0 para tun1 e vice-versa assim:

vpn1 # iptables -A FORWARD -i tun0 -o tun1 -j ACCEPT
vpn1 # iptables -A FORWARD -i tun1 -o tun0 -j ACCEPT

Neste caso, posso ver as solicitações ICMP saindo do IP do cliente em ambas as interfaces tun VPN1, mas não consigo obter nenhuma resposta.

Como posso encaminhar todo o tráfego do cliente até a cadeia completa?

edite: (tudo na vpn1)

tcpdump -i tun0 icmp mostra solicitações com 10.0.1.6 (Cliente) acessando a internet

tcpdump -i tun1 não mostra nada

tcpdump -i eth0 mostra o mesmo que tun0, 10.0.1.6 (Cliente) enviando pedido

Meu pensamento era que as regras do iptables deveriam encaminhar tun0 para tun1 e vice-versa, mas por algum motivo o tráfego do tun0 chega à eth0 e depois para a internet, poderia ser o problema?

    
por user175985 31.05.2013 / 05:44

1 resposta

4

Eu consegui fazer essa coisa funcionar. Basicamente, eu preciso encaminhar todos os pacotes que vêm do cliente para a interface tun0 da VPN1 para o endereço IP da tun1 da VPN1 (10.0.2.6).

iptables -A FORWARD -s 10.0.1.0/24 -j ACCEPT
iptables -A FORWARD -d 10.0.1.0/24 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.0.1.0/24 -j SNAT --to-source 10.0.2.6

Em segundo lugar, eu preciso fazer uso do sistema iproute2 adicionando estas regras:

isso adiciona rota padrão à tabela 120

ip route add default via 10.0.2.6 table 120 

e este roteamento baseado em regras, usa src do pacote como condição

ip rule add from 10.0.1.0/24 table 120 

E bom para ir! Agora para testar, faço traceroute 8.8.8.8 no Client:

1  10.0.1.1 (10.0.1.1) 223.570 ms  444.898 ms  444.875 ms
2  10.0.2.1 (10.0.2.1) 444.845 ms  666.709 ms  889.544 ms
....

Agora, apenas as pequenas coisas como scripts de automação e post-up ... Obrigado por ajudar!

    
por 31.05.2013 / 14:06