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

21

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 domínios e endereços IP brutos, mas não permitirá que tráfego como o feito através de curl e traceroute não chegue a nada. O tráfego funciona corretamente quando não está conectado à VPN.

Toda a informação está aqui: https://pastebin.com/tGspNefn

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
DrDinosaur
fonte
/sbin/route add -net 0.0.0.0 netmask 128.0.0.0 gw 10.8.0.5 por que netmask 128.0.0.0?
Antony Gibbs
Obrigado DrDinosaur por apontar serverfault.com/questions/312860/…
Antony Gibbs
3
Da próxima vez, extraia as informações relevantes e inclua-as na pergunta. Os snippets de pastebin têm uma vida útil limitada.
MLU

Respostas:

34

Existem duas partes na solução:

1. Redirecione todo o tráfego para o túnel

A solução mais fácil - use a --redirect-gateway autolocalopção do OpenVPN (ou coloque-a no arquivo de configuração como redirect-gateway autolocal.

2. Manipule o tráfego no servidor OpenVPN

Agora que o túnel está ativo, todo o tráfego entra no túnel e aparece no final do servidor a partir da tun0interface.

Você precisa configurar duas coisas para fazê-lo funcionar:

uma. Ativar encaminhamento de pacotes

Por padrão, na maioria das distribuições, o encaminhamento de pacotes é desativado; portanto, os pacotes da interface de encapsulamento 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, faça a alteração permanente em /etc/sysctl.conf

Verifique também se iptablesnão está bloqueando o tráfego encaminhado:

~ # iptables -I FORWARD -j ACCEPT

Isso é bom o suficiente para teste - na produção, você deseja tornar as regras do firewall um pouco mais específicas, mas isso está fora de escopo aqui.

b. NAT os pacotes de saída do túnel

Com o encaminhamento ativado, os pacotes são encaminhados por padrão com o endereço de origem inalterado, ou seja, no seu caso 10.8.0.6- esses pacotes são descartados no gateway ISP ou, mesmo que cheguem ao destino, a resposta nunca encontra o caminho de volta. Esses endereços particulares não são roteáveis ​​na internet.

A solução é 10.8.0.6enviar NAT ao tráfego de saída, ou seja, substituir o endereço privado pelo IP público do servidor VPN. Isso garantirá que as respostas cheguem ao servidor VPN e 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

Agora tente ping 8.8.4.4no seu cliente VPN. Você deve ver uma resposta. Deixe-nos saber se não :)

MLu
fonte
Isso funciona perfeitamente agora. Muito obrigado pela resposta de alta qualidade.
DrDinosaur
No lado do cliente, inclua add pull no arquivo client.conf ou ou --pull na linha de comando, para que o cliente aceite a configuração enviada pelo servidor. Além disso, se o cliente for executado no Windows Vista ou desabilitar o UAC mais recente, caso contrário, o serviço openpn em execução no cliente não poderá definir rotas.
Viktor
b. NAT os pacotes de saída do túnel Isso foi útil para mim.
FelikZ
Realmente leve em consideração que a regra FORWARD -j ACCEPT faz do servidor um roteador aberto entre todas as suas interfaces. Não deve ser usado em sistemas de produção. Mas para um HowTo, para que ele funcione rapidamente rapidamente, um conjunto de instruções muito bom.
Sprinterfreak
A Redirect all the traffic into the tunneletapa na configuração do cliente?
aeronaves