Configurando um servidor VPN WireGuard no Android para acesso remoto.

  • Configuração passo a passo de um servidor WireGuard no Linux com chaves, IPs e encaminhamento de tráfego corretamente habilitados.
  • Criação e gerenciamento de pares para vários clientes, incluindo o aplicativo oficial do WireGuard para Android.
  • Integração de DNS e domínios locais para acessar dispositivos de LAN remotos de forma conveniente e segura.
  • Melhores práticas de segurança e resolução de problemas comuns em implementações de acesso remoto com WireGuard.

Configurando um servidor VPN WireGuard no Android para acesso remoto.

Configurar seu próprio servidor VPN com WireGuard e conectar-se a partir de um dispositivo Android é uma das maneiras mais fáceis de ter uma conexão segura. Acesso remoto seguro à sua rede doméstica ou ao seu VPS.Embora à primeira vista possa parecer intimidante ver comandos, teclas e arquivos de configuração, na realidade o processo é bastante mecânico se você seguir os passos com calma.

Neste guia, você aprenderá como implantar um servidor WireGuard no Linux (por exemplo, em um VPS com Ubuntu) e conectar-se a partir do seu dispositivo móvel Android para poder... Acesse sua LAN, NAS, câmeras IP, roteadores ou navegue na web como se estivesse em casa.Além disso, explica conceitos básicos, dicas de segurança, exemplos de configuração e como aproveitar nomes de domínio locais para tornar o acesso remoto conveniente e integrado.

O que é WireGuard e por que usá-lo para acesso remoto a partir do Android?

O WireGuard é um protocolo VPN moderno que se destaca por ser muito mais simples, rápido e seguro do que alternativas clássicas como OpenVPN ou IPsec. Sua implementação é minimalista (alguns milhares de linhas de código) e utiliza criptografia de ponta, como Curve25519, ChaCha20, Poly1305 ou BLAKE2s.

A filosofia deles centra-se na configuração sendo Da forma mais clara possível: cada dispositivo possui um par de chaves pública/privada.Você define apenas algumas opções (IP interno, porta, IPs permitidos…) e isso é tudo o que precisa para um túnel criptografado funcional. Sem dezenas de parâmetros enigmáticos ou arquivos cheios de diretivas difíceis de entender.

Em termos de desempenho, o WireGuard funciona apenas sobre UDP e pode até ser integrado ao kernel do Linux, o que se traduz em Baixa latência, altas velocidades e uso eficiente de recursos.Isso é especialmente perceptível ao conectar-se de um dispositivo Android usando redes móveis ou Wi-Fi com qualidade variável.

Outra grande vantagem é que o WireGuard é É multiplataforma e possui aplicativos oficiais para Android, iOS, Windows, macOS e Linux.Isso significa que você pode configurar o servidor em um VPS ou em seu roteador compatível e conectar-se a partir do seu dispositivo móvel simplesmente importando um arquivo .conf ou escaneando um código QR.

Pré-requisitos antes de configurar o servidor WireGuard

Antes de começar a digitar comandos, é uma boa ideia certificar-se de que tem os elementos básicos de que precisa. Servidor VPN WireGuard acessível a partir do AndroidIsso lhe poupará muito tempo e erros bobos ao longo do processo.

A abordagem mais comum é usar um VPS ou um servidor Linux dedicado, onde você instalará o serviço. O Ubuntu 22.04 é uma das opções mais convenientes.Porque inclui o WireGuard nos repositórios oficiais e há muita documentação disponível, mas qualquer distribuição moderna serve.

Você também precisará de um usuário com privilégios administrativos, seja root direto ou um usuário com sudoComo você precisará instalar pacotes, modificar configurações de rede e habilitar o encaminhamento de IP, é importante que você tenha acesso SSH ao servidor e saiba como se conectar a partir do seu computador.

Por fim, você precisará de um cliente para se conectar a esse servidor: pode ser o seu Celular Android com o aplicativo oficial WireGuard.mas também outros sistemas (Windows, macOS, Linux, iOS). Neste artigo, vamos nos concentrar especificamente no Android, embora você verá que o arquivo de configuração é praticamente o mesmo para todos eles.

Configuração do servidor Linux: atualização e instalação do WireGuard

Com o VPS ou servidor já inicializado e com o Ubuntu 22.04 (ou versão similar) instalado, o primeiro passo lógico é atualizar pacotes do sistema Para garantir que tudo esteja atualizado e que você não esteja perpetuando erros ou vulnerabilidades conhecidas.

Conecte-se ao servidor via SSH e execute o seguinte comando:

apt update
apt upgrade -y

O primeiro comando atualiza a lista de pacotes nos repositórios, e o segundo... Atualiza os pacotes já instalados. para as versões mais recentes automaticamente. Isso pode demorar um pouco, especialmente se o servidor for novo ou não tiver sido atualizado há algum tempo.

Após a atualização do sistema, instale o WireGuard a partir dos repositórios oficiais com o seguinte comando:

apt install -y wireguard

Esse comando instalará o pacote principal e utilitários como... wg e wg-rápido E, se necessário, o módulo do kernel requerido será carregado. Alguns tutoriais também mostrarão explicitamente o uso de:

modprobe wireguard

Este comando simplesmente força o carregamento manual do módulo WireGuard no kernel, o que pode ser útil. Se, por algum motivo, o módulo não tiver sido carregado automaticamente, ou se você estiver em um ambiente um pouco mais incomum.

Geração de chaves e estrutura básica de configuração do servidor

O núcleo do sistema WireGuard é o seu gerenciamento de chaves, portanto, o próximo passo é Crie o par de chaves pública e privada do servidor.Normalmente, todas as configurações estão localizadas no diretório padrão /etc/wireguard/.

Acesse esse diretório com:

cd /etc/wireguard/

Para proteger as chaves, é aconselhável primeiro ajustar a máscara de permissões padrão para que os arquivos criados tenham permissões restritivas e não são legíveis por outros usuários do sistema. Isso é feito com:

umask 077

Em seguida, gere o par de chaves do servidor de forma simples:

wg genkey > privatekey
wg pubkey < privatekey > publickey

O arquivo PrivateKey A chave privada deve ser mantida em segurança e nunca compartilhada, enquanto a chave pública pode ser distribuída a clientes autorizados. Para reforçar ainda mais a segurança, ajuste explicitamente as permissões da chave privada:

chmod 600 privatekey

Se você quiser ver o conteúdo das teclas na tela, pode usar um comando simples como `tail`:

tail privatekey publickey

Isso lhe dará uma visão das strings que você precisará copiar para o arquivo de configuração wg0.conf e para as configurações do cliente. sempre respeitando o que é público e o que é privado..

Criar e editar o arquivo wg0.conf no servidor.

Configurando um servidor VPN WireGuard no Android para acesso remoto.

O WireGuard é organizado por interfaces virtuais, que por convenção são geralmente chamadas de wg0, wg1, etc.Cada interface possui seu próprio arquivo de configuração em /etc/wireguard/. No nosso caso, criaremos o arquivo wg0.conf como a interface principal.

Para editar o arquivo, você pode usar qualquer editor de texto no modo console, mas muitos tutoriais recomendam o nano devido à sua simplicidade. Se você não o tiver instalado, pode adicioná-lo com o seguinte comando:

apt install -y nano

Depois de obtê-lo, crie e abra o arquivo de configuração do servidor:

nano /etc/wireguard/wg0.conf

Antes de escrever a configuração, é aconselhável descobrir o nome da interface de rede física através da qual o servidor se conecta à Internet, visto que Você precisará disso para a regra NAT.Para fazer isso, utilize:

ip a

Em muitos VPSs, a interface é chamada de ens3, eth0, enp0s3 ou similar, e será a ela atribuído o endereço IP público ou o endereço IP interno através do qual você se conecta via SSH.

Um exemplo completo de um bloqueio no servidor poderia ser:


PrivateKey = <tu_clave_privada_servidor>
Address = 10.30.0.1/24
ListenPort = 51928
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o <nombre_interfaz_salida> -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o <nombre_interfaz_salida> -j MASQUERADE

Neste exemplo, você atribui o endereço IP interno ao servidor. 10.30.0.1/24 dentro da VPNVocê escuta na porta UDP 51928 e adiciona regras de iptables para permitir o encaminhamento e aplicar NAT quando a interface wg0 é ativada (PostUp) e remove essas regras quando ela é desativada (PostDown).

Lembre-se que no nano você pode economizar com Ctrl + A e sair com Ctrl + XUma vez salvo, o arquivo wg0.conf servirá de base para a adição posterior dos diferentes pares (clientes).

Habilite o encaminhamento de IP e o serviço WireGuard no servidor.

Para que os clientes conectados via WireGuard acessem a Internet ou outras redes atrás do servidor, é essencial que... habilitar encaminhamento de pacotes IP No nível do sistema. Isso é feito editando a configuração do sysctl.

Em muitos casos, basta executar o seguinte comando:

echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
echo "net.ipv6.conf.all.forwarding=1" >> /etc/sysctl.conf
sysctl -p

Isso ativa o encaminhamento para IPv4 e IPv6 e recarrega os parâmetros do kernel com `sysctl -p`. É importante não esquecer esta etapa, pois se o encaminhamento estiver desativado, Você terá um túnel, mas não conseguirá acessar a rede local (LAN) nem a internet. dos clientes.

Agora você pode iniciar o serviço WireGuard associado ao wg0 usando o comando wg-quick, o que simplifica bastante o gerenciamento de interfaces:

systemctl start wg-quick@wg0

Se você deseja que a interface WireGuard seja iniciada automaticamente a cada inicialização do servidor, habilite o serviço com:

systemctl enable wg-quick@wg0

Para verificar se está ativo, você pode consultar o status do serviço:

systemctl status wg-quick@wg0

O status deve aparecer como ativo (em execução)Além disso, você pode usar o comando:

wg

Para visualizar informações em tempo real sobre a interface, chaves, pares configurados e tráfego trocado através do túnel.

Adicione clientes ao servidor: PC, dispositivos móveis Android e outros dispositivos.

Assim que a parte do servidor estiver configurada e funcionando, você precisa começar a adicionar clientes que se conectarão como pares. Para cada dispositivo que você deseja conectar (PC, telefone, tablet, roteador do cliente, etc.). Você precisa gerar um novo par de chaves. e atribuir-lhe um endereço IP dentro da rede VPN.

Para simplificar, muitos administradores geram chaves de cliente diretamente no servidor, embora, do ponto de vista da segurança, o ideal seria... crie-os no próprio dispositivo do cliente e transferir apenas a chave pública para o servidor. O processo é o mesmo, então vamos analisar o caso simples de geração das chaves em /etc/wireguard/.

Por exemplo, para um computador de mesa, você poderia fazer o seguinte:

wg genkey > mypc_privatekey
wg pubkey < mypc_privatekey > mypc_publickey

E para o seu celular Android:

wg genkey > myphone_privatekey
wg pubkey < myphone_privatekey > myphone_publickey

Com um simples:

ls

Você verá todos os arquivos principais. E com:

tail mypc_publickey myphone_publickey

Você poderá ver os valores deles na tela. Essas chaves públicas são o que você deverá colar no arquivo wg0.conf do servidor em blocos separados, atribuindo a cada uma o seu endereço IP de túnel.

Abra o arquivo wg0.conf novamente:

nano wg0.conf

e adicione as definições do cliente, por exemplo:


PublicKey = <clave_publica_mipc>
AllowedIPs = 10.30.0.2/32

Chave pública =
IPs permitidos = 10.30.0.3/32

Com essas linhas, você está indicando que o par cuja chave pública corresponde a `mypc_publickey` usará o endereço IP 10.30.0.2 dentro da VPN, e que O celular Android usará a versão 10.30.0.3.AllowedIPs com /32 indica que se trata de um IP individual, o que é comum em configurações de usuários remotos.

Salve as alterações e reinicie o serviço para que o servidor possa ler a nova configuração:

systemctl restart wg-quick@wg0

Sempre que você modificar o arquivo wg0.conf no servidor (por exemplo, para adicionar ou remover pares), você precisará... recarregue o serviço Para que as alterações entrem em vigor, um novo comando `systemctl status wg-quick@wg0` confirmará que tudo continua funcionando corretamente.

Criação de arquivos de configuração para clientes

Com os pares agora registrados no servidor, o próximo passo é preparar os arquivos .conf que os clientes usarão para se conectar. Esses arquivos contêm o chave privada do cliente, seu IP de túnel, DNS e os detalhes do servidor (chave pública, IP e porta).

Seguindo o exemplo, para o PC você poderia criar um arquivo mypc.conf em /etc/wireguard/:

nano mypc.conf

e escreva algo semelhante a:


PrivateKey = <clave_privada_mipc>
Address = 10.30.0.2/32
DNS = 8.8.8.8

Chave pública =
Ponto final = :51928
IPs permitidos = 0.0.0.0/0
Persistente Keepalive = 20

Esta seção descreve o lado do cliente: a chave privada do dispositivo, seu endereço IP na rede WireGuard e o servidor DNS que ele usará quando o túnel estiver ativo. O servidor é definido na seção `defines`, especificando... Sua chave pública, o endereço IP ou domínio através do qual você pode acessá-lo. e a porta que você configurou anteriormente (51928 neste exemplo).

Configurar AllowedIPs = 0.0.0.0/0 direciona todo o tráfego do cliente pela VPN (típico quando você deseja ocultar seu endereço IP real ou usar sempre o endereço IP do servidor). Se você quiser acessar apenas determinadas sub-redes remotas, pode limitar o acesso, por exemplo, a 10.30.0.0/24 ou 192.168.0.0/24, dependendo da topologia da sua rede.

O parâmetro PersistentKeepalive mantém uma pequena troca periódica de pacotes para evitar que a conexão seja fechada quando o cliente estiver atrás de um NAT ou firewalls que descartam conexões inativas. Um valor de 20 a 25 segundos geralmente funciona bem. para clientes móveis conectados por 4G/5G.

Configuração específica do cliente Android com WireGuard

Para Android, a abordagem é exatamente a mesma que para PC: o dispositivo móvel precisa de sua própria chave privada, que é atribuída a ele. São referenciados o endereço IP do túnel e a chave pública do servidor.Você pode gerar as chaves no próprio servidor (como fizemos antes) ou diretamente do aplicativo Android.

Seguindo o fluxo anterior, você já deve ter criado os arquivos `myphone_privatekey` e `myphone_publickey` em `/etc/wireguard/`. Você ainda precisa registrar a configuração do cliente, que será importada para o dispositivo móvel. Um exemplo de arquivo para Android seria:

nano myphone.conf

e por dentro:


PrivateKey = <clave_privada_mitelefono>
Address = 10.30.0.3/32
DNS = 8.8.8.8

Chave pública =
Ponto final = :51928
IPs permitidos = 0.0.0.0/0
Persistente Keepalive = 20

Esse arquivo contém tudo o que é necessário para o funcionamento do aplicativo oficial WireGuard no Android. Criar o túnel e negociar o handshake com o servidor.A parte complicada aqui é transferir esse arquivo para o telefone com segurança, evitando, tanto quanto possível, deixar rastros inseguros pelo caminho.

Em um ambiente de laboratório, você poderia configurar um servidor web (por exemplo, Apache), copiar o arquivo myphone.conf para o diretório raiz e baixá-lo pelo navegador do Android. No entanto, em um cenário real, é mais recomendável... Utilize métodos como USB, ferramentas de sincronização criptografadas ou, melhor ainda, um código QR. gerado pelo próprio servidor.

Para isso, você pode instalar o utilitário qrencode no servidor:

apt install -y qrencode

e, a partir do diretório de configuração, execute:

qrencode -t ansiutf8 -r myphone.conf

Esse comando exibirá um código QR em caracteres no terminal, que você poderá escanear. diretamente do aplicativo WireGuard no Android Utilize a opção para adicionar um novo túnel através da "Leitura do código QR". Dessa forma, você não precisa enviar o arquivo por e-mail nem carregá-lo em serviços externos.

Configuração de acesso remoto à LAN, DNS e nomes de domínio locais.

Além de criar o túnel básico, muitas vezes o que você deseja é poder acessar o conteúdo a partir do seu celular Android. dispositivos de LAN do servidor, como um NAS, uma câmera IP, um roteador ou um servidor interno, usando seus nomes de domínio locais em vez de memorizar endereços IP.

Alguns roteadores que funcionam como servidores WireGuard (por exemplo, certas marcas que integram um servidor VPN em seu firmware) possuem uma seção para gerenciar esses nomes locais. No painel de administração web, você geralmente encontrará opções como... REDE → DNS → Editar Hosts, a partir do qual você pode definir pares IP/nome (por exemplo, 192.168.1.50 nas-casa.local).

Se o seu roteador não estiver resolvendo domínios locais automaticamente de forma correta, você pode adicionar manualmente entradas para os dispositivos que deseja acessar pela VPN e aplicar as alterações. Isso garante que tanto o próprio roteador quanto os clientes que utilizam seu DNS consigam resolver o problema. resolver esses nomes internos corretamente.

Servidores WireGuard integrados em roteadores com diferentes versões de firmware geralmente possuem configurações específicas para permitir acesso remoto à LAN. Por exemplo, algumas interfaces oferecem opções chamadas "Permitir acesso remoto à sub-rede da LAN" ou "Acesso remoto à LAN" que devem ser habilitadas na seção de configuração do servidor WireGuard.

Habilitar esta opção torna o roteador e os dispositivos na rede local acessíveis através do túnel, permitindo que você os acesse a partir da rede do cliente (por exemplo, sua rede local secundária em casa ou rede móvel Android). os serviços internos do roteador do servidor e os equipamentos na LAN principal.

Em muitos casos, esses roteadores permitem exportar o perfil de configuração do WireGuard para uso em clientes externos. Na aba "Servidor WireGuard", geralmente é possível gerar um arquivo .conf que já inclui o endereço IP do túnel, o DNS correto (apontando para o endereço IP da interface de túnel do servidor) e todos os parâmetros necessários para conectar-se a partir de outro roteador cliente ou do aplicativo móvel.

Verificação, resolução de problemas e segurança no WireGuard.

Depois de configurar o túnel e importar a configuração para o Android, a primeira verificação é confirmar se o aperto de mão A conexão foi concluída com sucesso. O aplicativo WireGuard no seu dispositivo móvel exibirá o status do túnel e os registros de data e hora mais recentes do handshake.

No servidor, execute o seguinte comando:

wg

Isso mostrará, para cada par, a chave pública, o endereço IP do ponto de extremidade de onde está se conectando, o último handshake e os bytes transferidos. Se você observar que a última atividade está vazia ou muito antiga, provavelmente se trata do cliente. Pode ser que não esteja conectando, ou pode haver um problema com o firewall ou com o encaminhamento de portas..

Caso não haja conexão, verifique se a porta UDP configurada (por exemplo, 51928 ou 51820) está corretamente aberta no firewall do servidor e em quaisquer roteadores intermediários. Lembre-se de que, se o seu servidor estiver atrás de um roteador doméstico, você precisará... encaminhamento de porta da porta UDP do WireGuard para o endereço IP interno do servidor..

Se o túnel estiver ativo, mas você não tiver acesso à internet a partir do cliente, verifique se o encaminhamento de pacotes (net.ipv4.ip_forward e net.ipv6.conf.all.forwarding) está habilitado e se a regra NAT no iptables foi aplicada corretamente à interface de saída correta (eth0, ens3, etc.).

Os problemas de DNS geralmente se manifestam quando você consegue pingar IPs específicos, mas não resolvendo nomes de domínioNesse caso, verifique se no arquivo de configuração do cliente (Android, PC, roteador do cliente) o campo DNS aponta para o servidor correto: pode ser um DNS público (8.8.8.8, 1.1.1.1) ou o IP do túnel do servidor, caso queira que ele também funcione como um resolvedor.

Em termos de segurança, além da robustez criptográfica do protocolo, o seguinte é fundamental:

  • Proteja as chaves privadas. e nunca os compartilhe.
  • Restrinja ao máximo o IPs permitidos de cada par para que tenham acesso apenas ao que for estritamente necessário.
  • Utilize portas UDP não padronizadas para reduzir o ruído proveniente de scanners automáticos.
  • Mantenha o sistema e, claro, o próprio WireGuard atualizados.
  • Aplicar regras de firewall adicionais a limitar quem pode acessar a porta WireGuard no seu servidor.

Todo esse conjunto de medidas torna sua VPN com WireGuard não apenas rápida e funcional, mas também robusta contra ataques comuns que exploram configurações incorretas ou descuido no gerenciamento de chaves.

Com todos esses passos, você terá um servidor WireGuard configurado corretamente, com acesso remoto a partir de Android e outros sistemas, tráfego criptografado, capacidade total de navegação por túnel e a possibilidade de acessar seus dispositivos domésticos ou do escritório usando nomes de domínio internos; em resumo, uma maneira bastante elegante de Leve sua rede com você aonde quer que vá. Sem precisar quebrar a cabeça.

Abra o aplicativo VPN no smartphone
Artigo relacionado:
VPNs mais seguras para dispositivos Android

Você também pode se interessar por:
Como remover vírus no Android
Siga-nos no Google Notícias