Como configuro uma VPN PPTP no meu próprio Ubuntu Server?

16

Supondo que eu tenha um servidor virtual privado de alguém como Linode , executando o Ubuntu, como configuro facilmente uma VPN PPTP para que os clientes Ubuntu possam se conectar a ela?

Por padrão, o Ubuntu oferece a conexão com essas redes PPTP. Quero configurá-lo de forma que seja muito fácil conectar-se (isto é, sem instalar nenhum pacote no cliente).

Stefano Palazzo
fonte

Respostas:

28

A configuração mínima absoluta do servidor

A seguir, são apresentadas as instruções mínimas absolutas necessárias para que um servidor VPN PPTP básico seja executado no Ubuntu. Os clientes poderão VPN no servidor e rotear seu tráfego da Internet para que ele passe pelo servidor para a Internet. Como sempre, consulte a documentação completa para entender o que tudo está fazendo.

Primeiro, instale o software necessário:

sudo apt-get install pptpd

Segundo, habilite ip_forwardno kernel o IPv4 descomentando a linha associada em /etc/sysctl.conf :

sudo sed -i -r 's/^\s*#(net\.ipv4\.ip_forward=1.*)/\1/' /etc/sysctl.conf
# Reload the config file to have the change take effect immediately.
sudo -i sysctl -p

Terceiro, ative o NAT (se já não estiver ativado) para que os usuários na rede VPN privada possam ter seus pacotes roteados para a Internet:

OUTIF=`/sbin/ip route show to exact 0/0 | sed -r 's/.*dev\s+(\S+).*/\1/'`
sudo -i iptables --table nat --append POSTROUTING --out-interface $OUTIF --jump MASQUERADE
# Enable NAT on boot from the rc.local script.
CMD="iptables --table nat --append POSTROUTING --out-interface $OUTIF --jump MASQUERADE"
sudo sed -i "\$i$CMD\n" /etc/rc.local

Nota: Este guia assume que você não possui firewall configurado no servidor. Se você possui um firewall no servidor, como o UFW , consulte a documentação relevante .

Quarto, para cada usuário da VPN, crie uma conta no arquivo / etc / ppp / chap-secrets . Substitua $USERpelo nome de usuário real que você deseja usar para esse usuário da VPN.

KEY=`head -c 20 /dev/urandom | sha1sum | nawk '{print $1}'`
echo "$USER pptpd $KEY *" | sudo tee -a /etc/ppp/chap-secrets

Finalmente, você está pronto para ...

Configure o cliente

No miniaplicativo do Network Manager , selecione Conexões VPNConfigurar VPN e clique em Adicionar . Na próxima tela, selecione PPTP para o tipo de VPN e clique em Criar .

insira a descrição da imagem aqui

Nesta janela, digite o nome do host ou o IP do servidor, juntamente com o nome de usuário e a chave que você adicionou ao arquivo / etc / ppp / chap-secrets no servidor.

Agora clique em Avançado .

insira a descrição da imagem aqui

Nesta janela, ative "Usar criptografia ponto a ponto (MPPE)" e selecione segurança de 128 bits . Desabilite o uso da autenticação MSCHAP (deixe o MSCHAPv2 ativado).

Por fim, clique em OK e, em seguida, em Salvar para fechar a janela anterior.

Agora você pode testar a conexão VPN, acessando o applet Network Manager → Conexões VPN e selecionando a conexão que você acabou de criar. Certifique-se de receber uma mensagem informando que a conexão VPN foi bem-sucedida e procure um site de verificação de IP para verificar se o seu IP agora aparece como o IP do servidor.

Se você receber uma mensagem dizendo que a conexão VPN ao servidor falhou: primeiro verifique se você inseriu corretamente as configurações do cliente; segundo, verifique se o cliente tem conectividade de rede à porta TCP 1723 no servidor; finalmente, verifique o arquivo de log / var / log / messages no servidor para obter mais dicas. Se a sua conexão VPN for bem-sucedida, mas você não conseguir mais acessar sites do cliente, consulte este guia de diagnóstico incrivelmente útil no site pptpd.

Notas

Se a rede local à qual você está conectado estiver usando as sub-redes 192.168.0.0/24 e 192.168.1.0/24, você terá problemas, pois é isso que o servidor PPTP usa por padrão. Você precisará configurar o PPTP para usar sub-redes diferentes no pptpd.conf .

Existem várias outras alterações na configuração que você pode querer fazer. Por exemplo, todas as suas pesquisas de nome de domínio ainda serão consultadas usando o servidor DNS local em vez de passar pelo servidor PPTP. Reserve um tempo para ler a documentação completa e descobrir como alterar essa configuração e muitas outras.

Michael Kropat
fonte
4

Este tutorial que escrevi o guiará. Isso deve ajudar a evitar erros comuns cometidos por pessoas que usam o VPS.

Primeiro, entre no seu painel VPS e ative TUN / TAP e PPP . Se você não tiver essa opção, entre em contato com o seu ISP para habilitá-lo.

insira a descrição da imagem aqui

Primeiro instale este pacote:

sudo apt-get install pptpd

Como não queremos que nossa VPN seja pública, vamos criar usuários.
Estou usando o VI, você pode usar o NANO ou qualquer editor de texto que desejar

vi /etc/ppp/chap-secrets

O formato é

[username] [service] [password] [ip]

Exemplo

john pptpd johnspassword *

* significa que o acesso de todos os endereços IP é permitido, especifique o IP apenas se você tiver um estático.

Editando configurações de PPTPD

vi /etc/pptpd.conf

Procure as configurações localip e remota. Remova o #(caractere de comentário) de ambos, para que essas configurações sejam realmente reconhecidas. Mude localip para o IP do seu servidor. Se você não souber o IP do servidor, poderá procurar no painel de controle do VPS.

A remota é basicamente o intervalo de IP que os clientes (computadores conectados à sua VPN) serão atribuídos. Por exemplo, se você deseja o seguinte intervalo de IPs: 192.168.120.231-235, seu servidor VPN poderá atribuir 192.168.120.232, 192.168.120.233, 192.168.120.234 e 192.168.120.235 aos clientes. Cabe a você o que você deseja usar para este campo.

Pessoalmente, escolho estas configurações:

localip 10.0.0.1
remoteip 10.0.0.100-200

Para que eu possa conectar cerca de 200 clientes.

Adicione servidores DNS ao /etc/ppp/pptpd-options

ms-dns 8.8.8.8
ms-dns 8.8.4.4

Você pode adicionar isso ao final do arquivo ou encontrar essas linhas, descomente-as e altere os IPs para o DNS público desejado.

Configurar encaminhamento

É importante habilitar o encaminhamento de IP no seu servidor PPTP. Isso permitirá que você encaminhe pacotes entre IP público e IP privado que você configura com o PPTP. Simplesmente edite o /etc/sysctl.conf e adicione a seguinte linha, se ela já não existir:

net.ipv4.ip_forward = 1

Para ativar as alterações, execute sysctl -p

Crie uma regra NAT para iptables

Esta é uma parte importante, se você estiver usando o VPS, provavelmente não usará o eth0, mas o venet0, verifique a interface que possui executando ifconfig

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE && iptables-save

Se você também deseja que seus clientes PPTP se comuniquem, adicione as seguintes regras do iptables:

iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE
iptables -I INPUT -s 10.0.0.0/8 -i ppp0 -j ACCEPT
iptables --append FORWARD --in-interface eth0 -j ACCEPT

Novamente, você precisa substituir eth0 por venet0 se estiver usando o VPS.

Eu recomendaria correr

sudo iptables-save

Agora, seu servidor PPTP também atua como um roteador.

Você pode executar este comando para que o serviço VPN seja iniciado na inicialização

systemctl enable pptpd

Eu recomendo instalar o iptables-persistent para que as regras permaneçam mesmo após a reinicialização

sudo apt-get install -y iptables-persistent
Luka
fonte
O link não vai a lugar algum, principalmente eu nunca vou liberar esse nome de domínio; em segundo lugar, é o meu servidor de hospedagem; em terceiro lugar, acredite em mim: DI realmente não pode simplesmente copiar e colar o tutorial, aqui é muito longo.
Luka
Receio que não aceitemos respostas somente de links neste site. Portanto, essa resposta provavelmente será excluída em breve, como você pode ver, ela já está na fila de revisão (link no meu comentário anterior).
Zanna muito obrigado! @Paranoid Panda bem, então você deve remover a resposta acima da minha, que possui 2 votações porque está contendo o link: P
Luka
11
O problema aqui era que a resposta era somente link. Isso significa que, se o link for desativado por qualquer motivo (mesmo que o link supostamente nunca seja desativado), a resposta se tornará inválida. Agora que a resposta se tornou independente (e usando o link para referência), a resposta está ótima como está. A resposta em questão está sendo removida atualmente, a menos que seja adaptada como sua postagem.
Kaz Wolfe
11
De nada, obrigado por fazer o tutorial. Da próxima vez, não tenha medo de publicar um post desse tamanho; é completamente aceitável.
Zanna
3

Siga este tutorial: Servidor VPN PPTP com Ubuntu

  1. Na seleção de software, selecione servidor OpenSSH - para gerenciamento remoto da máquina - e seleção manual de pacotes para o pacote pptpd real. Se você deseja mais serviços, por exemplo, se deseja usar o computador também como servidor da Web, é claro que pode selecionar o software adicional. Por motivos de segurança, geralmente aconselho as pessoas a executar apenas um serviço externo acessível por máquina, se configurado em um ambiente crítico, mas isso depende de você.

  2. Na seleção manual, navegue para pacotes não instalados> net, onde você encontrará o pptpd. Selecione-o e pressione 'g' duas vezes para instalar o pacote.

  3. Deixe a instalação terminar e reinicie o seu sistema.

  4. SSH em sua máquina recém-configurada e execute sudo aptitude update && sudo aptitude safe-upgradeprimeiro para atualizar todos os pacotes. Reinicie se necessário.

  5. Abra o arquivo pptpd.conf: sudo nano /etc/pptpd.confAjuste as configurações de IP na parte inferior de acordo com suas necessidades. Em IP local, você insere o IP na rede local do seu servidor VPN (se você não souber, digite 'sudo ifconfig' e ele mostrará suas interfaces de rede e os IPs atribuídos). Por esse motivo, recomendo configurar um IP estático em / etc / network / interfaces ou na configuração do seu roteador.

  6. Se desejar, você pode alterar o nome do host em /etc/ppp/pptpd-options

  7. Especificar os nomes de usuário e senhas que você quer dar acesso ao seu vpn: sudo nano /etc/ppp/chap-secrets. Se você alterou o nome do host na etapa anterior, certifique-se de digitar o mesmo nome de host agora emserver

    Exemplo:

    # client        server  secret                  IP addresses
    eubolist   pptpd   myübersecretpassword   *
    

    Como no pptp, não há segurança no arquivo de chaves depende apenas da senha. É por isso que você deve escolher uma senha aleatória longa (por exemplo, 32 caracteres). Você pode gerar essa senha aqui.

  8. Agora precisamos configurar o mascaramento de ip: sudo nano /etc/rc.local

    Adicione as seguintes linhas acima da linha que diz 'exit 0'

    # PPTP IP forwarding
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    

    Opcionalmente, recomendo proteger o servidor SSH contra ataques de força bruta:

    #SSH Brute Force Protection
    iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
    iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 8 --rttl --name SSH -j
    

    SOLTA

    (também deve ser inserido acima da 'saída 0')

    Pode ser necessário alterar 'eth 0' para outra interface, dependendo da interface configurada para conectar-se à Internet em sua máquina.

  9. Por fim, remova o comentário desta linha em /etc/sysctl.conf:

    net.ipv4.ip_forward=1
    
  10. Reiniciar

  11. Se o seu servidor VPN não se conectar diretamente à Internet, talvez seja necessário encaminhar a porta 1723 TCP e GRE para o IP da LAN do seu servidor VPN. Consulte o manual do seu roteador ou o portforward.com para obter instruções específicas do fornecedor. Novamente, pode ser necessário atribuir um IP estático /etc/network/interfaces.

Ilias
fonte