Tutorial VPN L2TP sobre IPSec com o SoftEther
Para quem tem um Raspberry Pi (aproveite a promoção do Pplware - ver aqui) lá por casa, certamente já teve a necessidade de se ligar a ele a partir do exterior ou então aceder a um outro serviço que apenas está disponível quando estamos ligados à rede local.
A melhor solução e a mais segura é estabelecer um túnel VPN e nesse sentido hoje ensinamos como instalar um servidor VPN L2TP sobre IPSec num Raspberry Pi 2 usando o SoftEther VPN.
O SoftEther VPN é um software relativamente recente e surpreendeu-nos muito pela positiva. Apesar de ser gratuito e open-source, é de nível profissional e de fácil configuração comparado com outras soluções VPN.
É extremamente completo, com muitas funcionalidades avançadas, como por exemplo integração com servidores RADIUS, routers CISCO, criação de Virtual Hubs (separação de ligações para segurança), configuração de permissões por utilizador, bridging, clustering, etc. Além disso dispõe de um serviço de DNS dinâmico, não sendo assim necessário configurar um destes serviços à parte, caso o vosso pacote de internet não ofereça um IP estático.
Para além de L2TP sobre IPSec, suporta também outros tipos de VPNs como OpenVPN, SSTP etc. Optamos por L2TP sobre IPSec por ser considerada uma solução bastante segura, caso seja bem configurada e por a maior parte dos sistemas operativos (Windows, MAC OSX, IOS, Android…) terem suporte nativo a este tipo de VPNs, não sendo necessário instalar software adicional para se realizar a ligação.
Configuração no Raspberry Pi 2
Para obterem e compilar o SoftEther basta que executem os seguintes comandos num terminal:
wget http://www.softether-download.com/files/softether/v4.15-9546-beta-2015.04.05-tree/Linux/SoftEther_VPN_Server/32bit_-_ARM_EABI/softether-vpnserver-v4.15-9546-beta-2015.04.05-linux-arm_eabi-32bit.tar.gz tar zxvf softether-vpnserver-v4.15-9546-beta-2015.04.05-linux-arm_eabi-32bit.tar.gz cd vpnserver sudo make |
Em seguida vamos mover o directório de instalação, configurar as permissões correctas, fazer o download e activar um script para inicialização automática no boot e iniciar o serviço.
cd .. sudo mv vpnserver /usr/local cd /usr/local/vpnserver sudo chmod 600 * sudo chmod 700 vpncmd vpnserver sudo sed -i 's/AcceptOnlyTls false/AcceptOnlyTls true/g' /usr/local/vpnserver/vpn_server.config sudo wget http://pipplware.pplware.pt/pipplware/dists/stable/main/misc/vpnserver -O /etc/init.d/vpnserver sudo chmod 755 /etc/init.d/vpnserver sudo update-rc.d vpnserver defaults sudo /etc/init.d/vpnserver start sudo /usr/local/vpnserver/vpncmd |
O servidor é também configurado para aceitar apenas TLS devido ao POODLE e outras vulnerabilidades. O ultimo comando é para definir uma password de administração do servidor, para posteriormente configurarem remotamente através do programa SoftEther VPN Server Manager for Windows.
Pressionar 1 seguido de Enter 3 vezes e executar:
ServerPasswordSet |
Insiram uma password à vossa escolha. Se tiverem intenção de gerirem o(s) servidor(es) através da internet (não incluído no tutorial) escolham uma password forte, por questões óbvias de segurança. No fim escrevam o comando “exit” seguido de Enter. E está completa a configuração no Raspberry Pi. Vamos agora configurar o servidor usando o SoftEther VPN Server Manager no Windows.
Configuração da VPN usando o SoftEther VPN Server Manager for Windows
Numa máquina com o Windows fazer o download da ultima versão do SoftEther VPN Server Manager for Windows aqui e instalar. Durante o processo, seleccionem “Admin Tools Only”.
Após a instalação, iniciar o programa e clicar em “New Setting”. Preencher os campos:
- Hostname: IP do servidor, neste caso do RPi. Tanto pode ser um IP público ou privado dependendo se o servidor está na rede local ou numa rede externa (neste caso é local)
- Password: A password definida no ultimo passo da configuração do Raspberry.
Clicar em OK e depois duplo-click na nova entrada criada. No próximo ecrã, seleccionar apenas “Remote Access VPN Server” e “Next”. Escrever um “Virtual Hub Name” à escolha e fazer OK.
No próximo ecrã, é-nos apresentado o serviço DDNS gratuito do SoftEther VPN:
Alterem o Dynamic DNS Hostname se desejarem, apontem este endereço e façam Exit. Será este o endereço usado para se fazer a ligação depois nos clientes. Se já tiverem um DDNS configurado que pretendam usar em alternativa, simplesmente ignorem este passo e façam Exit.
No próximo ecrã seleccionem a primeira opção, L2TP over IPSec:
Em baixo devem escolher uma chave partilhada (Pre-Shared Key) com uma password forte mas de preferência com menos de 9 caracteres senão clientes Android podem ter problemas. Todos os clientes terão de saber esta chave para se poderem conectar, para além de uma chave individual específica de cada utilizador, que será configurada mais tarde.
Fazer OK e no próximo ecrã seleccionar a opção “Disable VPN Azure” uma vez que não temos interesse neste serviço.
De seguida iremos configurar cada utilizador. Selecionar “Create Users” e configurar como desejado:
Neste caso, para manter as coisas simples, seleccionamos apenas “Password Authentication” e definimos uma password para o utilizador em questão. Relembramos que devem definir uma password forte. Para máxima segurança podem definir uma data de expiração da conta, definir politicas de segurança para o utilizador em questão e usar um certificado de autenticação ou via RADIUS em vez de password. Estas opções não são cobertas neste tutorial.
Fazer OK para terminar. Caso desejem, podem adicionar já mais utilizadores, para isso façam “New” no próximo ecrã, caso contrário façam “Exit”.
Após saírem do menu de configuração dos utilizadores, em “Step 3. Set Local Bridge” devem seleccionar a interface de ligação á rede do servidor, no nosso caso, a interface Ethernet (eth0) do Raspberry Pi. “Close” em seguida.
O próximo ecrã é o painel principal de controlo do nosso servidor VPN:
Aqui podemos controlar tudo relativamente ao servidor VPN, como hubs virtuais, ver o status do servidor, conexões, encriptação etc. Mais uma vez, para manter as coisas simples não vamos falar sobre todas as opções, apenas realizar as configurações finais:
Em “Management of Listeners”, eliminar todas as portas, excepto a 443.
Clicar em “OpenVPN / MS-SSTP Setting” , desmarcar as duas caixas e fazer OK.
Clicar em “Encryption and Network”. Em “Encryption Algorithm Name”, selecionar “AES256-SHA” ou outra, conforme desejarem. Quanto mais para baixo, mais forte é a encriptação, mas exige maior capacidade de processamento. Em “VPN over ICMP / DNS Settings”, desmarcar as duas caixas e fazer OK. Ok novamente para voltar ao painel da imagem em cima.
Por fim fazer Exit e está terminada a configuração da VPN.
Configuração do router
O último passo a fazer é configurar o vosso router para aceitar e reencaminhar as ligações VPN para o vosso Raspberry/servidor. Esta parte depende bastante do router do vosso ISP, pelo que terão de adaptar ao vosso caso. Neste tutorial é usado um Thomson TG784n, usado por 2 grandes operadoras nacionais:
Escrever o endereço de IP do vosso router num browser e fazer login:
Ir a Ferramentas -> Partilha de Jogos e Aplicações -> Criar novo jogo ou aplicação e configurar conforme a imagem em cima. O protocolo a usar é o UDP e as portas a reencaminhar são a 500 (ISAKMP) e 4500 (IPSec NAT Traversal). No fim clicar em Aplicar.
De seguida ir a Ferramentas -> Partilha de Jogos e Aplicações -> Associar jogo ou aplicação a um equipamento de rede local. Seleccionar a aplicação criada em cima (SoftEther), atribuir ao servidor (Raspberry)e clicar em Adicionar:
Por fim carregar em Aplicar. E está tudo terminado!
Nota: Devem apenas abrir no router, as portas indicadas no tutorial para o exterior para não comprometer a segurança. Aconselhamos também o uso de uma firewall para além da do router.
Agora precisam apenas de configurar os dispositivos que pretendem ligar ao vosso servidor VPN. Como referimos no início do tutorial, quase todos os aparelhos actuais são compatíveis com este tipo de servidor VPN, não precisando de instalar qualquer aplicação adicional para se conectarem, basta usar os clientes nativos do sistema operativo. Se configuraram conforme o indicado precisarão dos seguintes dados:
- Endereço do servidor (IP estático ou o DDNS fornecido pelo SoftEther ou outro DDNS pré-configurado)
- Pre Shared Key
- Utilizador
- Password
Esperemos que tenham gostado de mais um tutorial e que vos possa ser útil.
Tutorial VPN L2TP sobre IPSec com o SoftEther
Por Diogo Santos para o Pplware
Homepage: SoftEther
Este artigo tem mais de um ano
“Optamos por L2TP sobre IPSec por ser considerada uma solução bastante segura, caso seja bem configurada e por a maior parte dos sistemas operativos (Windows, MAC OSX, IOS, Android…) terem suporte nativo a este tipo de VPNs, não sendo necessário instalar software adicional para se realizar a ligação.”
Se o windows suporta L2TP sobre IPSec sem outro software, porque é que é preciso instalar o SoftEther VPN Server Manager?
E se o servidor está no Pi, porque é que o serviço de dynamic DNS é configurado no windows e como é que vai estar sempre atualizado quando o IP muda se o PC do windows não estiver na mesma rede?
É verdade que o L2TP é suportado no Windows. Mas com o SoftEther VPN Server Manager, que é gratuito, tens outra flexibilidade.
PP
O SoftEther VPN Server Manager é o software de gestão/configuração dos servidores. “Só” para isso, não é para estabelecer a ligação. É simplesmente para facilitar a gestão, a partir de um único software, podes controlar vários servidores em máquinas diferentes. Uma pessoa se quiser pode sempre configurar a VPN directamente no servidor, é igual, a única diferença é que não é tão simples, tem de se fazer tudo por terminal.
Lá está, o serviço de DDNS está no servidor (neste caso o Pi), o SoftEther VPN Server Manager mais uma vez, é apenas para o configurar.
Ok, faz sentido. Então e depois no windows como é que se faz a ligação ao servidor?
Vê o seguinte link:
https://www.vpnvip.com/setup-l2tp-vpn-in-windows-7.html
Não percebi bem este tutorial.
Um servidor VPN, para depois aceder pelo 192.168.2.2!!! na mesma rede.
Não seria mais interessante, uma tutorial em que, tivesse uma conta no site openvpn.net, e o RPI aceder por wireless ao nosso router, e o que estivesse ligado por rj ao rpi (pc por exemplo) estivesse encriptado.
Hostname: IP do servidor, neste caso do RPi. Tanto pode ser um IP público ou privado dependendo se o servidor está na rede local ou numa rede externa (neste caso é local)
Pois não percebeste… Vê lá o comentário que fiz em cima a ver se já percebes 😉
Ora ai está um bom tutorial. 🙂
Vou meter a trabbbbbbalhar no meu pi2 com OSMC
Olá! Bom tutorial… Que tal um outro acerca de como configurar um cliente android? Acho que seria útil… Continuação do bom trabalho…
“certamente já teve a necessidade de se ligar a ele a partir do exterior ou então aceder a um outro serviço que apenas está disponível quando estamos ligados à rede local.”
Sim, já tive, e o tutorial esta muito bom
Mas acho que um tutorial, a RPI ligado ao router, e como cliente VPN ligado a um servidor exterior, e tudo que se ligasse ao RPI ficasse também na VPN, era muito mais interessate.
Muito bom! Muito bem explicado, dei uma vista de olhos assim por cima e quando tiver tempo farei umas coisas engraçadas com isto! Obrigado pelo guia!
Antonino, isso que você disse não é possível fazer. Pelo menos sendo um cliente VPN, quer seja o RPi ou outra coisa qualquer. Vai contra a relação servidor/cliente e seria uma falha de segurança grave.
O que dá para fazer, se, e só se tiver controlo do servidor VPN ao qual se quer conectar, é configurar o RPi (no seu caso) também como servidor VPN e estabelecer uma ligação entre ambos. Chama-se a isso “Bridging” ou “Site-to-Site VPN” etc.
Dá para fazer isso também com este software. Metade do trabalho está já feito neste tutorial 😉
Para mais informação consulte isto:
https://www.softether.org/4-docs/2-howto/1.VPN_for_On-premise/3.LAN_to_LAN_Bridge_VPN
A grande vantagem deste software é sem dúvida o GUI manager. Por mais que se achem os maiores lá do vosso bairro, a computação evoluiu para “janelas” por algum motivo, e o pessoal da softether, teve a inteligência de perceber isso. Existem software brilhantes para Linux, que só não se tornam economicamente viáveis porque quem os desenvolve não percebe, que eu, utilizador, até sei editar os ficheiros de configuração mas que é tão mais chato e maçador quanto mais completa for a solução. Deviam ter sempre alguém na equipara a fazer o GUI. E se for um manager remoto, de forma a não ter que sobrecarregar o servidor, melhor ainda.
Eu precisava era de um manual para , VPN Gateway, para o RPI, alguem tem ?
já tem um servidor openvpn, e agora precisava de me ligar ao servidor com o rpi, e se ligasse o pc por cabo ao rpi, tambem estivesse ligado ao vpn
tambem precisava de uma cena assim
Boas!
Expliquem como se faz para usar o Rpi como gateway para VPN exterior.
Exemplo: usar vários dispositivos em casa cujo trafego passasse pelo Rpi. E o Rpi ser usado com uma conta configurada p/ vpnarea ou nordvpn.
E também a possibilidade de nos ligarmos em qualquer ponto de acesso wifi gratuito e o trafego passar pelo Rpi em casa de modo a ser usada a mesma conta vpnarea ou nordvpn (como alternativa ‘a ligação directa via software cliente no android)
era mesmo isso, pessoal do pplware please
Então mas… Eu não chamaria a isto propriamente simples.
Melhor para mim é o Access Server da OpenVPN que se instala em menos de nada e fica logo tudo configurado.
como assim ?
Eu conheço o Access Server do OpenVPN, é do género. Mas não tem tantas funcionalidades (não dá para gerir mais do que um servidor) e não suporta outros tipos de VPN, só o openvpn.
Não acho que o SoftEther seja mais complicado que o OpenVPN, pelo contrário, é só fazer o que está neste tutorial.
Isto tambem e possivel fazer num computador normal em linux? Algum destes “passos” se altera por exemplo se fizermos num pc com ubuntu ou é mesmo preciso ser um Raspberry?
O servidor corre em quase qualquer máquina e qualquer sistema operativo. Para instalar o servidor no Ubuntu tem apenas de substituir as duas primeiras linhas do tutorial, pelo pacote de instalação correcto para a arquitectura. Fazer download aqui:
http://www.softether-download.com/en.aspx?product=softether
E mais informação aqui:
https://www.softether.org/4-docs/1-manual/7._Installing_SoftEther_VPN_Server/7.3_Install_on_Linux_and_Initial_Configurations
O software de gestão (SoftEther VPN Server Manager) é que só corre em Windows mas se não tiver uma máquina com Windows pode sempre configurar directamente no Ubuntu usando a consola de administração num terminal.
Obrigado por este tutorial.
Não consigo configurar pois da-me erro na linha: sudo mv vpnserver /usr/local. (
mv: cannot move `vpnserver’ to `/usr/local/vpnserver’: Directory not empty).
Como posso resolver? Estou com uma vpn pptp mas também tenho o problema de algumas páginas não abrirem. Já inseri linhas de código colocado no comentário do artigo pptp pi mas não funciona.
Obrigado por este tutorial.
Não consigo configurar pois da-me erro na linha: sudo mv vpnserver /usr/local. (
mv: cannot move `vpnserver’ to `/usr/local/vpnserver’: Directory not empty).
Como posso resolver? Estou com uma vpn pptp mas também tenho o problema de algumas páginas não abrirem. Já inseri linhas de código colocado no comentário do artigo pptp pi mas não funciona.
Boas,
Bom tutorial, facil de seguir, e implementar.
Gostava de saber, depois de ter instalado o softether, como é que posso fazer a atualização do mesmo.
Tenho de voltar a compilar a versão mais recente? Isso não vai apagar a minha configuração atual?
Obrigado
Viva depois de inicializar uma ligação de VPN perco conectividade ICMP e SSH, contudo telnet e http(apenas testei estes) aparentemente estão operacionais. Conhecem este sintoma? Obrigado
Boa tarde
Consegui realizar todo o tutorial contudo a velocidade da VPN é muito lenta ou seja :
Com softether consigo apenas 0.20 Download e 0.15 upload … se estabelecer a ligação na mesma rede por uma vpn do windows 7 a velocidade sobe para 7.5 e 2.5
Alguém me pode dar ajuda onde poderá estar o erro na minha configuração do softether?
A não utilização da VPn windows7 é que a mesma apenas me permite um utilizador
Obrigado
ligado na VPN nao consigo aceder aos shares que tenho configurados no rasp e que normalmente acedo na rede local.
Estou farto de procurar e nao acho nada que fale disto.
COnsigo aceder aos shares de todas as outras maquinas da lan excepto os shares do rasp que tambem e o servidor da VPN.
ajudinha?
Obrigado.
Boas, tive de “rê-instalar” o raspberry novamente, fiz as configurações todas, incluindo o DNS, agora estou com 2 endereços a apontar para o mesmo sitio… alguém me pode dizer como posso eliminar um dos endereços…
Bom dia, obtive o seguinte erro:
“sudo: make: command not found”
Como posso resolver este erro?
Estou a correr os comandos em OSMC no RPI2
experimenta primeiro o seguinte comando
sudo apt-get install make
sudo apt-get install make
Tutorial VPN L2TP sobre IPSec com o SoftEther em OSMC
sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install make
sudo apt-get install gcc
apt-get install libc-dev
wget http://www.softether-download.com/files/softether/v4.15-9546-beta-2015.04.05-tree/Linux/SoftEther_VPN_Server/32bit_-_ARM_EABI/softether-vpnserver-v4.15-9546-beta-2015.04.05-linux-arm_eabi-32bit.tar.gz
tar zxvf softether-vpnserver-v4.15-9546-beta-2015.04.05-linux-arm_eabi-32bit.tar.gz
cd vpnserver
sudo make
Iniciar o servidor:
./vpnserver start
./vpncmd
E configura-lo com a ajuda do tutorial do pplware
——————————————————————————–
Para inicialização automática no boot efetuar o seguinte:
./vpnserver stop
cd ..
sudo mv vpnserver /usr/bin
cd /usr/bin/vpnserver
sudo chmod 600 *
sudo chmod 700 vpncmd vpnserver
sudo sed -i ‘s/AcceptOnlyTls false/AcceptOnlyTls true/g’ /usr/bin/vpnserver/vpn_server.config
sudo wget http://pipplware.pplware.pt/pipplware/dists/stable/main/misc/vpnserver -O /etc/init.d/vpnserver
sudo chmod 755 /etc/init.d/vpnserver
sudo update-rc.d vpnserver defaults
nano /etc/init.d/vpnserver
Na décima linha alterar:
DAEMON=/usr/local/vpnserver/vpnserver para DAEMON=/usr/bin/vpnserver/vpnserver
O ficheiro deverá ficar assim:
#!/bin/sh -e
### BEGIN INIT INFO
# Provides: vpnserver
# Required-Start: $local_fs $remote_fs $network
# Required-Stop: $local_fs $remote_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start or stop SoftEther VPN.
### END INIT INFO
DAEMON=/usr/bin/vpnserver/vpnserver
LOCK=/var/lock/vpnserver
test -x $DAEMON || exit 0
case “$1” in
start)
$DAEMON start
touch $LOCK
;;
stop)
$DAEMON stop
rm $LOCK
;;
restart)
$DAEMON stop
sleep 3
$DAEMON start
;;
*)
echo “Usage: $0 {start|stop|restart}”
exit 1
esac
exit 0
Para gravar o ficheiro ctrl+O ctrl+X
sudo /etc/init.d/vpnserver start
sudo /usr/bin/vpnserver/vpncmd
Continuar com o tutorial do pplware…
Desde já parabéns pelo Tutorial. Muito bem explicado.
Tenho uma questão… alguém conseguiu pingar o Raspberry quando conectados à VPN?
Eu consigo pingar todos os equipamentos que se encontram na rede da VPN (desde TVBox até iPads, iPhones, etc…) mas quando tento pingar o Raspberry não consigo. O objectivo seria ligar-me à VPN e depois ligar-me ao Raspberry via ssh.
Já alguém teve o mesmo problema? Conseguiram ultrapassar?
Também tenho o mesmo problema, a raspberry que faz o servidor de vpn fica sem gestao através da VPN. A solução poderá passar por abrir a porta udp 22 do seu router para a raspberry e tentar aceder remotamente através do seu ip plublico/ip dinâmico. Nao testei mas talvez dê. No meu caso tenho uma raspberry com o osmc e com o servidor de vpn e tenho uma outra com mais serviços que que acedo remotamente atraves da vpn. Abraço
O problema de não conseguirem pingar o Raspberry Pi tem a ver com a limitação conhecida do kernel linux (pelomenos é o que dizem https://www.softether.org/4-docs/1-manual/3._SoftEther_VPN_Server_Manual/3.6_Local_Bridges)
Existe uma alternativa tipo fita-cola, adicionar um device tap no SoftEther e fazer uma bridge entre o eth0 e o tap (eth0 br0 tap_soft).
Dar um ip ao br0 e rezar para que no final tudo funcione.
Já ando à dias a debater com este problema, porque os tutoriais que encontro são para versões anteriores ao Raspbian Jessie, outro problema é que consegui uma vez por a funcionar mas o raspberry fica sem acesso a net… enfim
Rui,
já conseguiu arranjar solução para isto?
obrigado
Olá Tiago
Por acaso sim, neste momento tenho tudo a funcionar na perfeição, fiz um tutorial que disponibilizei aqui http://www.vpnusers.com/viewtopic.php?f=7&t=6824
Espero que ajude
Seguindo os passos quando chego ao wget no pipplware tenho um 404 not found no terminal. Alguma alternativa?
O link ainda está disponível, faz lá a linha do wget outra vez que funciona.
Diogo tentei novamente. A resposta que obtenho HTTP request sent, awaiting response… 404 Not Found
2017-01-31 10:35:55 ERROR 404: Not Found.
Provavelmente não tens internet no Raspberry, ou não meteste o comando tal como está:
http://imgur.com/a/7F4cg
Link continua indisponível, consegues reparar ou mudar endereço?
boa tarde Diogo, por aqui também não está a dar link indesponivel está a dar um 404 também. era possivel por o link online ou arranjar outro endereço?