WireGuard site-to-site pfsense-to-pfsense no handshake?
-
Updated documentation is something we are working on
-
@yazur I will try to do my best to sum it up :)
- Create a tunnel, on Site 1 and Site 2, eg change the port number if you do not like the default value, generate the keys for the site, it follows the setup as below.
- Assign the interface (eg tun_wg0) and set a static IP, this is the tunnel network, set the MTU to 1420, see settings below, i use the subnet 192.168.77.0/24 in this exampel.
- Set a firewall rule (UDP) to allow traffic on the WAN interface to the Wireguard tunnel port. (eg UDP port 51820 to WAN address on the WAN interface) (And no it is not a NAT rule (Port forward))
- Set the needed firewall rules for WireGuard and the WireGuard interface WG
- Add the peers, on both sites, where the public key for the peer is the opposite sites public tunnel key. At least one of the peers shall have an endpoint, the opposite can be dynamic. So the site that have and public IP, can have its peers to be dynamic, we can call that site the server (the site with an public IP) and the other sites for clientes (those eg behind a CGNAT) if you like. Also add Allowed IPs here, you will need to add the LAN IP and the tunnel IP subnets
- Add the gateway, with the opposite sites tunnel IP.
- The gateway should come online at this point and the handshake should now be green-
- Now set the need static route on both sites
Tunnel - Site 1
Tunnel: tun_wg0 (Site 1)
Public key: PK1Peer - Site 1
Tunnel: tun_wg0 (Site 1)
Endpoint: Dynamic
Public Key: PK2
Allowed IPs: <LAN Subnet of Site 2>
Allowed IPs: 192.168.77.0/24Interface - Site 1
Description: WG
IPv4: Static IPv4
MTU: 1420
IPv4 Address: 192.168.77.1/24Gateway- Site 1
Interface: WG
Name: WG_Gateway
IPv4 Address: 192.168.77.2Tunnel - Site 2
Tunnel: tun_wg0 (Site 2)
Public key: PK2Peer - Site 2
Tunnel: tun_wg0 (Site 2)
Endpoint: <Public IP of Site 1>
Public Key: PK1
Allowed IPs: <LAN Subnet of Site 2>
Allowed IPs: 192.168.77.0/24Interface - Site 2
Description: WG
IPv4: Static IPv4
MTU: 1420
IPv4 Address: 192.168.77.2/24Gateway- Site 2
Interface: WG
Name: WG_Gateway
IPv4 Address: 192.168.77.1 -
@mikki-10 said in WireGuard site-to-site pfsense-to-pfsense no handshake?:
Peer - Site 2
Tunnel: tun_wg0 (Site 2)
Endpoint: <Public IP of Site 1>
Public Key: PK1
Allowed IPs: <LAN Subnet of Site 2>
Allowed IPs: 192.168.77.0/24I made a small mistanke, and can not edit my post?
Allowed IPs: <LAN Subnet of Site 2> should be <LAN Subnet of Site 1>Peer - Site 2
Tunnel: tun_wg0 (Site 2)
Endpoint: <Public IP of Site 1>
Public Key: PK1
Allowed IPs: <LAN Subnet of Site 1>
Allowed IPs: 192.168.77.0/24 -
wow your nice guys
every thing was already said in all the post for a pfsense user to do their jobs !
reposting all the procedure was kind of useless but friendly :)
have a nice one bro
-
Thank you for this summary!
I hope it helps other people too :)! -
That’s for the tutorial. I was following a German dude tutorial on YouTube and setting gateways for site 1 the site 1 ip and for site 2 the site 2 up. Result was losing handshake and pings after a few hours or randomly. Even with keep alive settings.
For now I reverted back to IPSec for site to site vpn as is more stable and easy to setup. Manual creation of static routes and gateways it’s as bit of pain if you’re on relatively big environment.
I know, I know… it’s experimental. Works great for mobile warriors though.
-
This was working fine on version 0.1.3. Updated to 0.1.5 and now I cannot access any of my peers subnet defined in static routing. I can ping from pfsense but pinging from any address on the lan subnet doesn’t work. Site one can’t ping site 2 and vice versa.
-
With hybrid nat the automatic nat rules for the WG interface look like a hot mess, especially if you have multiple interfaces. Anyone have examples of what it should look like?
-
What is your goal with the Outbound NAT change? It is not required for site-to-site.
If the goal is to change all traffic to the interface ip you can do that by setting to roules:
Interface: WG interface
Source: 127.0.0.0/8
Source port: *
Destination: * or what you need
Destination port: *
NAT Address WG address
NAT port: *
Static port: falseInterface: WG interface
Source: <Your LAN ip
Source port: *
Destination: * or what you need
Destination port: *
NAT Address WG address
NAT port: *
Static port: falseNot sure if this is what you are looking for?
-
After much hair pulling I finally made this work and stable.
You need to specify / create and assign he gateway to the WG Interface when you create it else you'll have or sort of routing issues
You also need to create static routes to the gateway with the subnets you want to access on the other side of the tunnel.Oh and the instructions above are wrong the Gateway ip needs to be the ip of tunnel on your side and not on the opposite side or it won't work.
Unfortunately then entire wireguard project seems to be quite secondary at this point for negate (they didn't even bothered updating the documents)... I know it's still experimental, but ok...
The developer is also never available never replies to anything in any of the platforms he mentions on his videos. He just ignores 99% of problems people are having (I hope they are not expecting us to start opening pointless stuff on redmi) -
Hi the use of the Gateway ip from the other side is not wrong, you do that with OpenVPN site to site as well when using layer 2 (TAP interface) and it give you the correct ping to the other side, and it helps keep the connection/session alive.
You do not need to do any NAT config if you follow the above.
Just remember to set the
MTU: 1420 and
MSS: 1420
That fix most problems. -
there is also a bug here that causes no handshake.
https://forum.netgate.com/topic/167279/wireguard-won-t-handshake-package-bug?_=1634581891833 -
This bug should be resolved in the latest version (0.1.5_2 and above). This package is available CE 2.5.2/2.6.0 and Plus 21.05.2/22.01. Give it a shot :)
-
@cmcdonald I don’t see any 0.1.5_2 update on my end
-
@bassopt hmmm, will check the builds. Thanks for checking
-
@bassopt Take another peak now, updated package should be available.