Conecte duas redes com o OpenVPN

1

Estou tentando conectar duas redes por meio do OpenVPN.

Os gateways podem fazer ping uns aos outros, mas não podem acessar outros computadores na rede em que estão ingressando. Os logs não mostram nenhum erro e a conexão é estabelecida.

O que estou perdendo aqui? Parece que muitos estão tendo esse problema por várias razões, mas depois de mais de 50 tentativas eu desisti e decidi perguntar:)

Rede 1:

dev tun port 1194 ifconfig 10.8.222.40 10.8.222.41 route 10.2.1.0 255.255.255.0 vpn_gateway comp-lzo keepalive 10 60 persist-key persist-tun user nobody group nobody secret /etc/openvpn/static.key

ip route default via 10.0.1.1 dev eth0 10.0.1.0/27 dev eth0 proto kernel scope link src 10.0.1.9 10.2.1.0/24 via 10.8.222.41 dev tun0 10.3.0.0/24 via 10.3.0.2 dev tun2 10.3.0.2 dev tun2 proto kernel scope link src 10.3.0.1 10.8.222.41 dev tun0 proto kernel scope link src 10.8.222.40 172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.42.1

Rede 2

dev tun port 1194 remote my_ext_ip 1194 ifconfig 10.8.222.41 10.8.222.40 route 10.0.0.0 255.254.0.0 vpn_gateway comp-lzo keepalive 10 60 persist-key persist-tun user nobody group nobody secret /etc/openvpn/static.key

ip route default via 10.2.1.1 dev eth0 10.0.0.0/15 via 10.8.222.40 dev tun0 10.2.1.0/24 dev eth0 proto kernel scope link src 10.2.1.9 10.8.222.40 dev tun0 proto kernel scope link src 10.8.222.41 172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.42.1 172.27.224.0/22 dev as0t0 proto kernel scope link src 172.27.224.1 172.27.228.0/22 dev as0t1 proto kernel scope link src 172.27.228.1 172.27.232.0/22 dev as0t2 proto kernel scope link src 172.27.232.1 172.27.236.0/22 dev as0t3 proto kernel scope link src 172.27.236.1

Atualização:

Aqui está o que eu tenho no iptables:

Ambas as redes: iptables -I FORWARD -i eth0 -o tun0 -m conntrack --ctstate NEW -j ACCEPT iptables -I FORWARD -i tun0 -o eth0 -m conntrack --ctstate NEW -j ACCEPT

Rede 1: iptables -t nat -A POSTROUTING -s "10.0.0.0/15" -o "eth0" -j MASQUERADE iptables -A FORWARD -p tcp -s 10.0.0.0/15 -d 0.0.0.0/0 -j ACCEPT

Rede 2: iptables -t nat -A POSTROUTING -s "10.2.1.0/24" -o "eth0" -j MASQUERADE iptables -A FORWARD -p tcp -s 10.2.1.0/24 -d 0.0.0.0/0 -j ACCEPT

\

Atualização 2:

Entrando no túnel: # tcpdump -i tun0 listening on tun0, link-type RAW (Raw IP), capture size 65535 bytes 01:01:15.181262 IP ip-10-8-222-41.ec2.internal > ip-10-0-1-5.ec2.internal: ICMP echo request, id 28767, seq 1, length 64

Saindo do túnel: # tcpdump -i tun0 listening on tun0, link-type RAW (Raw IP), capture size 65535 bytes 01:03:44.304930 IP 10.8.222.41 > 10.0.1.5: ICMP echo request, id 28784, seq 1, length 64

Interfaces de comutação # tcpdump -i eth0 01:08:56.093291 IP 10.8.222.41 > 10.0.1.5: ICMP echo request, id 28785, seq 3, length 64

    
por user3521621 02.02.2015 / 20:33

2 respostas

1

Resolvido!

O tcpdump me permitiu ver que a fonte de pacotes para o encaminhamento do iptables era 10.8.222.41/32

Então adicionando

iptables -t nat -A POSTROUTING -s "10.8.222.41/32" -o "eth0" -j MASQUERADE iptables -A FORWARD -p tcp -s 10.8.222.41/32 -d 0.0.0.0/0 -j ACCEPT

resolveu o problema!

Agora, ambos os gateways podem fazer ping de servidores na rede um do outro. Agora preciso descobrir como permitir isso a todos os computadores nas duas redes, mas essa é uma questão diferente ...

    
por 03.02.2015 / 03:59
0

Então, a partir da saída do seu ip, parece que você está

eth0 at Network 1 is 10.0.1.0 with mask 255.255.255.224
eth0 at Network 2 is 10.2.1.0 with mask 255.255.255.0

Então eu editaria o conf openvpn na máquina Network 1 para ler:

route 10.2.1.0 255.255.255.0  #this is the remote network I want to see

e o openvpn conf na máquina Network 2 para ler:

route 10.0.1.0 255.255.255.224 #this is the remote network I want to see

Isso deve trazer as rotas corretas. Além disso, não se preocupe em adicionar o parâmetro vpn_gateway no final da linha de rota, isso não é necessário. Por padrão, ele adicionará a outra extremidade do túnel como o gateway.

    
por 02.02.2015 / 22:43