
O WS4W é um aplicativo de desktop que permite executar e gerenciar um ponto final do Wireguard Server no Windows.
Inspirado na postagem de Henry Chang, como configurar o Wireguard VPN Server no Windows, meu objetivo era criar um aplicativo que automatizasse e simplificasse muitas das etapas complexas. Embora ainda não seja uma solução plug-and-play, a idéia é poder executar cada uma das etapas pré-requisitos, uma a um, sem executar scripts, modificar o registro ou entrar no painel de controle.
A versão mais recente está disponível aqui. Baixe o instalador e execute.
NOTA : O aplicativo solicitará que seja executado como administrador. Devido a toda a finalização do registro, Windows Services, WG.EXE Chamadas etc., é mais fácil executar todo o aplicativo elevado.
Antes de apresentar um instalador, o WS4W foi distribuído como um aplicativo portátil. As versões portáteis (1.5.2 e anterior) não têm caminho de atualização automática para a versão do instalador. Para atualizar, basta excluir a versão portátil baixada e baixar o instalador. Nenhuma definição de configuração será perdida.
Abaixo estão as tarefas que podem ser executadas automaticamente usando este aplicativo.

Esta etapa faz o download e executa a versão mais recente do Wireguard para Windows em https://download.wireguard.com/windows-client/wireguard-installer.exe. Uma vez instalado, ele também pode ser desinstalado diretamente do WS4W.

Aqui você pode configurar o terminal do servidor. Consulte a documentação do Wireguard para obter o significado de cada um desses campos. A chave privada e a chave pública são geradas chamando wg genkey e wg pubkey [private key] , respectivamente. (Você pode opcionalmente fornecer sua própria chave privada.)
Nota : É importante que o intervalo de rede do servidor não entre em conflito com o endereço IP do sistema host ou o intervalo de rede LAN.
Além de criar/usar o arquivo de configuração para o terminal do servidor, a edição da configuração do servidor também atualizará o valor do registro ScopeAddress (em HKLMSYSTEMCurrentControlSetServicesSharedAccessParameters ). Este é o endereço IP usado para o adaptador Wireguard ao usar o recurso de compartilhamento da Internet (explicado aqui). Assim, a propriedade de endereço da configuração do servidor serve para determinar os endereços permitidos para os clientes, bem como o IP que o Windows atribuirá ao adaptador Wireguard ao executar o compartilhamento da Internet. NOTA O endereço IP é capturado no ScopeAddress no momento em que o compartilhamento da Internet é executado pela primeira vez. Isso significa que, se o endereço IP do servidor for alterado na configuração (e, portanto, o valor do registro ScopeAddress for atualizado), a interface Wireguard não refletirá mais com precisão o IP do servidor desejado. Portanto, o WS4W solicitará novamente a Internet. Se cancelado, o compartilhamento da Internet será desativado e deverá ser reativado manualmente.
IMPORTANTE : Você deve configurar o encaminhamento da porta no seu roteador. Encaminhe todo o tráfego UDP destinado à sua porta de extremidade do servidor (padrão
51820) para o IP da LAN do seu servidor. Todo roteador é diferente, por isso é difícil fornecer orientações específicas aqui. Como exemplo, aqui está a aparência da regra de encaminhamento da porta em um roteador de gateway da Verizon Quantum.
Você deve definir a propriedade de endpoint para seu endereço público IPv4, IPv6 ou domínio, seguido de qualquer porta que você tenha encaminhado. O botão Detect Public IP Address tentará detectar seu endereço público automaticamente usando a API ipify.org. No entanto, se possível, é recomendável que você use um nome de domínio com o DDNS. Dessa forma, se o seu endereço IP público for alterado, seus clientes poderão encontrar o terminal do servidor sem reconfiguração.

Aqui você pode configurar o (s) cliente (s). O endereço pode ser inserido manualmente ou calculado com base no intervalo de rede do servidor. Por exemplo, se a rede do servidor for 10.253.0.0/24 , a configuração do cliente poderá determinar que 10.253.0.2 é um endereço válido. Observe que o primeiro endereço no intervalo (neste exemplo, 10.253.0.1 ) é reservado para o servidor. O DNS é opcional, mas recomendado. Você pode adicionar domínios de pesquisa DNS (também conhecidos como sufixos DNS, leia mais). Por fim, a chave privada, a chave pública e a chave pré -compartilhada são geradas usando wg genkey , wg pubkey [private key] e wg genpsk . (Você pode especificar sua própria chave privada. As chaves pré-compartilhadas são opcionais, geradas exclusivamente por cliente e compartilhadas com a configuração do servidor. Consulte #34 para obter mais informações.)
Devido a um pouco de uma peculiaridade no Wireguard, se você removesse uma tecla pré -compartilhada do cliente e sincronize a configuração do servidor, o Wireguard ainda esperaria que o cliente se conectasse com um PSK. Portanto, o WS4W não permite limpar o campo de chave pré -compartilhado dos clientes. Em vez disso, exclua e recrie um cliente para remover o PSK.
Uma vez configurado, é fácil importar a configuração para o aplicativo cliente de escolha via código QR ou exportando o arquivo .conf .

Para segurança, talvez você não queira manter as chaves privadas dos clientes no servidor. Nesse caso, você pode limpar o campo de chave privado antes de salvar uma configuração do cliente. No entanto, há duas coisas a ter em mente.
Depois que o servidor e os clientes estiverem configurados, você poderá instalar o serviço de túnel, que cria uma nova interface de rede para Wireguard usando o comando wireguard /installtunnelservice . Após a instalação, o túnel também pode ser removido diretamente dentro do WS4W. Isso usa o comando wireguard /uninstalltunnelservice .
Depois de concluir esta etapa, os clientes do Wireguard devem poder chegar a realizar um aperto de mão bem -sucedido com o servidor.
Nota: Se a configuração do servidor for editada após a instalação do serviço de túnel, o serviço de túnel será atualizado automaticamente através do comando
wg syncconf(se a configuração do servidor recém -salva for válida). Isso também se aplica às configurações do cliente, as atualizações às quais geralmente fazem com que a configuração do servidor seja atualizada (por exemplo, se um novo cliente for adicionado, a configuração do servidor deve estar ciente desse novo par).
Mesmo após a instalação do serviço de túnel, alguns protocolos podem ser bloqueados. Recomenda -se alterar o perfil de rede para Private , o que facilita as restrições do Windows na rede.
Esta etapa também cria uma tarefa do Windows para tornar a rede privada automaticamente na inicialização. Você pode desativar a tarefa através do menu suspenso.
NOTA : Em um sistema em que a conexão compartilhada da Internet se origina de uma rede de domínio, essa etapa não é necessária, pois as interfaces Wireguard capturam o perfil da rede de domínio compartilhada.
A última etapa é permitir que as solicitações feitas pela interface Wireguard sejam roteadas para sua rede privada ou à Internet. Para fazer isso, a conexão do adaptador de rede "real" na máquina Windows deve ser compartilhada com o adaptador virtual Wireguard. Isso pode ser feito de duas maneiras.
A primeira opção está disponível apenas em alguns sistemas (veja mais abaixo). As segundas opções podem ser usadas conforme necessário, mas possuem algumas advertências (como, se a conexão com a Internet for compartilhada com o adaptador Wireguard, ela não poderá ser compartilhada com nenhum outro adaptador; consulte #18). Também houve vários problemas relatados com o compartilhamento da Internet; portanto, o roteamento NAT deve ser usado se disponível.
Essas opções são mutuamente exclusivas.
Aqui você pode criar uma regra de roteamento NAT na interface Wireguard para permitir que ela interaja com sua rede pública/privada. Especificamente, os seguintes comandos são chamados.
New-NetIPAddress é chamado no adaptador Wireguard para atribuir um IP estático no intervalo da propriedade de endereço da configuração do servidor.New-NetNat é chamado para criar uma nova regra NAT no adaptador Wireguard.New-NetIPAddress na inicialização.O roteamento NAT requer pelo menos o Windows 10, e a opção de ativar nem aparecerá no aplicativo nas versões mais antigas do Windows. No entanto, mesmo com o Windows 10, o roteamento NAT nem sempre funciona. Às vezes, é necessário ativar o Hyper-V, o que o aplicativo solicitará, mas isso também requer uma versão Pro ou superior (ou seja, não em casa) do Windows. Por fim, se o aplicativo não puder ativar o roteamento NAT, ele recomendará o uso de compartilhamento de conexões à Internet (abaixo). Consulte #30 para uma discussão completa sobre o suporte de roteamento NAT.

Se o roteamento NAT não estiver disponível, você poderá usar o compartilhamento da Internet para fornecer conexão de rede à interface Wireguard. Ao configurar esta opção, você pode selecionar qualquer um dos seus adaptadores de rede para compartilhar. Observe que provavelmente funcionará apenas para adaptadores cujo status está Connected e será útil apenas para adaptadores que fornecem acesso à Internet ou LAN. Ao escolher o adaptador para compartilhar, passe o mouse sobre o item de menu para obter mais detalhes, incluindo o endereço IP atribuído do adaptador, para determinar se é o que você deseja compartilhar.
Nota: Ao executar o compartilhamento da Internet, o adaptador Wireguard recebe um IP do valor do registro
ScopeAddress(sobHKLMSYSTEMCurrentControlSetServicesSharedAccessParameters). Este valor é definido automaticamente ao atualizar a propriedade de endereço da configuração do servidor. Veja mais aqui.
Existem problemas no Windows que fazem com que o compartilhamento da Internet fique desativado após uma reinicialização. Se o servidor Wireguard deve ser deixado sem vigilância, é recomendável permitir o compartilhamento persistente da Internet, para que nenhuma interação seja necessária após a reinicialização.
Ao ativar esse recurso, duas ações são executadas no Windows:
Internet Connection Sharing é alterado de Manual para Automatic .EnableRebootPersistConnection em HKLMSoftwareMicrosoftWindowsCurrentVersionSharedAccess é definido como 1 (é criado se não for encontrado).Mesmo com essas soluções alternativas, o compartilhamento da Internet pode ficar desativado após uma reinicialização. Portanto, mais uma ação é realizada. É criada uma tarefa programada que desativa e reerena compartilhamento da Internet usando a CLI WS4W na inicialização do sistema. Isso deve ser suficiente para garantir que o compartilhamento permaneça ativado.

Depois que o túnel é instalado, o status da interface Wireguard pode ser visualizado. Isso é realizado através do comando wg show . Ele será atualizado continuamente desde que Update Live seja verificada.
Definir atraso na tarefa de inicialização
Essa configuração permite a configuração de um atraso para tarefas de inicialização. Isso pode ser útil para tarefas que dependem dos adaptadores que demoram a carregar. Observe que as tarefas devem ser desativadas e reativadas após a alteração desse valor.

Há também um CLI incluído no download portátil chamado ws4w.exe que pode ser invocado de um terminal ou chamado de um script. Além das mensagens gravadas para o Standard Out, a CLI também definirá o código de saída com base no sucesso da execução do comando fornecido. No PowerShell, por exemplo, o código de saída pode ser impresso com echo $lastexitcode .
Nota : A CLI também deve ser executada como administrador pelos mesmos motivos acima.
A CLI usa verbos ou comandos de nível superior, cada um dos quais tem seu próprio conjunto de opções. Você pode executar ws4w.exe --help para obter uma lista de todos os verbos ou ws4w.exe verb --help para ver a lista de opções para um verbo específico.
ws4w.exe restartinternetsharing [--network <NETWORK_TO_SHARE>]--network pode ser passada para especificar qual rede WS4W deve compartilhar.--network seja aprovada).--network deve ser passada para especificar.--network deverá ser aprovada, caso contrário, não há como saber qual rede compartilhar.Este comando é usado pela tarefa programada que é criada quando o compartilhamento persistente da Internet está ativado.
ws4w.exe setpathPATH do sistema.Este comando é usado pelo instalador quando a opção "Add CLI to Path" é selecionada.
ws4w.exe setnetipaddress --serverdatapath <PATH_TO_SERVER_CONFIG>Set-NetIPAddress na interface Wireguard, usando o endereço de rede, conforme definido no arquivo de configuração do servidor Wireguard fornecido.Este comando é usado pela tarefa agendada criada quando o roteamento NAT está ativado.
ws4w.exe privatenetworkEste comando é usado pela tarefa do Windows criada quando a rede privada está ativada.
Primeiro, é recomendável usar o roteamento NAT, se disponível.
No entanto, se você experimentar a seguinte mensagem de erro ao ativar o compartilhamento da Internet, execute as seguintes etapas manuais.

wg_server .NOTA: Esse problema é frequentemente acionado após a criação de uma nova opção virtual para uma VM. A solução alternativa manual só deve ser necessária uma vez depois disso e não afeta o interruptor virtual.
O WS4W foi testado e é conhecido por funcionar no Windows Server (2012 R2 e mais recente) e Windows Desktop (10 e mais recente).
Wireguard é uma marca registrada de Jason A. Donenfeld.
Ícone feito por Freepik em www.flicton.com.