OpenVPN Clientes incapazes de se conectar ao endereço roteado através de outro OpenVPN B

2

Ok, eu tenho um servidor OpenVPN A que hospeda o intervalo 10.8.0.0/24 e um servidor OpenVPN B que hospeda 10.7.0.0/24. O servidor A também é um cliente do servidor B.

Esta é a configuração dos adaptadores tun dos dois servidores.

OpenVPN Server A

inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
inet 10.7.0.6 peer 10.7.0.5/32 scope global tun1

OpenVPN Server B

inet 10.7.0.1 peer 10.7.0.2/32 scope global tun0

Os clientes do OpenVPN A obtêm todo o seu tráfego encaminhado através do Servidor A e saem através da sua interface WAN. No entanto, um intervalo de IP 192.168.0.0/24 só pode ser alcançado através da VPN do servidor B. Eu configurei uma rota que passa todos os 192.168.0.0/24 através da interface tun que conecta o servidor A ao servidor B.

ip route add 192.168.0.0/24 dev tun1

Eu posso pingar 192.168.0.0/24 bem no servidor A MAS Eu não consigo fazer ping ou chegar a esse intervalo quando estou em um cliente OpenVPN do servidor A. Eu posso pingar o IP do tun endereço 10.7.0.6 mas não 192.168.0.0/24. Alguém pode esclarecer por que isso está acontecendo?

    
por yashau 06.09.2015 / 15:26

1 resposta

1

Eu construí uma rede virtual e uma série de VMs, mostradas nesta imagem, para facilitar a visualização desse problema.

Cadasistemaesperadoparaencaminharpacotesdeveteroencaminhamentodeipv4ativado:

#sysctlnet.ipv4.ip_forward=1

Aconfiguraçãodoopenvpnnaminharededetesteésimplificada.Estouusandooopenvpnsemautenticação/criptografia,executando-oapartirdalinhadecomando,parafornecerumtúnelsimplesentreasmáquinas"openvpn-a" e "openvpn-b".

openvpn-a:

root@openvpn-a# openvpn --remote openvpn-b --dev tun1

openvpn-b:

root@openvpn-b# openvpn --remote openvpn-a --dev tun1

Eu experimentei o problema exato que você descreve, tentando pingar openvpn-b (192.168.20.1) do client-a (192.168.10.10).

Isso resultou do pacote sendo encaminhado pelo openvpn-a e chegando ao openvpn-b com um endereço de origem para o qual o openvpn-b não tinha uma rota.

Uma solução para este problema pode ser abordada de várias maneiras ... uma é adicionar uma rota ao lado 'a' da rede no openvpn-b, via dispositivo de túnel do openvpn-a:

openvpn-b:

root@openvpn-b# ip route add 192.168.10.0/24 via 10.8.0.1

Outra é configurar a rota padrão do openvpn-b para ser via dispositivo de túnel do openvpn-a:

openvpnb-b:

root@openvpn-b# ip route add default via 10.8.0.1

E ainda outro é configurar o NAT no dispositivo de túnel em openvpn-a:

openvpn-a:

root@openvpn-a# iptables -t nat -A POSTROUTING -o tun1 -j MASQUERADE

O Wireshark e / ou o tcpdump podem ser usados com grande eficácia ao diagnosticar este problema. Como pode ser visto no dispositivo de túnel do openvpn-b quando um pacote chega e não há rota para a rede de endereço de origem:

root@openvpn-b# tcpdump -n -i tun1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun1, link-type RAW (Raw IP), capture size 65535 bytes
15:45:10.973251 IP 192.168.10.10 > 192.168.20.1: ICMP echo request, id 2550, seq 1, length 64
^C
1 packet captured
1 packet received by filter
0 packets dropped by kernel
    
por 07.10.2015 / 01:23