Aprenda a criar um servidor de VPNs no Ubuntu 15.04
Uma rede privada virtual (VPN – Virtual Private Network ) garante a segurança das comunicações ponto a ponto, nomeadamente a privacidade, integridade e autenticidade dos dados. Para isso esta tecnologia faz a encriptação dos pacotes, garantindo que estes não sejam lidos por terceiros.
Hoje vamos ensinar como podem criar um servidor de VPNs no Ubuntu 15.04 usando o OpenVPN.
O OpenVPN é um software multi-plataforma que permite a criação de uma VPN entre várias máquinas com sistemas operativos diferentes. Para proceder à instalação e configuração do OpenVPN e OpenSSL (obrigatório para a criação de certificados para o serviço), devem seguir os seguintes passos:
Passo 1) Instalar o Openvpn e Openssl
sudo apt-get install openvpn openssl |
Passo 2) Copiar configuração de exemplo
O OpenVPN traz já uma configuração exemplo para ser usada como base. Vamos copiar essa configuração para /etc/openvpn
cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn |
Passo 3) Modificação do ficheiro de configuração do OpenVPN
Como resultado do passo anterior, passamos a ter em /etc/openvpn o ficheiro server.conf. Vamos editá-lo e incluir/alterar os seguintes parâmetros:
#Para encaminhar todo o trafego do cliente via VPN push "redirect-gateway def1 bypass-dhcp" #Servidores de DNS a serem usados pelo cliente push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4" #Por questões de segurança, use o user e grupo nobody que têm poucas permissões user nobody group nobody |
Passo 4) Cópia da estrutura easy-rsa
Após a instalação, é necessário gerar as chaves para o servidor e client. O openvpn traz já uma estrutura de exemplo, designada de easy-rsa, na qual podemos-nos basear para configurar a nossa VPN. Para isso, vamos usar essa estrutura em /etc/openvpn, copiando-a de /usr/share/easy-rsa.
sudo apt-get install easy-rsa sudo cp -R /usr/share/easy-rsa /etc/openvpn cd /etc/openvpn/easy-rsa/ |
Passo 5) Modificação do ficheiro “vars”
A ferramenta easy-rsa inclui o ficheiro “vars” que podemos editar e mudar alguns parâmetros definidos por omissão e que serão depois úteis na hora de criar os certificados. Para editar o ficheiro basta usar o comando:
nano -w /etc/openvpn/easy-rsa/vars |
Nota: Adaptem os dados ao vosso cenário. Estes parâmetros podem ser posteriormente modificados, aquando da criação dos certificados.
Vamos agora copiar o ficheiro /etc/openvpn/easy-rsa/openssl-1.0.0.cnf para /etc/openvpn/easy-rsa/openssl.cnf para que não haja problemas ao nível do OpenSSL
cp /etc/openvpn/easy-rsa/openssl-1.0.0.cnf /etc/openvpn/easy-rsa/openssl.cnf |
Passo 6) Criação da Autoridade de certificação (CA)
Basicamente basta introduzir os comandos seguinte e depois, de forma interativa, ir confirmando ou alterando as informações solicitadas.
cd /etc/openvpn/easy-rsa source ./vars ./clean-all ./build-ca |
Agora que temos a CA criada vamos criar o próprio certificado para o servidor OpenVPN.
./build-key-server server |
É necessário também gerar a chave Diffie Hellman para a troca inicial segura (entre cliente e servidor) das chaves.
./build-dh cd /etc/openvpn/easy-rsa/keys cp dh1024.pem ca.crt server.crt server.key /etc/openvpn |
Por fim, para autenticar os clientes com base no certificado, é preciso criar um certificado por cada cliente. Para isso basta usar executar os seguintes comandos:
cd /etc/openvpn/easy-rsa ./build-key client |
Configurações de Encaminhamento
De acordo com a configuração que temos no ficheiro server.conf, o endereço 10.8.0.1 vai ser atribuído ao túnel do lado do servidor enquanto os restantes IPs da rede 10.8.0.0 passarão a estar disponíveis para os clientes.
Vamos então criar uma regra NAT no iptables para que todos os pacotes com origem na rede 10.8.0.0/24 sejam encaminhados via eth0
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE sudo apt-get install iptables-persistent Vamos agora <strong>activar o encaminhamento IP</strong> |
nano -w /etc/sysctl.conf net.ipv4.ip_forward = 1 |
E por fim vamos aplicar as configurações anteriores e iniciar o servidor OpenVPN
sysctl -p /etc/init.d/openvpn start |
Se tudo correr bem, podemos ver se o túnel já está criado usando o comando
ifconfig tun0 |
Com as configurações anteriores, criamos com sucesso a parte do servidor. Num próximo tutorial iremos ensinar a configurar um cliente, de forma a podermos estabelecer ligação VPN a partir de qualquer lugar. Estejam atentos, será em breve.
Este artigo tem mais de um ano
É com VPN’s que me consigo ligar a uma rede wifi usando outra?
Caso prático: tenho um jogo que permite lan mode por wifi (pokemon) mas os meus colegas não estão na mesma rede. com isto podemos ficar ligados como se tivéssemos lado a lado?
ou não é esta a finalidade?
Sim com VPN podem até criar uma rede privada p jogarem em LAN, mas teem que configurar os IP’s e um tem que estar todos ligados na mesma rede (router / switch).
De certa forma sim, mas esta não será a solução para ti 🙂
Boa pergunta, tambem gostava de saber se, criando uma VPN numa rede publica(Ex.: rede da universidade) é possivel ter uma rede de partilha de ficheiros entre um pequeno grupo dentre dessa mesma VPN?
Sim mas nota que esta é uma arquitetura de cliente->servidor. O que pretendes é melhor numa arquitetura P2P em que os clientes “falam entre si”. Também pode ser feito com OpenVPN mas existem soluções mais user-friendly e rápidas de configurar se o que pretendes é uma coisa pontual. Soluções do género Hamachi.
Otimo tutorial, Parabens.
Depois de um certo tempo as variaveis KEY dão problemas, e ao criar usuarios aparecem msg de erros, muito reportados em foruns, resolvi isso usando o comando:
root@ServerVPN009: [/etc/openvpn/easy-rsa] :# source /vars
Em relação ao comando de criar usuarios(./build-key client), eu prefiro o ./build-key-pass client
Em relaçao ao uso da VPN para tentar driblar localizaçao para jogos eu digo que funciona SE BEM CONFIGURADO e depende o pouco de como tudo é interligado. Mas não se apeguem apenas a OPENVPN, a tecnologia de TunnelSSH é muito utilizada nesse sentido tambem, este ultimo é muito usadas ate por empresas como serviço de tunnelamento para jogos e que com um pouco de conhecimento todos podem usar gratis.
Para aqueles que citaram uso de VPS, uma solução interessante a ser pesquisada para tunnel para jogos é “tunnel ssh com putty” onde é possivel driblar muitos firewall e ate usar a localizaçao do VPS como origem para muitos serviços. EX, eu tenho um servidor VPN nos EUA, nele esta instalado o serviço de ssh que se for no Debian-Like é openSSH e se for no Red-Hat-Like(Fedora ou CentOS) é SSHD, tendo este serviço configurado e funcionando podemos conectar de qualquer lugar usando o putty, porque todos os VPN tem um ip publico e fixo para acesso do cliente. Depois habilita o ip-forward(mencionado no tutorial), e ai vem a magica, ainda com o putty com o ssh conectado, mexa nas configuração de tunnel do putty e configure o tunnel, onde criará um serviço local na sua maquina com um porta, tudo que se conectar nesta posta será direcionado para dentro do tunnel ssh ate o VPS, driblando firewall no caminho. O navegador é um exemplo de aplicativo que pode ser conectado nesta porta local, usando assim um tipo de http-proxy. Caso use o navegador para isso cuidado ao usar site como o facebook, ele detectará que a conexao estará vindo do VPS e bloqueara seu usuario caso vc nao prove o teste que o facebook faz para usuarios conectando pela primeira vez de outra localidade.
Pesquisem sobre “port forwarding com putty” que sua mente abrira bastante
OBS: no vps é interessante instalar o squid em modo transparente bastando editar no squid.conf
port 3128 transparent
Eu tenho alugado um servidor nos States, onde tenho instalado o openvpn, para jogos, mas a playstation não permite configurar vpn, será possivel com o RPI, ligar-me a vpn e por rede ligar a playstation ao RPI e ter tambem na playstation vpn ?
+1
Kiko, uma vpn permite aceder a redes privadas a partir de um ponto exterior a essa rede.
Parece-me que o que queres é isto: https://secure.logmein.com/PT/products/hamachi/
Instalas isso com os teus colegas e crias uma rede privada entre todos, funciona como se todos estivessem na mesma rede física mesmo estando cada um em sua casa.
Concordo, para o caso dele parece-me mais adequado. OpenVPN para esse tipo de utilização é excessivamente complicado e overkill.
OpenVPN é mais para quem quer aceder à rede de casa/escritório de forma segura e não para andar a fazer redes para jogos ocasionais.
O Hamachi conheço mas penso que agora a versão gratuita estava ou tem os dias contados.
o OpenVPN parece-me bem pois permite multiplataforma.
a ideia é ter um serviço em que o jogar seja também em dispositivos móveis.
Até porque eu já não jogo à anos, por motivos profissionais e pessoais, mas os dispositivos móveis quando existem jogos em que para se jogar 2 jogadores tem ser na mesma rede wifi ao ler isto despertou interesse e fez-me pensar 🙂
Bom tutorial.
+Respect
No meu setup tenho ainda mais uma layer de segurança que é uma chave estática que tem de ser introduzida no servidor e no cliente, ao fim ao cabo a fazer de “HMAC Firewall”.
cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn
cp: impossível obter estado de “/usr/share/doc/openvpn-*/sample/sample-config-files/server.conf”: Arquivo ou diretório não encontrado
achado em /usr/share/doc/openvpn/examples/sample-config-files/server.conf
não estou conseguindo achar easy-rsa 🙁 algum pode me ajudar?
Tenho o mesmo problema!!!
Bom dia Rodrigo,
Certamente não tens o easy-rsa instalado.
sudo apt-get install easy-rsa
Depois dá feedback.
Já agora, reparei que entre versões do Ubuntu mudam alguns pormenores. Estive a testar com o Ubuntu 14.10 e o server.conf está compactado no ficheiro /user/share/doc/openvpn/examples/sample-config-files/server.conf.gz
Descompacta gunzip /user/share/doc/openvpn/examples/sample-config-files/server.conf.gz
e passa o ficheiro server.conf para a estrutura.
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn
VLW 🙂 gente funciono direitinho, desculpa a demora para responder.
Boa tarde,
Após seguir todas as indicações e sem identificar nenhum erro, no final quando digito: ifconfig tun0 dá a seguinte msg de erro: tun0: error fetching interface information: Device not found
Correndo o ifconfig apenas tenho a eth0, alguma sugestão?
obrigado.
Tenho o mesmo problema. 🙁
Alguem pode ajudar?
Estou com o mesmo problema , conseguiram resolver ???
Fiz como manda o pplware e não consegui fazer rodar a VPN.
Segui os passos neste link : https://www.digitalocean.com/community/tutorials/how-to-set-up-an-openvpn-server-on-ubuntu-14-04
E agora sim tenho tudo a rodar.
Neste link explica o cliente para Windows e Linux.
Estou a utilizar o Ubuntu 14.04 LTS ultima versão de Novembro de 2015
Quero agradecer ao pplware tudo o que tem feito para o Linux, vosso site *****
Parabéns a toda a equipa.
Estou com um problema aqui: quando escrevo push “redirect-gateway def1 bypass-dhcp” aparece push: MAILHOST not set
Não percebo quase nada do assunto e já pesquisei muito mas todos os sites eram muito complicados. Por favor, ajudem-me!!!
Olá Pedro, em pesquisa na internet achei seu artigo de VPN, configurando o servidor.
No final vc cita que vai criar artigo sobre a configuração do cliente da VPN, não estou encontrando o mesmo…
Poderia colar o link para o mesmo?
Abraço.
Olá eu fiz a instalação do openVpn server no meu Ubuntu, fiz conexão e funcionou perfeitamente, eu posso usar meu usuário admin em vários dispositivos ? Ou só um conexão para um usuário apenas?
como instalar e configurar uma arquitetura p2p em vps ou dedicado linux? alguem teria alguma base para me ajudar?