Configuração IPSec / L2TP

0

Configurei com sucesso o ipsec-tools/racoon/xl2tpd/pptpd/appropriate encaminhamento de porta do roteador para operar uma VPN em um telefone Android. Funciona bem de fora da rede. Eu posso fazer tunelamento do Android através de vários NATs, conectando-me ao IP público do roteador da VPN. Quando estou na rede local da VPN, também posso fazer isso alterando o IP de destino do Android para o IP local da VPN. Eu verifiquei usando o Wireshark que no primeiro cenário os dados são tunelados usando o ESP-UDP sobre a porta UDP 4500. O traversal do racoon.conf está configurado para forçar, então acredito que isso também seja verdade para a segunda situação.

O problema ocorre quando o Android é conectado à rede local da VPN e é direcionado para o IP público da VPN, em vez de seu IP local (a conexão expira durante a negociação da fase 1). Gostaria de poder deixar a VPN indefinidamente, independentemente da rede à qual o telefone está conectado (e esse problema interfere nesse objetivo).

Eu tentei DMZ o VPN servidor no meu roteador e, simultaneamente, desative UFW e o problema persiste.

O problema que vejo no lado do servidor é:

racoon: ERROR: phase1 negotiation failed due to time up.

O problema que vejo no lado do Android é:

mtpd: Timeout -> Sending SCCRQ

Repete várias vezes até ser anulado.

    
por dimoochka 19.09.2016 / 14:34

1 resposta

1

Esta resposta pode não ajudá-lo porque é tão tarde, mas espero que ajude alguém que vem junto. Eu resolvi o problema que você descreveu usando nomes de domínio, um servidor DHCP local e um servidor DNS local que pode substituir nomes de domínio público.

Esse método obviamente depende de você ter um endereço DNS público que você pode usar no lugar dos endereços IP, não importa onde você vá. Existem serviços de DNS dinâmicos gratuitos que servirão para esse propósito. Você pode definir o endereço IP público em sua interface da Web.

Na sua LAN, você precisa de um servidor DNS que dê prioridade ao seu próprio registro de nomes de domínio. Nesse servidor, você precisa redefinir seu nome de domínio público para apontar para o endereço da LAN local do servidor. Além disso, o servidor DHCP precisa fornecer esse endereço do servidor DNS local ao seu dispositivo Android sempre que ele atribuir um endereço LAN ao dispositivo. Caso contrário, você obterá o registro DNS público e obterá o endereço IP público mesmo quando estiver na LAN . Depois de fazer isso, você pode se conectar à VPN usando o nome de domínio, não importa onde você esteja.

Visão ampla

Quando você estiver longe da LAN, seu dispositivo Android consultará os servidores DNS públicos fornecidos pelo seu ISP para o endereço IP da sua VPN.

myvpn.somepublicdomainname.net -> x.x.x.x (public IP)

Quando você está dentro da sua LAN, o seu dispositivo Android irá consultar o seu servidor DNS local.

myvpn.somepublicdomainname.net -> 192.168.1.2 (private IP)

Isso deve funcionar mesmo que sua VPN forneça um servidor DNS adicional para seus clientes.

Instalando um servidor DNS (dnsmasq)

A maneira mais fácil de configurar um servidor DNS da maneira que descrevi é instalar e configurar dnsmasq . É um servidor DNS de cache muito leve (e servidor DHCP também, aliás).

Digite isto no terminal:

sudo apt-get update && sudo apt-get install -y dnsmasq

Insira a seguinte linha no final de /etc/dnsmasq.conf :

addn-hosts=/etc/dnsmasq.hosts

Insira no arquivo /etc/dnsmasq.hosts ou crie-o se ele não existir:

192.168.1.2   myvpn.somepublicdomainname.net.

Essa primeira parte ( 192.168.1.2 ) precisa ser o endereço IP local da sua VPN, e a última parte ( myvpn.somepublicdomainname.net. ) precisa ser o nome do domínio público COM UM PERÍODO NO FINAL. Desculpe pelas tampas, mas é importante. Esse período final permite que o servidor saiba que é um domínio de nível superior.

Agora reinicie o dnsmasq:

sudo service dnsmasq restart

Neste ponto, você deve poder consultar o seu servidor DNS para o endereço IP da sua VPN e obter o endereço IP local em vez do endereço público. Teste-o usando dig para consultar o servidor DNS (assumirei que o IP do servidor DNS é 192.168.1.1 ).

dig @192.168.1.1 myvpn.somepublicdomainname.net

Isso deve fornecer várias linhas de texto, mas você pode ignorar todas as que começam com uma vírgula ; e se concentrar no que não tem:

myvpn.somepublicdomainname.net.    0       IN      A       192.168.1.2

Se você vir isso, seu servidor DNS local fornecerá o endereço IP local em resposta a consultas. Esta é uma boa notícia. Se ele realmente fornecer o endereço IP público, será necessário verificar novamente sua configuração dnsmasq . Talvez reinicie o servidor antes de ficar louco com muitas mudanças. Isso funciona um número surpreendente de vezes.

Agora, use o mesmo comando dig e substitua myvpn.somepublicdomainname.net por outros nomes de domínio público (como google.com ) para garantir que eles também estejam retornando corretamente. Se eles funcionarem, você pode reconfigurar com segurança seu servidor DHCP para usar seu novo servidor DNS!

Configurando um servidor DHCP

Suponho que você já tenha um servidor DHCP configurado na sua LAN. Esse é um serviço normalmente fornecido pelo seu roteador WiFi. Você precisará configurá-lo para usar seu novo servidor DNS primeiro, antes de qualquer outro servidor DNS. Esse procedimento varia, então deixarei a resposta para outra pergunta.

Possível problema

Se o seu dispositivo Android for configurado manualmente para usar servidores DNS específicos (como o popular 8.8.8.8 ou 8.8.4.4 do Google), você terá que voltar a usar servidores DNS atribuídos ao DHCP OU listar primeiro o servidor DNS da LAN e use 8.8.8.8 como fall-back. Listar manualmente seu servidor DNS da LAN primeiro certamente resultará em pesquisas de nome de domínio mais lentas sempre que você não estiver dentro da sua LAN, o que terá um efeito negativo em sua navegação na web. Há maneiras de contornar isso, mas eu suponho que você vá com os servidores DNS designados pelo DHCP e deixe a resposta desse problema para outra pergunta. Se você não sabe do que estou falando, isso provavelmente não se aplica à sua situação de qualquer maneira.

    
por FlippingBinary 24.07.2017 / 16:15