31.01.2025

Configuração do OpenVPN no Ubuntu

O OpenVPN é uma implementação aberta de uma das tecnologias de VPN, projetada para organizar redes privadas virtuais seguras entre redes locais geograficamente remotas, bem como entre clientes individuais. A segurança do túnel é fornecida pela criptografia usando o OpenSSL.

Como o OpenVPN funciona?

Após a conclusão da configuração do servidor e de seu lançamento, ele entrará no modo de espera para receber e redirecionar conexões SSL seguras externas para o adaptador de rede virtual (tun/tap).

Opcionalmente, o roteamento do servidor pode ser configurado de modo que o tráfego de Internet do cliente passe pelo servidor e se torne tráfego do servidor. Nesse caso, o OpenVPN executará o tráfego de proxy.

O que é necessário do sistema operacional?

Antes de instalar o OpenVPN, você precisa se certificar de que os parâmetros básicos estejam corretos.

  1. O servidor tem pelo menos um endereço IP estático "branco". Esses. O servidor deve estar acessível pela Internet. Se o endereço for dinâmico, mas o servidor permanecer acessível a partir da rede global, use os serviços DynDNS.
  2. Permissão para baixar e instalar pacotes de repositórios oficiais. Para verificar, execute cat /tc/apt/sources.list. As linhas com instruções dos repositórios devem ser descomentadas (não deve haver nenhum sinal "#" no início da linha).
  3. Os parâmetros de rede devem ser especificados corretamente - nome do host, parâmetros dos servidores DNS.

Como chegar à instalação.

Todas as etapas de instalação serão executadas pelo usuário root.

  1. Atualização das informações do repositório:
apt-get update
  1. Instalar as atualizações atuais do sistema e os programas instalados:
apt-get upgrade
  1. Instalar o OpenVPN:
apt-get install openvpn

Importante. Nos repositórios básicos, a versão mais recente de um pacote geralmente está ausente. Os desenvolvedores do OpenVPN mantêm seu repositório, como configurá-lo pode ser encontrado no site oficial do.

  1. Instale o pacote easy-rsa da mesma forma:
apt-get install easy-rsa

Passos pós-instalação

Colocamos os scripts do easy-rsa:

cd /etc/openvpn/ && make-cadir easy-rsa

Preparamos as chaves públicas (PKI - Public Key Infrastructure):

  1. Vá para o diretório / etc / openvpn / easy-rsa:
cd /etc/openvpn/easy-rsa
  1. Criando um link simbólico para o arquivo de configuração openssl:
ln -s openssl-1.0.0.cnf openssl.cnf
  1. Inicializamos o script vars:
source ./vars

O sistema informará: OBSERVAÇÃO: Se você executar ./clean-all, estarei fazendo um rm -rf em / etc / openvpn / easy-rsa / keys

  1. Executamos o ./clean-all
  2. Para criar uma autoridade de certificação, execute o script:
./build-ca

No decorrer de seu trabalho, o programa fará várias perguntas. Elas devem ser respondidas em letras latinas. Se você não preencher algum campo, o programa substituirá os valores padrão, geralmente indicados entre parênteses.

 

Criar a chave do servidor

Para criar a chave do servidor, execute o comando:

./build-key-server server

Deve-se observar que o processo é semelhante à geração de um certificado de uma autoridade de certificação; no entanto, antes de assinar o certificado, o programa fará duas perguntas de esclarecimento. Se tudo estiver correto, responda "y".

Geração de chaves de cliente

Da mesma forma que a geração de chaves de servidor, as chaves de cliente também são criadas:

./build-key client1

Deve-se observar que o client1.key criado não tem uma senha nem proteção criptográfica. Isso pode fazer com que qualquer usuário que tenha tomado posse do arquivo possa tentar se conectar ao servidor. Se essa ameaça existir, é melhor gerar chaves com outro script:

./build-key-pass client2

O script solicitará uma frase secreta logo no início. Além disso, o processo não é diferente da geração de chaves do servidor e de um cliente simples.

Lembre-se de que os nomes das chaves devem ser exclusivos. Um usuário - uma chave com um nome exclusivo.

Acontece que, no decorrer da operação do servidor, após algum tempo, é necessário criar um ou mais certificados. Para fazer isso, você precisará reinicializar o script vars e só então iniciar o processo de geração de chaves:

cd /etc/openvpn/easy-rsa
source ./vars

SUPORTE DO LOCAL DO BLOCO DE CÓDIGO_14

Geração de chaves Diffie-Hellman

Graças ao protocolo Diffie-Hellman, duas ou mais partes podem receber uma chave secreta, o que permitirá a criação de um canal de comunicação seguro. As chaves são geradas pelo comando:

./build-dh

O resultado será algo parecido com isto.

Quando o programa for concluído, o arquivo dh2048.pem aparecerá no diretório /etc/openvpn/easy-rsa/keys/

Movendo certificados e chaves

Servidor

Chaves e certificados criados. É hora de distribuí-los aos usuários e copiar as chaves do servidor para os diretórios apropriados no servidor.

  1. Acesse o diretório com as chaves:
cd /etc/openvpn/easy-rsa/keys
  1. Copiamos apenas os arquivos necessários para o servidor:
cp ca.crt ca.key dh2048.pem server.crt server.key /etc/openvpn

É importante entender que os arquivos acima são a base da operação e da segurança do servidor VPN. A perda ou a substituição desses arquivos pode ter consequências extremamente negativas. É importante armazená-los em um local seguro e não transmiti-los por canais de comunicação abertos.

Clientes

O cliente precisará de apenas 3 arquivos ca.crt, client1.crt, client1.key. Cada cliente precisa fornecer apenas suas chaves. Esses arquivos podem ser colocados no diretório / etc / openvpn no computador do cliente se ele estiver executando um sistema operacional semelhante ao Linux.

No Windows, eles devem ser colocados no diretório do usuário.

Configuração do servidor e do cliente

Servidor

A maioria dos programas instalados no Linux tem os chamados arquivos de amostra. Esses arquivos contêm exemplos de configuração e explicações sobre eles. O OpenVPN não foi exceção. Descompacte o arquivo de configuração do servidor no diretório / etc / openvpn:

gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.conf

O servidor está pronto para trabalhar com o arquivo recebido. Ele está configurado com a possibilidade de tunelamento, mas não pode fazer proxy, ou seja, enviar o tráfego do cliente em seu nome. Corrija isso.

Primeiro, verifique quais arquivos estão no diretório / etc / openvpn:

ls /etc/openvpn

Abra o arquivo de configuração:

nano /etc/openvpn/server.conf

E verificamos a conformidade dos arquivos prescritos na configuração com os arquivos no diretório. Linhas interessantes após " Certificado raiz SSL/TLS (ca), certificado (cert) e chave privada (key)."

Se os nomes forem diferentes dos existentes, as correções necessárias deverão ser feitas. Saia do editor pressionando Ctrl + X.

Iniciamos o servidor:

/etc/init.d/openvpn start

Verificar o resultado do lançamento:

/etc/init.d/openvpn status

Configurações do cliente.

Supõe-se que o pacote OpenVPN já esteja instalado no lado do cliente.

  1. Copie o arquivo de configurações do cliente para o diretório inicial do usuário:
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /root
  1. Copie as chaves geradas - client1.key, client1.crt, ca.crt:
cd /etc/openvpn/easy-rsa/keys
cp client1.key client1.crt ca.crt /root
  1. Editar o arquivo de configuração do cliente:
nano /root/client.conf
  1. Encontramos as linhas comentadas "# O nome do host/IP e a porta do servidor". Para o parâmetro remoto, altere my-server-1 para o endereço IP do servidor ou seu nome de domínio.
  2. No mesmo arquivo, abaixo, encontramos o bloco "# SSL / TLS parms.". Edição de nomes de chaves.
  3. Saímos da edição com a combinação Ctrl + X. Respondemos "Y" à pergunta sobre como salvar as alterações. O nome do arquivo é mantido inalterado.
  4. Transfira os arquivos client1.key, client1.crt, ca.crt e client.conf para o computador cliente a partir do qual será feita a conexão com o servidor OpenVPN.

Importante! Algumas implementações de cliente do OpenVPN só funcionam com arquivos * .ovpn. Nesses casos, basta alterar a extensão do arquivo (renomear) de client.conf para client.ovpn.

  1. Nós nos conectamos ao servidor com o comando:
openvpn openvpn.conf

Deve-se observar que o proxy ainda não está configurado. Ao mesmo tempo, quando a máquina cliente está conectada ao servidor OpenVPN, o acesso à Internet é encerrado. Isso ocorre porque o adaptador TUN criado e, no lugar dele, o próprio servidor, é o gateway padrão.

Configuração do roteamento.

  1. No servidor, edite o arquivo server.conf:
nano /etc/openvpn/server.conf
  1. Encontramos a seguinte linha no arquivo e excluímos o símbolo ";" na frente dela, descomentando-a:
push "redirect-gateway def1 bypass-dhcp"
  1. Salve e feche o editor.
  2. Editando o arquivo /etc/sysctl:
nano /etc/sysctl.conf
  1. No final do arquivo, adicione a seguinte linha:
net.ipv4.ip_forward=1

Isso permitirá que o sistema encaminhe o tráfego entre as interfaces, mas as alterações só terão efeito após uma reinicialização. Salve o arquivo e feche o editor.

  1. Permitir o encaminhamento de pacotes sem reiniciar o servidor:
echo 1 > /proc/sys/net/ipv4/ip_forward
  1. Configurar o NAT no iptables. Digitamos os comandos um a um:
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT
iptables -A FORWARD -j REJECT

__TITULAR DO LUGAR DO BLOCO DE CÓDIGO_36__

__TITULAR DO LUGAR DO BLOCO DE CÓDIGO_37__

__TITULAR DO LUGAR DO BLOCO DE CÓDIGO_38__

__TITULAR DO LUGAR DO BLOCO DE CÓDIGO_39__

__TITULAR DO LUGAR DO BLOCO DE CÓDIGO_40__

Você também pode simplesmente inseri-los no arquivo /etc/rc.local até a linha "exit 0" ou configurar o firewall.

O servidor está pronto para ser usado. No entanto, a tarefa é fazer proxy de todo o tráfego e, portanto, é necessário configurar o encaminhamento de consultas de DNS. Personalizar.

  1. Instalar o dnsmasq

Se a instalação for realizada em um sistema operacional Ubuntu:

apt-get install dnsmasq

Embora na maioria das versões modernas do sistema operacional Ubuntu o dnsmasq já esteja pré-instalado, nas versões mais antigas você deve fazer isso:

apt-get install dnsmasq && dpkg-reconfigure resolvconf

A caixa de diálogo do assistente de instalação pode ser iniciada. Ela conterá duas perguntas. No primeiro caso, a pergunta "prepare /etc/resolv.conf for dynamic updates" é respondida com "Yes" e, no seguinte, "Append original file to dynamic file?" responde "No".

Para o sistema operacional Debian 7:

apt-get install dnsmasq resolvconf
  1. Edite o arquivo de configurações do dnsmasq:
nano /etc/dnsmasq.conf

Adicione os seguintes parâmetros:

listen-address=10.8.0.1
bind-interfaces

Salve o arquivo e feche o editor.

  1. Edição do arquivo de configurações de rede:
nano /etc/network/interfaces

É necessário especificar o endereço dos servidores DNS nas seções correspondentes das configurações do adaptador:

dns-nameservers 8.8.8.8 8.8.4.4

Talvez essa ação já tenha sido executada. Não é necessário executá-la novamente.

  1. Considerando a peculiaridade da inicialização do dnsmasq e da operação subsequente - a possibilidade de travamento antes da inicialização do adaptador de túnel virtual, adicione a seguinte linha ao arquivo rc.local, antes de "exit 0":
/etc/init.d/dnsmasq restart
  1. Agora, permita que os clientes do servidor OpenVPN usem o DNS. Usando o editor nano, descomente a linha:
push "dhcp-option DNS 10.8.0.1"

Corrigimos as alterações no arquivo.

  1. Reinicie o servidor:
reboot

Verificação da operação

Estamos nos reconectando ao servidor. Estamos tentando abrir um site para verificar o endereço IP. O resultado deve ser o endereço IP do servidor.