servidor VPN no Google Compute Engine com o OpenVPN

13

Estou tentando usar o servidor do Google Compute Engine como servidor VPN para todo o meu tráfego (estou morando na Rússia, temos alguns problemas com a censura aqui).

Há um mini-tutorial sobre VPN no GCE , mas é sobre rede entre dois servidores dentro do GCE e não com o OpenVPN.

Eu fiz todos os passos de outro tutorial, sobre configurar VPN com o OpenVPN no Debian , Posso me conectar à VPN do cliente, mas não consigo abrir conexões (nem consigo pingar no google). No servidor eu posso pingar e baixar tudo como sempre.

Eu tenho VPN no Linode com a mesma configuração e funciona bem. Então, o problema está no roteamento de rede do GCE ou nas regras de firewall.

Eu tentei muitas variantes, mas nada funciona. Por favor, olhe as configurações e diga-me o que devo mudar.

// linhas de configuração removidas, porque o problema está resolvido //

    
por OZ_ 22.04.2014 / 13:59

7 respostas

7

Primeiramente, graças ao @Shivox por sua resposta .

E aqui está o rápido como fazer:

  • Eu recomendo que você crie rede adicional (consulte a guia "Redes"). Nas preferências de rede, adicione regras de permissão para: tcp: 22 (se não existir), tcp: 9700, tcp: 17619 . 17619 aqui é variável - mude para qualquer porta que você goste (o intervalo é 9075-65534). Você só precisa de 3 regras e 2 rotas padrão, nada mais.
  • Vá para "Criar instância do Compute Engine", clique em "Mostrar opções avançadas", permita o encaminhamento de portas, selecione o local do servidor.
  • Agora (quando você selecionou o local), adicione IP estático ao servidor.
  • Selecione a imagem do Ubuntu 14.04 (exatamente esta versão).
  • Criar instância
  • Conecte-se via SSH (de maneira mais fácil - use a ferramenta no navegador do painel do GCE)
  • sudo su
  • apt-key update && apt-get update && apt-get -y upgrade && apt-get -y install python-software-properties && apt-get -y install software-properties-common && add-apt-repository -y ppa:pritunl && apt-get update && apt-get -y install pritunl
  • No navegador, abra https://instance_ip:9700
  • Na pergunta sobre DB, clique em "Salvar"
  • Na janela de login, use pritunl como nome de usuário e senha
  • Agora altere o nome de usuário e a senha do usuário administrador
  • Adicione uma organização e, em seguida, dois usuários (para computadores e dispositivos móveis)
  • Clique em "Adicionar servidor" na guia "Servidores"
  • Use o número da porta da primeira etapa ( 17619 como exemplo) e o protocolo tcp.
  • Anexar organização ao servidor
  • Iniciar servidor
  • Na guia "Usuários", baixe as chaves para ambos os usuários (arquivos tar com arquivos ovpn dentro).

Eu uso Viscosity para OS X e OpenVPN conecto para iOS como clientes. Em Viscosidade, ative a opção "Enviar todo o tráfego pela conexão VPN" na guia "Rede".

    
por 01.02.2015 / 13:34
6

Você pode resolver o problema de não poder navegar na Web por meio da VPN, apesar de poder fazer ping, traceroute ... por uma das duas maneiras a seguir:

Primeiro, você pode usar o protocolo TCP em vez do UDP, alterando 'proto udp' para 'proto tcp' nos arquivos conf do cliente e do servidor.

Em segundo lugar, você pode usar o dispositivo de toque em vez de tun, alterando 'dev tun' para 'dev tap' nos arquivos conf do cliente e do servidor.

Não sei qual é o problema, parece que é um problema do Google.

    
por 31.01.2015 / 23:16
4

Lembre-se de que o Google VPC está descartando pacotes que possuem source_ip além de um IP interno de uma VM com IP externo.

Este documento link afirma:

The VPC network rewrites the IP header to declare the instance's external IP address as the source. If the instance has no external IP address, the call is not allowed, and the VPC network drops the packet without informing the sender.

Portanto, se o seu openVPN estiver apenas encaminhando pacotes da outra rede, os pacotes para o público interno serão descartados, pois source_ip não corresponde ao IP interno de uma VM existente. Por esta razão, você precisa NAT os pacotes deixando sua rede local, por exemplo, no seu nó VPN.

Chain POSTROUTING (policy ACCEPT)
target      prot opt source              destination         
MASQUERADE  all  --  192.168.0.0/16      !192.168.0.0/16

"Pritunl" mencionado na resposta da OZ_ funciona, porque configura o NAT automaticamente.

    
por 08.05.2017 / 23:56
2

Esta não é realmente uma resposta, mas o site não me permitiu adicioná-la como comentário à sua pergunta.

No entanto, eu tenho quase a mesma configuração que você detalhou acima (eu não configurei o dnsmaq no servidor difícil)

Infelizmente, a VPN não está funcionando como esperado. Eu posso resolver um endereço, executar ping em alguns hosts da Internet e até mesmo fazer um rastreamento completo enquanto estiver conectado à VPN. No entanto, quando eu abro o navegador e navego para um site, a conexão é muito lenta. Eu não sei o que pode estar afetando a conexão, mas é realmente um problema estranho.

Talvez alguém do Google possa nos ajudar a saber o que está acontecendo.

PS 1. Como outras pessoas sugeriram antes, você pode verificar se o encaminhamento de ip está habilitado? Para mim, a única maneira de garantir que o valor de net.ipv4.ip_forward foi restaurado corretamente após a reinicialização foi depois que usei uma regra personalizada em /etc/sysctl.d

Por exemplo, você pode adicionar a regra usando o seguinte comando:

$ sudo echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/90-useroverrides.conf

PS 2. Se o encaminhador funcionar para você, você pode testar uma rota de rastreamento para um host externo enquanto estiver conectado à VPN ?. A saída que obtive quando faço isso é um pouco estranha (por que existem vários saltos no mesmo IP ????):

$ sudo traceroute www.yahoo.com -T -p 80 -N 1 -z 0.5 -q 1
traceroute to www.yahoo.com (98.139.183.24), 30 hops max, 60 byte packets
 1  209.85.241.26 (209.85.241.26)  0.764 ms
 2  209.85.241.34 (209.85.241.34)  0.668 ms
 3  209.85.241.26 (209.85.241.26)  0.966 ms
 4  209.85.241.36 (209.85.241.36)  0.702 ms
 5  209.85.241.28 (209.85.241.28)  0.865 ms
 6  209.85.241.36 (209.85.241.36)  0.642 ms
 7  209.85.241.26 (209.85.241.26)  0.921 ms
 8  209.85.241.28 (209.85.241.28)  18.837 ms
 9  72.14.238.107 (72.14.238.107)  13.378 ms
10  72.14.237.131 (72.14.237.131)  38.275 ms
11  209.85.254.131 (209.85.254.131)  13.349 ms
12  *
13  ae-8.pat1.bfz.yahoo.com (216.115.101.231)  44.903 ms
14  ae-4.msr1.bf1.yahoo.com (216.115.100.25)  45.323 ms
15  xe-10-3-1.clr1-a-gdc.bf1.yahoo.com (98.139.232.101)  47.382 ms
16  et18-25.fab6-1-sat.bf1.yahoo.com (98.139.128.103)  45.793 ms
17  po-13.bas1-7-prd.bf1.yahoo.com (98.139.129.209)  41.143 ms
18  ir2.fp.vip.bf1.yahoo.com (98.139.183.24)  42.451 ms

PS 3. A única coisa que parece funcionar corretamente é que a VPN está usando o IP externo do meu host para acessar a Internet

$ sudo curl --interface tun0 checkip.dyndns.org
<html><head><title>Current IP Check</title></head><body>Current IP Address: 107.178.XXX.XXX</body></html>
    
por 02.05.2014 / 11:00
1

Edite /etc/sysctl.conf removendo o coeficiente de #net.ipv4.ip_forward=1

Isso deve permitir que o OpenVPN direcione seu tráfego.

    
por 01.05.2014 / 21:31
0

Você precisa adicionar uma regra que permita tráfego para o próprio OpenVPN:

iptables -A INPUT -p udp --dport 1194 -j ACCEPT
    
por 22.04.2014 / 14:41
0

Sobre a rede.

1) Habilite todo o tráfego da sub-rede OpenVPN (por exemplo, 10.8.0.0/24) no console

2) Eu sugiro strongmente que você adicione Masquerade à sua rede

firewall-cmd --zone=trusted --add-masquerade --permanent
firewall-cmd --reload-all

3) Não se esqueça de ativar o roteamento de pacotes no kernel

a) uma vez

 echo 1 > /proc/sys/net/ipv4/ip_forward

b) sempre em /etc/sysctl.conf:

 net.ipv4.ip_forward = 1
    
por 11.06.2017 / 23:01