TL; DR Este artigo descreve a maneira mais fácil de configurar um servidor VPN, cujo endereço IP para conectar clientes VPN é diferente do endereço IP do qual os clientes acessam a Internet.Você usa uma VPN para proteger a privacidade na Internet e aluga seu próprio servidor para isso? Você é o único cliente que se conecta a este servidor em todo o mundo? É tão difícil encontrar o seu endereço IP real, você acha? Com a entrada em vigor do pacote Spring, torna-se muito mais fácil.
A VPN dupla é um tópico popular em torno do qual há muita especulação. Geralmente, esse termo é chamado de tecnologia completamente diferente, mas quase sempre significa conexão à Internet e pontos de saída espaçados no nível dos endereços IP. Consideraremos a maneira mais fácil de configurar um servidor VPN nesse modo, que não requer configuração adicional no lado do servidor e permite obter a velocidade máxima e a latência mais baixa.
Modelo de ameaça
Para se proteger de algo, você precisa entender claramente o modelo de ameaça. Não discutiremos novas leis que exigem que os provedores armazenem todo o tráfego do cliente, mas podemos dizer definitivamente que os dados de conexão, os chamados Netflow, o armazenamento é bastante simples, e isso é feito há muito tempo. Ou seja, o fato de conectar um endereço IP condicional
1.1.1.1
ao endereço
2.2.2.2
em um determinado horário do dia é registrado.
Tendo acesso a essas informações na escala do provedor, cidade ou país, basta estabelecer quem está escondido atrás da VPN.
Para aumentar o nível de privacidade ao usar uma VPN, é necessário separar o ponto de conexão e o ponto de acesso à Internet no nível IP. Na foto acima, nosso usuário está atrás da cerca sob o escrutínio de Irina Yarovoy. Todas as conexões que passam pela cerca, Irina se lembra estritamente. O usuário, como cidadão decente, conecta-se ao endereço
good.citizen.vpn
, enquanto volta ao endereço
super.cool.guy.vpn
. Como resultado, para Irina, essas duas conexões parecem desconectadas.
O que são VPNs duplas?
Sob o nome de VPN "dupla", muitas vezes são entendidas coisas diferentes, mas quase sempre significa nós de conexão e acesso à Internet espaçados geograficamente ou no nível da rede. Às vezes, é apenas um truque de marketing dos provedores de VPN, o que significa absolutamente nada, esses serviços podem ser chamados de VPNs "triplos" e "quádruplos".
Analisaremos os esquemas mais típicos usados na prática.
VPN entre servidores
A maneira mais comum. Nesse modo, o cliente estabelece uma conexão VPN apenas para o primeiro servidor. O túnel para o segundo está configurado no primeiro servidor e todo o tráfego do cliente vai para o segundo servidor, e assim por diante. Pode haver vários servidores intermediários. Nesse caso, o túnel entre os servidores pode ser instalado usando qualquer outro protocolo que não seja o protocolo através do qual o cliente está conectado, por exemplo, IPsec ou sem criptografia, como GRE ou IPIP. Nesse modo, todos os servidores intermediários
podem ser vistos no rastreamento de rota . Não há como verificar exatamente como os servidores intermediários do lado do cliente estão conectados, para que você possa confiar apenas no provedor.
Durante a rota de tráfego, o MTU mínimo (unidade máxima de transmissão) permanece igual ao valor do primeiro túnel e cada servidor intermediário
tem acesso ao tráfego de cliente descriptografado .

VPN através de proxy
Também é uma maneira bastante comum. Geralmente usado para mascarar o tráfego VPN sob um protocolo diferente, por exemplo, na China. Esse método é mais conveniente do que uma cadeia de proxies, porque, usando uma VPN, é fácil rotear todo o tráfego do sistema para o túnel. Também existem ferramentas para interceptar chamadas de sistema de programas e redirecioná-las para proxies: ProxyCap, Proxifier, mas são menos estáveis porque às vezes perdem solicitações e ignoram o proxy ou funcionam incorretamente com alguns programas.
Nesse modo, o servidor proxy não é visível no rastreamento de rota.

VPN dentro da VPN
A maneira mais paranóica e lenta: todos os túneis sobem no lado do cliente, um dentro do outro. Esse método requer uma configuração astuta de rotas no lado do cliente e o lançamento de todos os clientes VPN na ordem certa. Isso é ruim para a latência e o desempenho, mas os servidores intermediários não têm acesso ao tráfego aberto do cliente. Todas as despesas gerais de encapsulamento são resumidas e o tamanho máximo de pacote (MTU) que está finalmente disponível para o cliente diminui dependendo do número de túneis. Servidores intermediários não são visíveis no rastreamento de rota.

Configurar VDS
A maneira mais fácil de configurar uma VPN com pontos de entrada e saída divididos é conectar vários endereços IP a um único servidor virtual. Este método permite obter velocidade máxima e atrasos mínimos, pois, na verdade, o tráfego é finalizado em um único servidor. No
Vdsina.ru, você pode fazer isso sozinho no painel de controle. Enquanto o IPv4 termina em qualquer lugar, emitimos endereços IP adicionais, mesmo nos servidores, por 60 rublos!
Analisaremos a configuração do servidor passo a passo.
Escolha um servidor
Solicitamos o VDS com uma tarifa adequada, no data center necessário. Dada a nossa tarefa, escolheremos um data center mais distante, na Holanda;)

Conecte um endereço IP adicional
Depois de comprar um endereço IP adicional, é necessário configurá-lo de
acordo com as instruções .

Para maior clareza, atribua um registro PTR ao IP. Este é o nome do domínio que ficará visível quando o endereço IP for convertido novamente em um domínio. Pode ser qualquer valor, incluindo um domínio inexistente.
Por exemplo, usaremos os seguintes valores:
xxx.xxx.38.220 — super.cool.guy.vpn

Verificação de dois IP
É importante lembrar que o endereço IP que foi originalmente definido no servidor será o ponto de saída, portanto o novo endereço será o ponto de entrada. Conecte via SSH ao servidor e verifique qual endereço é usado como externo.
Para fazer isso, é mais fácil usar o serviço
ifconfig.co no console. Ao solicitar via curl, ele retorna o endereço IP a partir do qual a solicitação foi feita.
$ curl ifconfig.co xxx.xxx.38.220
Os últimos números mostram que nosso endereço externo realmente corresponde ao ponto de saída. Vamos tentar verificar a operação correta do segundo IP como um ponto de entrada. Para fazer isso, basta usar a função de proxy SOCKS embutida no SSH.
Os comandos são executados no cliente:
ssh -D 9999 root@good.citizen.vpn
O primeiro comando configura uma sessão SSH com o endereço good.citizen.vpn e ativa simultaneamente um proxy SOCKS dentro desta sessão, disponível na porta local. O segundo faz uma solicitação HTTP normal por meio desse proxy.
É importante lembrar que nossos exemplos usam nomes de domínio fictícios para consultas. Eles serão exibidos apenas com uma resolução PTR e uma solicitação completa para eles não pode ser feita. Portanto, nesta fase, você precisa acessar o servidor através do endereço IP.
Configuração do servidor IKEv2
O IPsec IKEv2 é um protocolo VPN moderno suportado por quase todos os sistemas operacionais prontos para uso. É usado como o protocolo padrão no Windows, macOS e iOS. Ao mesmo tempo, não requer a instalação de software de terceiros e, na maioria dos casos, funciona mais rápido que o OpenVPN. Já havia
artigos sobre a configuração do servidor IKEv2 no hub , mas todos descrevem o uso de certificados autoassinados e são inconvenientes, pois exigem a instalação do certificado raiz no lado do cliente VPN.
Analisaremos um exemplo de configuração do servidor usando um certificado confiável do Let's Encrypt. Isso permite que você não instale certificados raiz externos para o cliente, mas emita apenas um nome de usuário e senha.
Preparação do servidor
Usaremos um servidor baseado no Ubuntu 18.04, mas a instrução também é adequada para a maioria das distribuições modernas.
Atualizamos o sistema e instalamos os pacotes necessários
apt update && apt upgrade apt install certbot strongswan libstrongswan-extra-plugins
Emissão do certificado
Para emitir um certificado confiável, você precisa direcionar o domínio real para o endereço IP do ponto de entrada. Não consideraremos esse item em detalhes, pois está além do escopo do artigo. Como exemplo, usaremos o domínio fictício
good.citizen.vpnSe você já possui um servidor Web no servidor, use o método apropriado para emitir o certificado através do certbot ou outro cliente para o Let's Encrypt. Este exemplo assume que a porta HTTP (80) não está ocupada.
certbot certonly --standalone --agree-tos -d good.citizen.vpn
Respondendo às perguntas do assistente? receberemos um certificado e uma chave assinados
Para autenticação do servidor IKEv2, os mesmos certificados X.509 são usados como para
Https Para que o Strongswan possa usar esses certificados, eles devem ser copiados para a pasta /etc/ipsec.d.
Veja como os certificados devem estar localizados:
cp /etc/letsencrypt/live/good.citizen.vpn/cert.pem /etc/ipsec.d/certs/ cp /etc/letsencrypt/live/good.citizen.vpn/privkey.pem /etc/ipsec.d/private/ cp /etc/letsencrypt/live/good.citizen.vpn/chain.pem /etc/ipsec.d/cacerts/
Como os certificados letsencrypt são reemitidos com frequência, fazê-lo manualmente é inconveniente. Portanto, automatizamos esse processo usando o gancho para certbot.
A tarefa do script é copiar três arquivos para a pasta desejada sempre que o certificado for atualizado e, em seguida, enviar o comando strongswan para reler os certificados.
Crie o arquivo
/etc/letsencrypt/renewal-hooks/deploy/renew-copy.sh e torne-o executável.
#!/bin/sh set -e for domain in $RENEWED_DOMAINS; do case $domain in good.citizen.vpn) daemon_cert_root=/etc/ipsec.d/ # Make sure the certificate and private key files are # never world readable, even just for an instant while # we're copying them into daemon_cert_root. umask 077 cp "$RENEWED_LINEAGE/cert.pem" "$daemon_cert_root/certs/" cp "$RENEWED_LINEAGE/chain.pem" "$daemon_cert_root/cacerts/" cp "$RENEWED_LINEAGE/privkey.pem" "$daemon_cert_root/private/" # Reread certificates /usr/sbin/ipsec reload /usr/sbin/ipsec purgecerts /usr/sbin/ipsec rereadall ;; esac done
Agora, após cada reemissão do certificado, o script copiará os novos arquivos para as pastas strongswan e enviará um comando ao daemon para reler os certificados.
Configuração do Strongswan
Adicione a configuração strongswan /etc/ipsec.conf
config setup
Logins e senhas de clientes VPN são definidos no arquivo
/etc/ipsec.secretsNesse arquivo, você também precisa especificar o nome da chave privada que copiamos anteriormente da pasta letsencrypt:
# /etc/ipsec.d/private/ : RSA privkey.pem # VPN # : EAP "" IrinaYarovaya : EAP "PleaseLoveMe123" Mizooleena : EAP "IwannaLoveToo3332"
Nesta fase, você pode reiniciar o servidor strongswan e verificar se a nova configuração foi ativada:
$ systemctl restart strongswan $ ipsec statusall Virtual IP pools (size/online/offline): 10.0.1.0/24: 254/0/0 Listening IP addresses: xxx.xxx.38.220 Connections: ikev2-mschapv2: %any...%any IKEv2, dpddelay=35s ikev2-mschapv2: local: [CN=good.citizen.vpn] uses public key authentication ikev2-mschapv2: cert: "CN=good.citizen.vpn" ikev2-mschapv2: remote: uses EAP_MSCHAPV2 authentication with EAP identity '%any' ikev2-mschapv2: child: 0.0.0.0/0 === dynamic TUNNEL, dpdaction=clear ikev2-mschapv2-apple: %any...%any IKEv2, dpddelay=35s ikev2-mschapv2-apple: local: [good.citizen.vpn] uses public key authentication ikev2-mschapv2-apple: cert: "CN=good.citizen.vpn" ikev2-mschapv2-apple: remote: uses EAP_MSCHAPV2 authentication with EAP identity '%any' ikev2-mschapv2-apple: child: 0.0.0.0/0 === dynamic TUNNEL, dpdaction=clear
Você pode ver que a configuração foi ativada com sucesso e o certificado está conectado. Nesta fase, você já pode se conectar ao servidor VPN, mas será sem acesso à Internet. Para liberar clientes na Internet, você precisa habilitar o encaminhamento e configurar o NAT.
Configuração NAT
Ativamos pacotes de encaminhamento:
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf sysctl -p
Ligue o NAT. É importante ter em mente que este é apenas um exemplo de uma configuração mínima de iptables. Personalize o restante das regras de acordo com suas necessidades.
ethName0 - substitua pelo nome da sua interface
10.0.1.0/24 - o intervalo de endereços IP que serão emitidos para clientes VPN. Pedimos no
/etc/ipsec.conf111.111.111.111 - o endereço IP do ponto de saída; em nosso exemplo, é o endereço super.cool.guy.vpn
iptables -t nat -A POSTROUTING -s 10.0.1.0/24 -o ethName0 -j SNAT --to-source 111.111.111.111
Depuração
Nesse estágio da configuração, devemos obter um servidor totalmente funcional, ao qual os clientes já possam se conectar. Antes de prosseguir, é melhor verificar isso verificando a conexão.
Em caso de problemas de conexão, você pode assistir ao log em tempo real:
journalctl -f -u strongswan
Inicialização na inicialização
Se tudo der certo, você pode adicionar o strongswan à inicialização na inicialização:
systemctl enable strongswan
Salvando regras do iptables
Para salvar as regras do iptables após a reinicialização, existe um pacote
iptables-persistent especial. É importante lembrar que ele salvará o conjunto de regras atual e o adicionará à inicialização.
apt install iptables-persistent
Configuração do cliente
A configuração no lado do cliente é extremamente simples - basta informar ao cliente o endereço do servidor, o nome de usuário e a senha. Para macOS e iOS, você pode criar perfis de configuração automática que serão suficientes para ativar em dois cliques.
Configuração do WindowsNas novas versões do Windows, o IKEv2 é configurado em um assistente simples, que pode ser acessado no menu de conexão WiFi.

O Windows não define uma rota padrão para essa conexão, portanto a instalaremos manualmente. Nas propriedades da conexão VPN, vá para as propriedades de TCP / IPv4 -> adicionalmente e marque a caixa "Usar um gateway em uma rede remota"
clicável Configuração do MacOSO MacOS suporta o IKEv2 a partir da versão 10.11 (El Capitan). A conexão é criada através do menu de configurações de rede.

Adicione uma nova conexão. O nome da conexão é qualquer nome arbitrário.

Para autenticar um certificado, você deve especificar um nome de domínio. Ao mesmo tempo, no campo "Endereço do servidor", você pode especificar o endereço IP do servidor e o domínio apenas em "ID remota", a resolução do DNS não será executada para a conexão e acontecerá um pouco mais rápido.

O nome do usuário e a senha são especificados no arquivo
/etc/ipsec.secrets
Configuração do IOSA configuração do IOS pode ser feita manualmente por meio do assistente, mas é muito mais conveniente usar o perfil de configuração automática mobileconfig.
O ajuste manual é semelhante em significado ao macOS da área de trabalho:
Configurações -> VPN -> Adicionar configuração da VPN
Perfil de configuração automática para dispositivos Apple
Perfis de configuração automática .mobileconfig é um arquivo de configuração XML que pode configurar qualquer coisa, de certificados SSL a conexões VPN.
Basta que o usuário clique no arquivo e todas as configurações necessárias serão instaladas automaticamente.
Exemplo de configuração para conectar-se ao nosso servidor IKEv2.
Para configurar um arquivo para sua configuração, basta editar alguns parâmetros neste modelo:
AuthName - nome de usuário do arquivo
/etc/ipsec.secretsAuthPassword - senha do usuário
/etc/ipsec.secretsRemoteAddress - endereço IP do domínio ou do servidor
RemoteIdentifier - domínio para o qual o certificado é emitido
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>PayloadContent</key> <array> <dict> <key>IKEv2</key> <dict> <key>AuthName</key> <string>IrinaYarovaya</string> <key>AuthPassword</key> <string>PleaseLoveMe123</string> <key>RemoteAddress</key> <string>123.123.123.123</string> <key>RemoteIdentifier</key> <string>good.citizen.vpn</string> <key>AuthenticationMethod</key> <string>Certificate</string> <key>ChildSecurityAssociationParameters</key> <dict> <key>DiffieHellmanGroup</key> <integer>14</integer> <key>EncryptionAlgorithm</key> <string>AES-256</string> <key>IntegrityAlgorithm</key> <string>SHA2-256</string> <key>LifeTimeInMinutes</key> <integer>1440</integer> </dict> <key>DeadPeerDetectionRate</key> <string>High</string> <key>ExtendedAuthEnabled</key> <true/> <key>IKESecurityAssociationParameters</key> <dict> <key>DiffieHellmanGroup</key> <integer>14</integer> <key>EncryptionAlgorithm</key> <string>AES-256</string> <key>IntegrityAlgorithm</key> <string>SHA2-256</string> <key>LifeTimeInMinutes</key> <integer>1440</integer> </dict> <key>OnDemandEnabled</key> <integer>1</integer> <key>OnDemandRules</key> <array> <dict> <key>Action</key> <string>Connect</string> </dict> </array> </dict> <key>IPv4</key> <dict> <key>OverridePrimary</key> <integer>1</integer> </dict> <key>PayloadDescription</key> <string>Configures VPN settings</string> <key>PayloadDisplayName</key> <string>VPN</string> <key>PayloadIdentifier</key> <string>com.apple.vpn.managed.96C1C38F-D4D6-472E-BA90-9117ED8896B5</string> <key>PayloadType</key> <string>com.apple.vpn.managed</string> <key>PayloadUUID</key> <string>96C1C38F-D4D6-472E-BA90-9117ED8896B5</string> <key>PayloadVersion</key> <integer>1</integer> <key>UserDefinedName</key> <string>London VPN</string> <key>VPNType</key> <string>IKEv2</string> </dict> </array> <key>PayloadDisplayName</key> <string>My Super IKEv2 VPN</string> <key>PayloadIdentifier</key> <string>vpn.googd.citizen</string> <key>PayloadUUID</key> <string>F3FAD91C-019C-4A79-87A1-CF334C583339</string> <key>PayloadType</key> <string>Configuration</string> <key>PayloadVersion</key> <integer>1</integer> </dict> </plist>
Configuração do AndroidInfelizmente, o Android é o único dos sistemas operacionais populares que ainda não possui suporte interno para o IKEv2. Para se conectar, você pode usar o cliente oficial do
Strongswan do PlayMarket Sumário
Mostramos a opção mais simples de configuração do servidor com pontos de entrada e saída espaçados. Essa configuração permite obter a velocidade máxima da VPN, pois ela não usa túneis adicionais entre os servidores, apesar de os endereços IP dos pontos de entrada e saída estarem em sub-redes diferentes. Essa abordagem permite que você experimente mais, conectando mais de dois endereços IP ao servidor.
O protocolo IKEv2 é perfeito para usá-lo no sistema operacional da área de trabalho para o dia a dia, pois é mais nativamente integrado ao sistema e, sendo todas as outras coisas iguais, permite obter mais velocidade do que através de programas VPN de terceiros.


Inscreva-se no nosso desenvolvedor do Instagram
