If you're having trouble setting up WireGuard or using it, the best place to get help is the #wireguard IRC channel on Libera.Chat. We also discuss development tasks there and plan the future of the project.
Please report any security issues to, and only to, secu...@wireguard.com. Do not send non-security-related issues to this email alias. Do not send security-related issues to different email addresses.
So I noticed there is no visible update feature built-in in Windows Wireguard app nor did I see any button "check for updates". Seems like the version 0.5.3 I have is already 2 years old (at least), but there is no new version available on the homepage! Seems like nobody works on the windows client anymore? That's not good because there are bugs in the UI like disappearing text in the tunnel editor or weirdly overwriting log rows in log viewer.
I have multiple computers (Win10 pro) placed at different remote locations (my partners) that I need to manage. I need to access them from a central location. So I have a central VPN server, and I want multiple Win10 pro instances to connect to it. I'm using L2TP, but I would like to migrate to wireguard. With L2TP, it is possible to start rasdial.exe in the background, from the task scheduler. The main goal is to start the tunnel as soon as the computer starts up, and automatically reconnect if the tunnel goes down. I need this BEFORE any user logs into the computer (e.g. in the background). I wonder if the same can be done with wireguard?
But I think it is for configuration only. I think it cannot be used to activate a tunnel. The original documentation ( -line-interface ) explains that "the interface can ... be activated with ifconfig(8) or ip-link(8)" but of course that works for unix only. In that documentation, there is another note "Non-Linux users will instead write wireguard-go wg0" but I'm not sure what they mean here. There is no program name "wireguard-go" anywhere. The network adapter for the tunnel only shows up in the network adatpter list when the tunnel is already active. E.g. there is no network adapter that I could "enable" or "activate" when the tunnel is down. Finally, there is wireguard.exe. When started without parameters, it is a GUI application. It cannot be run without a logged in user and a desktop, and it does not activate any tunnel automatically. It has some interesting command line options. "wireguard.exe /managerservice" is used to start it as a windows service. "wireguard.exe /tunnelservice CONFIG_PATH" looks promising, but I was not able to start that. I get this error, that "the process could not connect to the service manager" or something similar. (I also get this error when I start it as administrator.)
I can configure Wireguard to start when the user logs in, but I need it to start when windows boots as i am using the box as a headless server. However it seems wireguard doesnt work unless a user is logged in.
When you use wireguard.exe to import a tunnel from a .conf file, it will read it in, sanity-check it (mine failed because I accidentally hit the keyboard during copy/pasta, so it rejected the Base64 encoding), and then safely store it away in the DPAPI storage. You can then delete your original .conf file. Just do this, it's better.
OK so here's the bit that I only fully realised tonight: wireguard.exe is like wg-quick, but it also provides the interface into the Windows network stack and the Windows DPAPI storage of your sensitive conf files. You can't even run wg set without it, because wireguard.exe is even responsible for creating the IPC Server that interfaces with WinTun.
First post ever on this platform. Wanted to jump on here and ask about my setup. I have a Pfsense firewall running wireguard. I have the typical setup for a full tunnel configured in both pfsense and the client devices alike. When I access the internet everything works just fine. I have my firewall rules set so that I'm able to access various subnets and interfaces. However, I have a windows 11 pc on lets say interface 1 @ 10.x.x.x and a gateway @ 10.x.x.1. When I activate the wireguard tunnel I can ping the gateway (10.x.x.1) just fine. When I go to ping the windows host at 10.x.x.x I'm unable to do so. I'm unable to access this machine and want to be able to access my portainer instance outside of the house. I would switch to proxmox and or linux to run this but I do also want to use this server in particular for extra development work and as a remote gaming machine.
The things I've tried. First off I tested on my interface 2 @ 172.x.x.x and was able to ping the windows 11 machine successfully after setting up a firewall rule in advanced windows defender network settings and now can tell my pfsense firewall rules are working and that I'm able to establish a connection with this machine. I also tested out accessing portainer at its address and port. This is great .... when I'm home. The other issue I tried to rule out is the firewall settings. I have a interface 3 @ 100.x.x.x which is wireguards interface. I have the same rules for both interface 2 and interface 3 basically just a rule that allows interface 2 and 3 respectively to access interface 1. Completely lost and have a feeling this is a win11 issue.
Does anyone know why this might be happening? Do I need to setup a rule for the wireguard interface (theres an interface directly labeled wireguard in pfsense)? Is it a windows firewall issue that I haven't ever heard of?
I am writing an application in Go that will use WireGuard tunnels to communicate. I want to embed WireGuard within the application rather than install the separate WireGuard program. I understand that I can use wireguard.dll and tunnel.dll to embed in a general application. But given my app is also written in Go, is this still the right way to go? Or should I be calling go libraries from within the WireGuard-Windows program instead?
A WireGuard implementation for Windows already exists and can be found here, based on what Jason A Donenfeld, the creator of WireGuard, called "a generic TUN driver we developed called Wintun" and a cross-platform Go codebase called wireguard-go.
The WireGuardNT repository is full of warnings about "experimental, unfinished, work in progress... Do not use it!... a wheel or two are likely missing, in addition to, perhaps, the entire crankshaft." However, Donenfeld said that WireGuard for Windows (the official implementation using wireguard-go, as linked above) already includes WireGuardNT, as an optional alternative. He said he envisages three phases of deployment. Currently users have to set an ExperimentalKernelDriver registry key in order to use WireGuardNT. In phase two it will be on by default, but possible to disable, while in phase three, wireguard-go/Wintun will be removed.
Install WireGuard following the instructions for your distribution. Now, as root user, create the /etc/wireguard folder and prevent anyone but root to enter it (you only need to do this the first time):
The client configuration files are located in /etc/wireguard/configs and are only readable by the root user. After altering the file, pivpn -qr will generate QR code containing the altered value of AllowedIPs.
To make PiVPN generate split-tunnels by default, alter the value of ALLOWED_IPS variable in /etc/pivpn/wireguard/setupVars.conf instead. All profiles generated after the change will be of a split-tunnel type.
The WireGuard app must be separately installed. Alternatively WireGuard can be installed from Homebrew by running the command brew install wireguard-tools. Currently this is the only supported installation method, installing WireGuard from the app store will not work. To verify the installation is running check that the command wg-quick from the terminal does not return command not found.
Figured it out, The issue was that the DHCP of the server was passing a mask of 255.0.0.0 to all the clients.
This is incorrect. I did a manual static of a windows client with a mask of 255.255.255.0 and all worked.
Question: What is happening that the subnet of another class is stopping it from routing over Wireguard?
I installed wireguard after nordvpn using sudo apt install wireguard (I have ubuntu), wireguard commands work like wg --help but when you type in the command sudo wg show nordlynx private-key it gives me that unable to access protocol message, I tried running the command under su and bash to no success either
Good news guys eventually got my private key after installing Debian on a virtual machine then installing wireguard under root and installing nordvpn 3.3.0 under root, it now shows it as an interface in wireguard, so glad I got this working lol thanks for all the assistance guys
This is exciting, out of curiosity what are the performance differences you are seeing with wireguard vs ovpn on nordvpn? I tried re-creating your steps but failed miserably. So I am going to start again from scratch. Any chance you could put together the step by steps one would need to do to get this implemented correctly?
? Unofficial WireGuard Documentation: Setup, Usage, Configuration, and full example setups for VPNs supporting both servers & roaming clients. - GitHub - pirate/wireguard-docs: ? Unofficial Wir...
In your first post it shows your wifi network being in the 192.168.0.0/24 range too, if this is the same as a remote network, some unexpected things may happen. This is also going to involve how windows routes networks internally, and can get a lot more complicated.
Generally you should avoid using the same ip range if you plan on using VPN. Is it possible to set up a LAN on your router in a different ip range and try your laptop from that LAN?
This tutorial goes through the process of setting up a Wireguard server on Windows. Most Wireguard tutorials on the internet only give you the choice of hosting a server in a Linux environment. However, it is very possible to setup a windows server.
The Address field is the IP that the VPN client's network interface will occupy. It must not be already in use. A good candidate for this IP can be the value of your main network interface(found in ipconfig in your windows terminal), and you add 1 to the lastdigit, just to make it different (i.e. not used). For example, I have this for my wifiinterface I'm using on my windows machine:
df19127ead