Roteamento OpenVPN do servidor para o cliente

Roteamento OpenVPN do servidor para o cliente

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".

Esquema de rede

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.rulesarquivo 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-dirdeve 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@somehostou no openvpn-status.txtarquivo). 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/16o 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/16e 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:

boa sorte :)

informação relacionada