Uma solução muito básica é:
1. use o OpenVPN 2.3 ou mais (atualmente, o mais recente é o 2.3-alpha) para servidores + clientes
2. use a opção de configuração OpenVPN abaixo:
3. não use mais nada (sem ipfilter, sem truques)
No lado do servidor, você precisa distribuir manualmente endereços de VPN (por isso, não há server
opção, você tem que usar ifconfig
ou ifconfig-push
):
# /etc/openvpn/server.conf
ifconfig 10.99.99.1 10.99.99.2
route 10.99.99.0 255.255.255.0
push "route 10.99.99.0 255.255.255.0"
push "client-nat dnat 10.99.99.11 255.255.255.255 10.10.111.11"
push "client-nat dnat 10.99.99.12 255.255.255.255 10.10.112.12"
push "client-nat dnat 10.99.99.13 255.255.255.255 10.10.113.13"
As linhas route
e push route
e client-nat
são necessárias se você quiser se comunicar diretamente entre roteadores ( ping 10.99.99.1
de um site distante por meio da VPN). Senão você pode descartá-los.
.
.
Agora você tem que escolher um endereço de rede virtual. Eu mantive o mesmo que você usou no seu exemplo: 10.10.0.0/16
Você permite o roteamento para isso:
# /etc/openvpn/server.conf
route 10.10.0.0 255.255.0.0
push "route 10.10.0.0 255.255.0.0"
.
.
Você tem agora para instruir o cliente a usar o NAT 1: 1:
# /etc/openvpn/ccd/client_11
ifconfig-push 10.99.99.11 10.99.99.1
push "client-nat snat 10.99.99.11 255.255.255.255 10.10.111.11"
push "client-nat snat 192.168.0.0 255.255.255.0 10.10.11.0"
push "client-nat dnat 10.10.10.0 255.255.255.0 192.168.0.0"
iroute 10.10.11.0 255.255.255.0
iroute 10.10.111.0 255.255.255.0
A primeira linha define o endereço do roteador remoto. Cuidado com o driver do Windows que requer endereços especiais.
A segunda e última linhas permitem que o roteador distante se comunique a partir de sua interface 10.99.99.x.
Terceira e quarta linhas fazem a fonte e o destino 1: 1 NAT
A quinta linha diz ao OpenVPN o que fazer com os pacotes correspondentes.
Este método permite conectar sites com endereços LAN idênticos (ou não), sem nenhum host sombreado.