blog: WireGuard with NetworkManager
parent
45c1c98151
commit
12ccaab26c
|
@ -0,0 +1,54 @@
|
||||||
|
+++
|
||||||
|
title = 'WireGuard with NetworkManager'
|
||||||
|
date = 2022-04-23T10:51:05-05:00
|
||||||
|
+++
|
||||||
|
|
||||||
|
Since [NetworkManager] added support for managing WireGuard interfaces, I have
|
||||||
|
been using it on my laptop to provide a simple point-and-click interface for
|
||||||
|
connecting to my home VPN while away. Unfortunately, it has some quirky
|
||||||
|
behavior. For example, when I put my computer to sleep, the WLAN interface
|
||||||
|
disconnects, but the WireGuard interface does not. This causes a bunch of
|
||||||
|
network problems when I wake the computer. To work around this, I put this
|
||||||
|
script in `/usr/lib/systemd/system-sleep/`:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
nmcli -t connection show --active \
|
||||||
|
| awk -F: '$3=="wireguard"{print $2}' \
|
||||||
|
| xargs -r -n1 nmcli connection down
|
||||||
|
```
|
||||||
|
|
||||||
|
This script takes down any active any WireGuard connections before the system
|
||||||
|
goes to sleep.
|
||||||
|
|
||||||
|
I believe this problem stems from the fact that I want to route all traffic
|
||||||
|
over the VPN as long as it is connected. To accomplish this, I configured the
|
||||||
|
WireGuard connection to define the default gateway. Unfortunately,
|
||||||
|
NetworkManager does not seem to handle this very well, and it ends up
|
||||||
|
configuring the routing table to route the WireGuard traffic over the
|
||||||
|
WireGuard tunnel. I imagine if I can figure out how to get this working
|
||||||
|
correctly, I will not need the system-sleep script.
|
||||||
|
|
||||||
|
[NetworkManager]: https://developer-old.gnome.org/NetworkManager/stable/NetworkManager.html
|
||||||
|
[WireGuard]: https://www.wireguard.com/
|
||||||
|
|
||||||
|
**UPDATE**: While writing this post, I decided to try again to figure out why
|
||||||
|
routing all traffic over the WireGuard interface wasn't working. Lo and
|
||||||
|
behold, I found some information about this specific problem in the
|
||||||
|
NetworkManager Blog: [Routing All Your Traffic]. I was able to fix the issue
|
||||||
|
by changing a few of the connection settings:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
nmcli connection modify Pyrocufflink \
|
||||||
|
ipv4.gateway '' \
|
||||||
|
wireguard.peer-routes yes \
|
||||||
|
wireguard.ip4-auto-default-route yes
|
||||||
|
```
|
||||||
|
|
||||||
|
This disables setting an explicit default gateway and enables receiving routes
|
||||||
|
from the WireGuard peer. NetworkManager puts these routes into a different
|
||||||
|
routing table and correctly configures all traffic except WireGuard itself to
|
||||||
|
be routed over the WireGuard tunnel.
|
||||||
|
|
||||||
|
[Routing All Your Traffic]: https://blogs.gnome.org/thaller/2019/03/15/wireguard-in-networkmanager/#routing-all-your-traffic
|
Loading…
Reference in New Issue