Tenho dois locais distantes cada um com um IP público e quero fazer a rede LAN desses locais como se fossem um só. Ou seja, as máquinas no local A podem se comunicar com as máquinas no local B e as que estão no local B com as que estão no local A.
No lugar A (10.0.2.1) tenho um ASUS AC 1200g+ e um Raspberry pi (10.0.2.60) com servidor OpenVPN. Novos clientes permanecem na interface tun0 ( 10.8.0.1 ). Neste momento o Cliente (Local B) pode se comunicar com a LAN do Local A, apenas o tráfego com destino 10.0.1.0/24 é redirecionado para o lado do servidor.
Agora quero que as máquinas do Local A (Servidor) possam se comunicar com a LAN do Local B. Coloquei uma rota no meu roteador para que todas as solicitações de destino com 10.0.1.0/24 sejam redirecionadas para o servidor VPN Raspberry Pi, mas o servidor não sabe o que fazer com esse tráfego.
No local B (10.0.1.1) tenho um ASUS AC86U com firmware ASUS Merlin e ativo o cliente OpenVPN com a opção de habilitação "Inbound Firewall".
Responder1
Eu tenho uma configuração semelhante em que o raspberry pi é o cliente, mas isso não deve importar muito. Isenção de responsabilidade: não é a coisa mais fácil de configurar.
Estou usando este /etc/iptables/iptables.rules
arquivo para tráfego NAT de conexões OpenVPN (geralmente tun0
, mas tun+
abrange todas) nas redes locais:
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -j MASQUERADE
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A FORWARD -i eth+ -o tun+ -j ACCEPT
-A FORWARD -i tun+ -o eth+ -j ACCEPT
COMMIT
A configuração OpenVPN requer um chamadoconfiguração cliente a cliente. Estas duas linhas nos servidores OpenVPN-config habilitam o recurso:
# use ccd-folder (per host configs)
client-to-client
# routing to office lan:
client-config-dir ccd
Ele client-config-dir
deve ser criado manualmente abaixo do /etc/openvpn/...
-path onde está sua configuração. Dentro dessa pasta você pode criar arquivos de texto por host. A nomeação do arquivo é importante: Verifique como o OpenVPN chama seu cliente no log do sistema (por exemplo, com journalctl -xef --unit openvpn-server@somehost
ou no openvpn-status.txt
arquivo). O conteúdo do arquivo é simples:
ifconfig-push 10.10.99.18 255.255.255.255
iroute 192.168.0.0 255.255.0.0
iria configurá-lo para obter o mesmo IP sempre que conectar ( 10.10.99.18
) e configurar o servidor VPN para rotear internamente o tráfego para 192.168.0.0/16
o cliente com o nome deste arquivo e endereço IP. Isso torna compreensível o motivo pelo qual ainda não temos uma conexão de rede válida: isto é, porque o sistema host do servidor VPN não sabe que o túnel VPN pode ser usado para rotear o tráfego para essa rede ( netstat -rn4
). Portanto, temos que configurar o servidor VPN novamente e acrescentar:
route 192.168.0.0 255.255.0.0
push "route 192.168.0.0 255.255.0.0"
para informar ao servidor que ele deve rotear o tráfego 192.168.0.0/16
e todos os clientes conectados ao servidor também devem ser informados sobre a rota - a rota é enviada aos clientes.
Para minha configuração usei o link acima, mas ao escrever esta resposta encontrei dois links interessantes sobre o assunto:
- https://community.openvpn.net/openvpn/wiki/RoutedLans
- https://forums.openvpn.net/viewtopic.php?t=26839
boa sorte :)