Meu objetivo é configurar uma VPN bidirecional site-to-site. Quero poder acessar o lado do servidor do lado do cliente, e o lado do cliente do lado do servidor.
Não estou fazendo nada avançado e tentei seguir as instruções no guia de conexão site-to-site do OpenVPN. Mas, acho que, como estou usando dois roteadores DD-WRT como meu servidor e VPNs de cliente, estou tendo um problema em corresponder o guia à minha situação.
Do lado do cliente, consigo conectar aos hosts de rede do lado do servidor. Do lado do servidor, não consigo conectar aos hosts do lado do cliente.
Mapa de rede:
Rede CG-NAT LAN 192.168.0.0/22 Cliente OpenVPN em DD-WRT 192.168.0.2
Rede LAN regular 192.168.4.0/22 Servidor OpenVPN em DD-WRT 192.168.4.2
Túnel: 10.10.28.1 <-> 10.10.28.2 (posso ver que está configurado corretamente nos logs)
Eu controlo ambos os lados, então estava tentando configurar as rotas para consertar o problema. Suspeito que as rotas (ou as configurações no servidor OpenVPN) estejam erradas.
Esta é a tabela de roteamento no lado do cliente OpenVPN:
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.0.1 0.0.0.0 UG 0 0 0 br0
10.10.28.0 * 255.255.255.0 U 0 0 0 tun1
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
192.168.0.0 * 255.255.252.0 U 0 0 0 br0
192.168.4.0 10.10.28.1 255.255.252.0 UG 200 0 0 tun1
Posso fazer ping de qualquer lugar na rede do cliente para a rede 192.168.4.0:
# ping 192.168.4.222
PING 192.168.4.222 (192.168.4.222): 56 data bytes
64 bytes from 192.168.4.222: seq=0 ttl=63 time=42.244 ms
64 bytes from 192.168.4.222: seq=1 ttl=63 time=32.047 ms
Esta é a tabela de roteamento no host do servidor OpenVPN quando a abro pela primeira vez:
default via 192.168.4.1 dev br0
10.10.28.0/24 dev tun2 scope link src 10.10.28.1
127.0.0.0/8 dev lo scope link
192.168.4.0/22 dev br0 scope link src 192.168.4.2
Observações: Não consigo fazer ping da rede do servidor para a rede 192.168.0.0. NO ENTANTO, enquanto estiver logado no host do servidor OpenVPN (192.168.4.2), consigo fazer ping do outro lado do túnel (10.10.28.2)
# ping 10.10.28.2
PING 10.10.28.2 (10.10.28.2): 56 data bytes
64 bytes from 10.10.28.2: seq=0 ttl=64 time=40.287 ms
64 bytes from 10.10.28.2: seq=1 ttl=64 time=35.791 ms
# traceroute 192.168.0.1
traceroute to 192.168.0.1 (192.168.0.1), 30 hops max, 46 byte packets
1 192.168.4.1 (192.168.4.1) 5.108 ms 4.927 ms 3.953 ms
2 * *
Então, meu primeiro palpite foi adicionar esta rota para corresponder à rota do Cliente para a sub-rede do Servidor:
route add -net 192.168.0.0 netmask 255.255.252.0 gw 10.10.28.2 metric 200 tun2
Isso criou uma entrada adicional:
192.168.0.0 10.10.28.2 255.255.252.0 UG 200 0 0 tun2
Isso fez alguma diferença, mas o traceroute ou os pings não retornam.
# traceroute 192.168.0.1
traceroute to 192.168.0.1 (192.168.0.1), 30 hops max, 46 byte packets
1 * * *
Obviamente sou iniciante, então me diga se preciso de mais informações para me ajudar.
Acesso OpenVPN à LAN por trás do cliente (e vice-versa)
https://community.openvpn.net/openvpn/wiki/RoutedLans
Essa deve ser uma preocupação bem padrão com openvpn site-to-site. Se entendi corretamente, no seu lado do servidor, você adicionou:
Como você adicionou uma rota para a VPN, seu servidor deve direcionar um pacote para 192.168.0.2 (ou qualquer último número de byte na sub-rede /22) através da VPN. No entanto, o OpenVPN não sabe para qual ponto de terminação VPN direcionar isso.
NB: provavelmente funciona da sub-rede do cliente PARA a sub-rede do servidor porque o cliente deve adicionar uma rota padrão por meio da VPN para que tudo seja enviado ao servidor.
Portanto, o OpenVPN tem um conceito de rota interna "iroute", para que ele saiba em qual ponto de terminação da VPN o pacote está localizado para um intervalo de IP específico.
no arquivo de configuração do servidor você precisa adicionar:
Isso informará que os pacotes para esta sub-rede precisam ser enviados para a interface VPN.
E habilite a pasta específica do cliente ccd no arquivo de configuração no servidor:
ifconfig-push 10.10.28.1 255.255.255.0
(isso definirá o endereço IP, se tudo for estático, acho que pode ser omitido se seu cliente tiver um IP fixo em sua configuração).É isso que fará o openvpn entender que os pacotes que entram na VPN com aquela sub-rede como destino precisam ser enviados para aquele cliente específico.
Com esses 2, você não precisa adicionar manualmente nenhuma rota ao cliente, o openvpn adicionará as rotas internas da VPN (não relacionadas à tabela de roteamento do kernel, a propósito), bem como a entrada correta da tabela de roteamento do kernel.
O cliente deve ter o necessário para rotear para suas próprias máquinas de sub-rede.