OPNsense
The simplest way to deploy Wireguard is to use the built-in feature of your router. For OPNsense, it’s as simple as:
- Create an Instance
- Create a Peer and Enable Wireguard
- Add a WAN Rule
- Add a Wireguard Interface Rule
Configuration
Create an Instance
This is your server. Even though in wireguard all systems are considered peers, this is the system that is going to stay up all the time and accept connections, so it’s safe to think of it as ’the server'.
Navigate to:
VPN -> Wiregurad -> Instances
Click the +
button on the right to add an instance. You can leave everything at the default except for:
- Name # This can be anything you want, such as ‘Home’ or ‘Instance-1’
- Public Key # Click the gear icon to generate keys
- Listen Port # You’ll need to choose one, or it will somewhat unpredictable
- Tunnel Address # Pick an IP range that you’re not using anywhere else
Save, but don’t click ‘Enable’ on the main screen yet.
Create a Peer
This is your phone or other enpoint that will be initiating the connection to the server. Navigate to:
VPN -> Wiregurad -> Peer Generator
It’s safe to leave everything at default except:
- Endpoint # This your WAN address or hostname and port. e.g. “my.cool.org:51820”
- Name # The thing connecting in, like “Allens-Phone”
If this is your first client, you may need to configure an IP. It’s safe to start one up from your server’s internal tunnel address, but don’t click the button for Store and generate next yet.
Copy the config box to a text file and get it to your client, or use the QR if you have a phone handy. Once you’ve saved the info, then click
“Store and generate next”
The GUI has automatically added the client to instance you created earlier, so at the bottom you can:
- Enable Wiregaurd
- Apply
(You can enable Wireguard at the bottom of any of these screens)
Add a WAN Rule
Firewall -> Rules -> WAN
Click ‘+’ to add a rule, and add
- Interface: WAN
- Protocol: UDP
- Destination Port Range: (other) 51820
Add a Wireguard Interface Rule
Wireguard works by creating a network interface and Opnsense helpfully adds that alongside the LAN and WAN interfaces. You’ll notice it actually creates a group and if you had other instances they will (probably) be included.
Simply click the ‘+’ button to add a rule and save without changing any of the defaults. This allows you to leave the tunnel and talk to things on the LAN.
Operation
At this point you can connect from the client. If you look in the details it should add a line about ‘Latest handshake’ after a few seconds. If not, you’ll have to troubleshoot as below.
Adding new clients is similar to the first one, just make sure to disable and enable the service or the new clients won’t get picked up.
https://docs.opnsense.org/manual/how-tos/wireguard-client.html#step-4-b-create-an-outbound-nat-rule
Notes
I used the official setup guide at https://docs.opnsense.org/manual/vpnet.html#wireguard and it has a few flaws.
Mostly, it describes a more complex setup than just a remote access. They note two steps:
- Create the server and peer
- Create the rules. Under Firewall –> Rules, add one under
- WAN
- WireGuard (Group)
The issue is that the second category isn’t visible right away. Once it is, you can use the group, not the IP address. It’s unclear why the docs point you away from that.
Then I had to reboot to get it to work, which is very odd.
This turns out to be a general issue when you add a client and the service is already active. You can’t restart the service, you must disable and re-enable the service from the wireguard sub page
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.