Base de Conhecimento Instruções simples para trabalhar com o serviço Profitserver
a Principal Base de Conhecimento Configuração de servidor VPN no Linux: PPTP ou OpenVPN?

Configuração de servidor VPN no Linux: PPTP ou OpenVPN?


Hoje em dia, a tecnologia VPN se torna mais popular. Usuários comuns usam VPN para acessar a Internet com segurança. Ela também ajuda a contornar sites e serviços bloqueados localmente e proteger contra possível comportamento malicioso externo. Quando você está se conectando a um servidor VPN, há um túnel seguro entre seu computador e o servidor que não pode ser acessado de fora, então o servidor VPN se torna seu ponto de acesso à Internet. Existem muitos serviços VPN por aí, gratuitos e pagos, mas se eles não funcionarem para você por algum motivo, você sempre pode configurar seu próprio servidor VPN.

Para executar sua VPN, você deve alugar servidor VPS. Existem diferentes softwares que permitem criar uma conexão VPN. Eles diferem uns dos outros pelos sistemas operacionais suportados e algoritmos usados. Daremos uma olhada em duas abordagens independentes para configurar um servidor VPN. A primeira é baseada no protocolo PPTP que já é considerado obsoleto e não seguro, mas é realmente fácil de configurar. A outra emprega o software moderno e seguro OpenVPN, mas requer a instalação de um aplicativo cliente de terceiros e um processo de configuração mais completo.

Em nosso ambiente de teste, usaremos um servidor virtual com Ubuntu Server 18.04. Um firewall será desativado no servidor porque sua configuração merece um artigo separado. Descreveremos o processo de configuração no Windows 10.

PREPARAÇÃO

Não importa qual servidor VPN você escolher, o acesso à Internet será configurado por meios integrados do sistema operacional. Para abrir o acesso à Internet por meio de uma interface de serviço externa, você tem que permitir o encaminhamento de pacotes entre as interfaces e configurar a tradução de endereços de rede.

Para ativar o encaminhamento de pacotes, abra o arquivo “/etc/sysctl.conf” e mudar “net.ipv4.ip_forward” valor do parâmetro em 1.

ativar o encaminhamento de pacotes para configuração de VPN

Para aplicar as alterações sem reiniciar o computador, execute o comando

sudo sysctl -p /etc/sysctl.conf

A tradução de endereços de rede é configurada por meio de iptables. Primeiro, verifique o nome da sua interface de rede externa executando o comando “mostrar link ip” - você precisará dele na próxima etapa. Nosso nome é “ens3”.

show de links ip

Habilite a tradução de endereços de rede na sua interface externa para todos os nós da rede local.

sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE

Observe que você precisa especificar o nome real da interface do seu servidor, ele pode ser diferente do nosso.

Por padrão, todas as regras criadas pelo iptables são redefinidas após a reinicialização do servidor. Para evitar isso, use “iptables-persistente” utilitário. Instale o seguinte pacote:

sudo apt install iptables-persistent

Em algum momento durante o processo de instalação, você verá uma janela de configuração que irá sugerir que você salve as regras atuais do iptables. Como as regras já estão definidas, basta confirmar e clicar em "Yes" duas vezes. Já que agora as regras serão aplicadas automaticamente após a reinicialização do servidor.

Ativar tradução de endereços

Servidor PPTP

Configuração do servidor

Instale o pacote:

sudo apt install pptpd

Após o término da instalação, abra o arquivo “/etc/pptpd.conf” em qualquer editor de texto e edite assim:

option /etc/ppp/pptpd-options #path to the settings file
logwtmp #client connections logging mechanism
connections 100 #number of simultaneous connections
localip 172.16.0.1 #the address that will serve as a client gateway
remoteip 172.16.0.2-200 #range of addresses

Depois disso, edite o arquivo “/etc/ppp/opções-pptpd”. A maioria dos parâmetros são configurados por padrão.

#name of the service for new client records
name pptpd
#restrict obsolete authentication methods
refuse-pap
refuse-chap
refuse-mschap
#allow a more secure authentication method
require-mschap-v2
#enable encryption
require-mppe-128
#specify dns servers for clients (use any available servers)
ms-dns 8.8.8.8
ms-dns 8.8.4.4
proxyarp
nodefaultroute
lock
nobsdcomp
novj
novjccomp
nologfd

Na próxima etapa, você precisará criar um registro para conexões de clientes. Digamos que você queira adicionar um usuário “usuário vpn” com senha "1" e permitir endereçamento dinâmico para ele. Abra o arquivo “/etc/ppp/chap-secrets” e adicione a seguinte linha com os parâmetros do usuário no final do arquivo:

vpnuser pptpd 1 *

“pptpd” valor é o nome do serviço que especificamos no arquivo “opções-pptpd”. Ao invés de "*" você pode especificar um endereço IP fixo. No resultado, o arquivo “segredos do cap” deve ficar assim:

Configuração do servidor VPN

Para aplicar as configurações, redefina o pptpd serviço e adicione-o ao carregamento automático.

sudo systemctl restart pptpd
sudo systemctl enable pptpd

A configuração do servidor foi concluída.

Configuração do cliente

Abra "Começar" - "Configurações" - Rede e Internet - "VPN" e clique “Adicionar uma conexão VPN”

Configurar cliente para conexão VPN

Insira os parâmetros de conexão na janela aberta e clique "Salvar"

  • Provedor de VPN: “Windows (integrado)”
  • Nome da conexão: “vpn_connect” (você pode escolher qualquer nome)
  • Nome ou endereço do servidor: (especifique o endereço IP externo do servidor)
  • Tipo de VPN: “Automático”
  • Tipo de informação de login: “Nome de usuário e senha”
  • Nome de usuário: usuário vpnus (nome especificado no arquivo “chap-secrets” no servidor)
  • Senha: 1 (como no arquivo “chap-secrets”)

Após salvar os parâmetros, você verá a nova conexão VPN na janela. Clique com o botão esquerdo na conexão e selecione "Connect". No caso de uma conexão bem-sucedida, você verá "Conectado" estado.

Adicionando conexão VPN

Nas Opções, você encontrará endereços internos do cliente e do servidor. Campo “Endereço de destino” exibe o endereço do servidor externo.

Como configurar um servidor VPN sozinho

Quando conectado, o endereço IP interno do servidor, 172.16.0.1 no nosso caso, torna-se o gateway padrão para todos os pacotes de saída.

Verifique o endereço IP externo

Usando qualquer serviço online, você pode ter certeza de que o endereço IP externo do computador agora é o mesmo que o endereço IP do seu servidor VPN.

Servidor OpenVPN

Configuração do servidor

Vamos promover o nível de permissões do usuário atual porque para nossa configuração futura precisaremos de acesso root.

sudo -s

Instale todos os pacotes necessários. Precisaremos “Fácil-RSA” pacote para gerenciar chaves de criptografia.

apt install openvpn easy-rsa iptables-persistent

Permitir conexões de entrada na porta 1194 via protocolo UDP e aplicar regras do iptables.

sudo iptables -I INPUT -p udp --dport 1194 -j ACCEPT

sudo netfilter-persistent save

Crie um diretório com os arquivos copiados do pacote “Easy-RSA” e navegue até ele.

make-cadir ~/openvpn

cd ~/openvpn

Gerar infraestrutura de chave pública (PKI).

./easyrsa init-pki

Gere o certificado raiz da Autoridade Certificadora (CA).

./easyrsa build-ca

Durante o processo de criação, você será solicitado a definir e memorizar uma senha. Você também precisará responder a perguntas e inserir informações sobre o proprietário da chave. Você pode deixar os valores padrão fornecidos entre colchetes. Pressione "Enter" para finalizar a entrada.

Gere uma chave privada e uma solicitação de certificado. Como argumento, especifique um nome arbitrário; no nosso caso, é "vpn-server".

./easyrsa gen-req vpn-server nopass

Deixe o valor Nome comum como padrão.

Assine a solicitação de certificado do servidor gerada.

./easyrsa sign-req server vpn-server

Nesta etapa, responda "sim" para confirmar a assinatura e digite a senha que foi criada durante a geração do certificado raiz.

Gere parâmetros Diffie-Hellman. Esses parâmetros são usados para a troca segura de chaves entre o servidor e o cliente.

./easyrsa gen-dh

Todos os arquivos necessários foram gerados. Vamos criar uma pasta "keys" no diretório de trabalho do OpenVPN para armazenar as chaves e copiar os arquivos criados para lá.

mkdir /etc/openvpn/keys

sudo cp pki/ca.crt pki/issued/vpn-server.crt pki/private/vpn-server.key pki/dh.pem /etc/openvpn/keys

Configurar NAT usando iptables regras. Crie um arquivo chamado nat e abri-lo para edição no /etc/openvpn/ diretório.

#!/bin/sh

# Reset firewall settings
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X

# (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT

# Allow OpenVPN connections (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -p udp --dport 1194 -j ACCEPT

iptables -A INPUT -i tun0 -j ACCEPT

# (eth0 in our case, may vary):
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT

# (eth0 in our case, may vary)
iptables -A FORWARD -i eth0 -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Enable masquerading for the local network (eth0 in our case, may vary)
iptables -t nat -A POSTROUTING -o eth0 -s 10.8.0.0/24 -j MASQUERADE

# Deny incoming connections from outside
iptables -A INPUT -i eth0 -j DROP

# Deny transit traffic from outside (eth0 in our case, may vary)
iptables -A FORWARD -i eth0 -o tun0 -j DROP

sudo netfilter-persistent save

Salve o arquivo e torne-o executável.

sudo chmod 755 /etc/openvpn/nat

Copie o modelo de configuração do servidor.

cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/

Abra o arquivo “/etc/openvpn/server.conf” para edição, certifique-se de que contém as seguintes linhas e edite-as se necessário:

#Port, protocol, and interface

port 1194

proto udp

dev tun
#Path to the encryption keys

ca /etc/openvpn/keys/ca.crt

cert /etc/openvpn/keys/vpn-server.crt

key /etc/openvpn/keys/vpn-server.key

dh /etc/openvpn/keys/dh.pem

#SHA256 Hashing Algorithm

auth SHA256
#Switching off additional encryption

#tls-auth ta.key 0
#Network parameters

server 10.8.0.0 255.255.255.0

ifconfig-pool-persist /var/log/openvpn/ipp.txt

push "redirect-gateway def1 bypass-dhcp"

push "dhcp-option DNS 8.8.8.8"

push "dhcp-option DNS 8.8.4.4"
#Ping every 10 seconds to check the connection.

keepalive 10 120
#Set up AES-256 encryption for the tunnel.

cipher AES-256-GCM
#Demoting the service OpenVPN after launch

user nobody

group nogroup
#Switching on parameters saving after reboot

persist-key

persist-tun
#Set log verbosity

verb 3
#Redirecting logs

log-append /var/log/openvpn/openvpn.log
#Script the rule installation launch.

up /etc/openvpn/nat

Habilite o encaminhamento de tráfego no servidor.

sudo sysctl -w net.ipv4.ip_forward=1

echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf

Inicie o OpenVPN para aplicar a configuração.

systemctl restart openvpn@server

A configuração do servidor foi concluída!

Configuração do cliente

Acesse o site oficial do OpenVPN “https://openvpn.net”, vá para o “COMUNIDADE” seção.

Acesse o site oficial do projeto “https://openvpn.net”, localizado na seção “COMUNITY”.

Role para baixo e baixe o instalador correspondente à versão do seu sistema operacional. No nosso caso, é o Windows 11 ARM64.

verifique o arquivo e instale o instalador para sua versão operacional do sistema. Na verdade, este é o Windows 11 ARM64.

Instale o aplicativo deixando todos os parâmetros padrão.

Na próxima etapa, você precisará preparar o seguinte arquivo no servidor e transferi-lo para o computador cliente:

  • chaves públicas e privadas;
  • cópia da chave do centro de certificação;
  • modelo de arquivo de configuração.

Conecte-se ao servidor, eleve os privilégios e navegue até o diretório que criamos "~/openvpn".

sudo -s

cd ~/openvpn

Gere uma chave privada e uma solicitação de certificado para o cliente. Como argumento, especifique um nome arbitrário; no nosso caso, é "client1".

./easyrsa gen-req client1 nopass

Digite a senha que definimos ao criar o certificado raiz e deixe o valor Nome comum como padrão.

Вводим пароль, который мы устанавливали при создании корневого сертификата и оставляем значение Nome Comum por умолчанию.

Assine a solicitação de certificado do cliente gerada.

./easyrsa sign-req client client1

Nesta etapa, responda "sim" para confirmar a assinatura e digite a senha que foi criada durante a geração do certificado raiz.

Neste caso, você pode dizer "sim" para uma consulta, por exemplo, para que você possa dizer que está certo. создании корневого сертификата.

Para sua conveniência, vamos criar uma pasta chamada 'client1' no diretório inicial e copiar todos os arquivos que serão transferidos para o computador cliente para ela.

mkdir ~/client1

cp pki/issued/client1.crt pki/private/client1.key pki/ca.crt ~/client1/

Copie o modelo do arquivo de configuração do cliente para o mesmo diretório. Altere a extensão do arquivo para “.ovpn” enquanto copia.

cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client1/client.ovpn

Alterar o proprietário do diretório e de todos os arquivos “~/cliente1/” para poder distribuí-los ao cliente. Vamos fazer “Meu Deus” o proprietário no nosso caso.

chown -R mihail:mihail ~/client1

Vá até o computador cliente e copie o conteúdo do “~/cliente1/” pasta. Você pode fazer isso com a ajuda de “PSCP” utilitário, que acompanha o Putty.

PSCP -r mihail@[IP_сервера]:/home/mihail/client1 c:\client1

Você pode armazenar arquivos de chave “ca.crt”, “cliente1.crt”, “cliente1.chave” onde você quiser. No nosso caso, eles estão nesta pasta “c:\Arquivos de Programas\OpenVPN\keys”, e modelamos o arquivo de configuração “cliente.ovpn” no “c:\Arquivos de Programas\OpenVPN\config” diretório.

Agora vamos configurar o cliente. Abra o arquivo “c:\Arquivos de programas\OpenVPN\config\client.ovpn” em um editor de texto e edite as seguintes linhas:

#announce that this is the client

client
#interface and protocol just like on the server

dev tun

proto udp
#IP address of the server and port

remote ip_address 1194
#saving parameters after reload

persist-key

persist-tun
#key paths

ca “c:\\Program Files\\OpenVPN\\keys\\ca.cert”

cert “c:\\Program Files\\OpenVPN\\keys\\client1.crt”

key “c:\\Program Files\\OpenVPN\\keys\\client1.key”
#enable server verification

remote-cert-tls server
#disable extra encryption

#tls-auth ta.key 1

cipher AES-256-CBC

auth-nocache

verb 3

Deixe o resto intocado.

Salve o arquivo e inicie o aplicativo cliente “GUI OpenVPN”.

Configuração de VPN concluída

Clique com o botão direito do mouse no ícone do aplicativo na barra de tarefas e escolha "Connect". Se a conexão for bem-sucedida, o ícone ficará verde.

Use qualquer serviço online para verificar se seu endereço IP público mudou e agora é o mesmo que o endereço IP do servidor.

❮ Artigo anterior Como configurar o Wireguard VPN no seu servidor
Próximo artigo ❯ Configuração do servidor FTP

Pergunte-nos sobre VPS

Estamos sempre prontos para responder suas perguntas a qualquer hora do dia ou da noite.