Existem duas partes na solução:
1. Redirecionar todo o tráfego para o túnel
A solução mais fácil - use a opção --redirect-gateway autolocal
do OpenVPN (ou coloque-a no arquivo de configuração como redirect-gateway autolocal
.
2. Lidar com o tráfego no servidor OpenVPN
Agora que o túnel está todo o tráfego entra no túnel e aparece no final do servidor na interface tun0
.
Você precisa configurar duas coisas para que funcione:
a. Ativar o encaminhamento de pacotes
Por padrão, na maioria das distribuições, o encaminhamento de pacotes é desabilitado, portanto os pacotes da interface de túnel nunca chegam à interface pública. Você deve ativar o encaminhamento com:
~ # sysctl net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1
Uma vez testado, torne a mudança permanente em /etc/sysctl.conf
Verifique também se iptables
não estão bloqueando o tráfego encaminhado:
~ # iptables -I FORWARD -j ACCEPT
Isso é bom o suficiente para testes - na produção, você vai querer tornar as regras de firewall um pouco mais específicas, mas isso está fora do escopo aqui.
b. NAT os pacotes de saída do túnel
Com o encaminhamento ativado, os pacotes são, por padrão, encaminhados com o endereço de origem inalterado, ou seja, 10.8.0.6
- esses pacotes são descartados no gateway do provedor ou mesmo se chegarem ao destino, a resposta nunca localiza caminho de volta. Estes endereços privados não são roteáveis na internet.
A solução é para o tráfego de saída do NAT, ou seja, substituir o endereço 10.8.0.6
privado pelo IP público do servidor VPN. Isso garantirá que as respostas cheguem ao servidor VPN e lá elas serão encaminhadas de volta ao túnel.
~ # iptables -t nat -I POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
3. Teste-o
Agora, tente ping 8.8.4.4
do seu cliente VPN. Você deveria ver uma resposta. Deixe-nos saber se não:)