A maneira mais fácil de configurar o Ubuntu como um servidor VPN

68

Eu sei que existem muitos tutoriais na rede para configurar o cliente e o servidor VPN.

Se você encontrar um que seja simples / curto , estou interessado apenas na parte do servidor.

Para o cliente, usarei o OS X, por isso prefiro uma solução que use L2TP over IPsecou PPTPporque suponho que o Cisco IPsec custaria algo.

Não quero gastar muitas horas configurando-o. Você sabe, talvez alguém já tenha feito um script de instalação :)

Nota: Estou usando uma micro instância EC2 executando o Ubuntu 12.04 nele.

sorin
fonte
3
Nota: O CISCO IPSec pode ser alcançado via StrongSwan e muitas configurações, mas é complicado. O PPTP não é mais seguro. E L2TP sobre IPSec requer configuração de L2TP e IPSec. Escolha quando quiser, embora minha resposta explique PPTP
Thomas Ward

Respostas:

24

ATUALIZAÇÃO : A partir do Sierra, o macOS não oferece mais suporte ao PPTP vpn. Esta resposta não é válida para clientes macOS Sierra e além.

PPTP via PoPToP é fácil

  1. apt-get install pptpd
  2. edite /etc/pptpd.confe defina a opção remoteip para um intervalo na sua rede que NÃO é atendido pelo servidor DHCP.
  3. editar /etc/ppp/chap-secretse adicionar um nome de usuário e senha

por exemplo

vpnuser pptpd vpnpassword *

Isso é tudo o que é necessário para configurar o pptp. Agora teste-o com seu cliente OS X.

Jay _silly_evarlast_ Wren
fonte
Também estou me perguntando quais valores localip e remoteip são os mais seguros, considerando que vou me conectar a este servidor a partir de qualquer local. Definitivamente os valores padrão com 192.168.0.e 192.168.1.provavelmente são um dos piores possíveis.
Sorin
12 de maio 13:28:06 zork pppd [9447]: Plugin /usr/lib/pptpd/pptpd-logwtmp.so carregado. 12 de maio 13:28:06 zork pppd [9447]: pppd 2.4.5 iniciado pelo root, uid 0 12 de maio 13:28:06 zork pppd [9447]: Usando a interface ppp0 12 de maio 13:28:06 zork pppd [9447 ]: Conectar: ​​ppp0 <--> / dev / pts / 3 de maio 12 13:28:36 zork pppd [9447]: Hangup (SIGHUP) 12 de maio 13:28:36 zork pppd [9447]: Modem hangup 12 de maio 13 : 28: 36 zork pppd [9447]: Conexão terminada. 12 de maio 13:28:36 zork pppd [9447]: Exit.It ainda não funciona! Seu guia está incompleto (ainda);)
sorin
Sim, isso não funciona.
bkerensa
11
não funcionou para mim
Tyler Gillies
@SorinSbarnea esses ips são privados e nunca passam pela Internet, então não sei o que você quer dizer com "mais seguro". Você terá mais sorte se eles não tiverem o mesmo intervalo de IP do café ou local de trabalho do qual você está se conectando. Tente 192.168.42. * :)
Jay _silly_evarlast_ Wren
86

AVISO: O PPTP É UM PROTOCOLO INSEGURO! Não apenas a criptografia foi violada, como também envia sua autenticação em texto não criptografado e é facilmente interceptada. Estima-se que a quantidade de tempo necessária para aplicar força bruta à senha é aproximadamente equivalente ao tempo necessário para aplicar força bruta em uma única chave DES. Considere usar o OpenVPN ou outra arquitetura VPN em vez do PPTP!

Usei este guia para configurar um servidor VPN PPTP no meu servidor Ubuntu 12.04.


Para resumir os pontos principais no link, no entanto:

1: Instale pptpde ufw. iptablespode ser usado no lugar do ufw, mas por uma questão de facilidade, ufwé melhor se você não souber iptables.

sudo apt-get install pptpd ufw

2: Abra as portas necessárias. O guia sugere 22 (SSH) e 1723 para o pptp vpn.

sudo ufw permitir 22
sudo ufw permitir 1723
sudo ufw enable

3: Editar /etc/ppp/pptpd-options. Abra o arquivo com seu editor favorito (o meu é o nano, então o comando para mim é sudo nano /etc/ppp/pptpd-options) e comente essas linhas colocando um #antes delas, se você quiser que isso funcione universalmente em todos os sistemas operacionais:

recusar-pap
recusar-chap
refuse-mschap

Você pode comentar esta linha se desejar desativar a criptografia: require-mppe-128

4: Durante a edição /etc/ppp/pptpd-options, adicione servidores DNS para a VPN. Este exemplo usa servidores OpenDNS:

ms-dns 208.67.222.222
ms-dns 208.67.220.220

5: Editar /etc/pptpd.conf. Abra o arquivo com seu editor favorito (o meu é o nano, então o comando para mim é sudo nano /etc/pptpd.conf). Você precisa adicionar os IPs VPN locais para o sistema, então adicione:

localip 10.99.99.99
remoteip 10.99.99.100-199

Se o seu sistema for um VPS, use o IP público para "localip". Se não estiver e estiver em uma rede local, use o IP da rede do seu computador. Use IPs e intervalos diferentes se esses IPs existirem na sua sub-rede! Se você não conhece seu IP público do seu VPS, localize-o executandodig +short myip.opendns.com @resolver1.opendns.com

6: Editar /etc/ppp/chap-secrets. Abra o arquivo com seu editor favorito (o meu é o nano, então o comando para mim é sudo nano /etc/ppp/chap-secrets) e adicione os dados de autenticação.
O formato para /etc/ppp/chap-secretsé:

[Nome de usuário] [Serviço] [Senha] [Endereço IP permitido]

Um exemplo seria: sampleuser pptpd samplepassword *

7: Reinicie o pptpd. Execute este comando no terminal:sudo /etc/init.d/pptpd restart

8: Editar /etc/sysctl.conf. Abra o arquivo com seu editor favorito (o meu é o nano, então o comando para mim é sudo nano /etc/sysctl.conf). Remova o comentário da seguinte linha (removendo a #no início) em /etc/sysctl.conf: net.ipv4.ip_forward=1
Recarregue a configuração: sudo sysctl -p

9: Esta etapa supõe que você tenha ufw.
Edite /etc/default/ufwe altere a opção DEFAULT_FORWARD_POLICYde DROPparaACCEPT

10: Esta etapa assume que você possui ufw.
Edite /etc/ufw/before.rulese adicione o seguinte no início /etc/ufw/before.rulesou imediatamente antes das *filterregras (recomendado):

# Regras da tabela NAT
* nat

: ACEITAÇÃO PÓS-OPERATÓRIA [0: 0]
# Permitir tráfego de encaminhamento para eth0
-A POSTROUTING -s 10.99.99.0/24 -o eth0 -j MASQUERADE

# Processar as regras da tabela NAT
COMETER, ENTREGAR

Se você possui a versão 3.18 do kernel e mais recente (você pode verificar isso executando uname -r), adicione também as seguintes linhas antes da # drop INVALID packets ...linha:

-A ufw-before-input -p 47 -j ACCEPT

11: Reinicie o firewall, atualize os conjuntos de regras e aplique as regras que adicionamos aos /etc/ufw/*.rulesarquivos: sudo ufw disable && sudo ufw enable

Aviso: Se você tiver outras portas que você precisa abrir, como para HTTPS se o servidor hospedar um site, será necessário adicionar essas portas individualmente à lista de permissões comsudo ufw allow <PORT>

Thomas Ward
fonte
4
Agora o que diabos eu faço: D Eu tenho que trabalhar no servidor, nenhuma idéia de como se conectar a ele lol
Jamie Hutber
11
@ Jamie Há muitos outros documentos e entradas aqui no Ask Ubuntu sobre a conexão com uma VPN, sem mencionar a documentação no Network Manager. Esta pergunta cobre apenas a configuração da VPN e do lado do servidor. NÃO a conexão com ela parte.
Thomas Ward
: D resposta super rápida: Acho que posso ter resolvido, devo ter definido algo incorretamente. Dito isto, o ufw está ativo e permite a maioria das portas. Vou jogar com iptables ver se isso me deixa qualquer maneira
Jamie Hutber
@ Jamie Eu posso lhe dar comandos do iptables para usar quando eu chegar em casa, você prefere o iptables ao ufw.
Thomas Ward
11
O iptables / netfilter é usado com o ufw, o ufw é mais agradável com regras e comandos para os usuários finais.
Thomas Ward
19

Exemplo de VPN PPTP no Ubuntu 12.04

Aqui está um tutorial rápido para configurar um servidor VPN PPTP básico no Ubuntu 12.04.

Instalar pacotes necessários

                          sudo apt-get install ppp pptpd

Configurar intervalos de IP PPTP no servidor

                          sudo nano /etc/pptpd.conf

Adicione as seguintes linhas no final

                          localip 10.89.64.1
                          remoteip 10.89.64.100-150

Isso configura o servidor PPTP para usar o IP 10.89.64.1 enquanto distribui o intervalo de IP 10.89.64.100 a 10.89.64.150 para clientes PPTP. Altere-os conforme desejar, desde que sejam endereços IP privados e não entrem em conflito com os endereços IP já utilizados pelo seu servidor.

Configurar servidores DNS para usar quando os clientes se conectam a este servidor PPTP

                          sudo nano /etc/ppp/pptpd-options

Modificar OU Adicione as seguintes linhas no final

                          ms-dns 8.8.8.8
                          ms-dns 8.8.4.4

Crie um usuário PPTP

                          sudo nano /etc/ppp/chap-secrets

Acrescente uma linha na parte inferior para que seu arquivo se pareça com:

                          # client    server  secret          IP addresses
                          test        pptpd   abcd1234        *

Configurar NAT para conexões PPTP

Sem essa etapa, você poderá se conectar, mas sua conexão não poderá carregar nenhuma conexão da Web deste servidor.

                          sudo nano /etc/rc.local

Adicione o seguinte no canto inferior direito antes da linha "exit 0":

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

Supondo eth0, você pode usar ifconfigpara verificar o nome da rede.

Ative a exclusão de IPv4:

                          sudo nano /etc/sysctl.conf

Remova o comentário da seguinte linha:

                          net.ipv4.ip_forward=1

Em seguida, recarregue a configuração:

                          sudo sysctl -p

Reinicie o seu VPS e tudo deve funcionar perfeitamente de qualquer cliente PPTP.


Configuração do lado do cliente

No Mac, verifique se você adicionou a conexão VPN PPTP. Além disso, você só precisa configurar o endereço do servidor, o nome da conta e a senha nas configurações de autenticação. Aqui não há dor.

No Linux, o NetworkManager adiciona conexões VPN. Verifique se você adicionou a conexão PPTP VPN. E a configuração que eu uso está aqui:

Como depurar e corrigir conexão de cliente PPTP / VPN

insira a descrição da imagem aqui

E para Windows

insira a descrição da imagem aqui

Qasim
fonte
Este método também funciona no Ubuntu 12.04 non-server edition? Qual número de IP o cliente precisa usar para se conectar a esta rede VPN?
Rasoul
Sim, é para a edição não-servidor Além disso, você tem que usar ip do servidor no cliente para conectar a vpn @Rasoul
Qasim
Não funciona, servidor Ubuntu 13.04. Cliente preso procurando DNS.
knutole
@knutole verifique se as regras do seu IPTables estão sendo roteadas corretamente. Verifique se você possui a interface en0 e se não está nomeada outra coisa. Você deve ver um endereço IP público listado.
Nick Woodhams
ok então no seu exemplo qual ip é server ip? 10.89.64.1? Então, no gerenciador de rede Ubuntu, o cliente listaria 10.89.64.1 como o Gateway?
dranxo
9

As outras respostas neste tópico foram apenas respostas parciais no meu caso. Aqui está o que funcionou para mim no Ubuntu 12.04.3

sudo apt-get install pptpd

Anexe o seguinte a /etc/pptpd.conf (o endereço IP não importa, este é apenas o endereço IP da sua interface ppp0).

localip 10.0.0.1
remoteip 10.0.0.100-200

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

ms-dns 8.8.8.8
ms-dns 8.8.4.4

Ativar encaminhamento de IP

sudo vim /etc/sysctl.conf

Remova o comentário desta linha

net.ipv4.ip_forward=1

Salvar alterações

sudo sysctl -p /etc/sysctl.conf

Edite / etc / ppp / chap-secrets, adicione um usuário VPN neste formato:

# Secrets for authentication using CHAP
# client    server  secret          IP addresses
username pptpd supersecretpassword *

Reiniciar PPTP

service pptpd restart

Execute ifconfige encontre sua interface padrão, no meu caso, foi br0 (eu mudei para permitir que máquinas virtuais em minha máquina física compartilhem a interface. A sua provavelmente será en0 )

insira a descrição da imagem aqui

Fazer backup de iptables

iptables-save > ~/iptables.save

Agora faça as alterações no iptables e use a interface padrão, conforme revelado pelo ifconfig.

iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE
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 br0 -j ACCEPT

Para mantê-lo persistente quando o sistema reiniciar;

sudo apt-get install iptables-persistent

Adicionar VPN no computador cliente (Mac)

Preferências do Sistema> Rede> [+]> VPN

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Em seguida, escolha Configurações de autenticação> Senha e preencha sua senha aqui

insira a descrição da imagem aqui

Nick Woodhams
fonte
7

Aqui está um projeto muito interessante que elimina a dor do OpenVPN:

https://github.com/Nyr/openvpn-install

Basta executá-lo e ele instalará o vpn aberto e o configurará. No final, ele exibirá um arquivo client.ovpn que você pode usar para configurar seu cliente. Parece funcionar muito bem.

HappyCoder86
fonte
Vaca sagrada. Isso simplesmente funciona. Eu me pergunto por que ele não tem amplo reconhecimento.
Marcus