OpenVPN não é o gateway padrão para todo o tráfego

18

Estou tentando fazer meu cliente encaminhar todo o tráfego por meio de um VPS executando o OpenVPN. Como você pode ver, ele permitirá pings para ambos os domínios e endereços IP brutos, mas não permitirá que o tráfego feito por meio de curl e traceroute não crie nada. O tráfego funciona corretamente quando não está conectado à VPN.

Todas as informações estão aqui: link

Obrigado.

Configurações de trabalho graças à solução abaixo:

Servidor:

port <integer>
proto udp
dev tun
ca ca.crt
cert vpnserver.crt
key vpnserver.key  # This file should be kept secret
dh dh4096.pem
tls-auth ta.key 0
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway autolocal"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
cipher AES-256-CBC
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3

Cliente:

client
dev tun
proto udp
remote x.x.x.x <port number>
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert vpnclient.crt
key vpnclient.key
tls-auth ta.key 1
ns-cert-type server
cipher AES-256-CBC
comp-lzo
verb 3
    
por DrDinosaur 01.12.2014 / 00:42

1 resposta

29

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:)

    
por 02.12.2014 / 23:05

Tags