From 9787d508064bc4ab6de70aed1a190beaea606e64 Mon Sep 17 00:00:00 2001 From: Ad Schellevis Date: Tue, 26 Sep 2023 20:55:17 +0200 Subject: [PATCH] net/wireguard - offer CARP vhid tracking support, closes https://github.com/opnsense/plugins/issues/3579 When the the selected vhid is in BACKUP or INIT mode, the wireguard interface in question will be set to "down", in which case communication stops and the new master may take over. The advantage of this strategy is that switching is relatively quick as only the interface flag need to be changed. --- net/wireguard/Makefile | 2 +- net/wireguard/pkg-descr | 4 ++ .../src/etc/rc.syshook.d/carp/20-wireguard | 3 + .../forms/dialogEditWireguardServer.xml | 7 +++ .../app/models/OPNsense/Wireguard/Server.xml | 5 ++ .../views/OPNsense/Wireguard/diagnostics.volt | 1 + .../scripts/Wireguard/wg-service-control.php | 58 +++++++++++++++++-- .../src/opnsense/scripts/Wireguard/wg_show.py | 8 +++ 8 files changed, 81 insertions(+), 7 deletions(-) create mode 100755 net/wireguard/src/etc/rc.syshook.d/carp/20-wireguard diff --git a/net/wireguard/Makefile b/net/wireguard/Makefile index 4092c7e06..4bbfb2247 100644 --- a/net/wireguard/Makefile +++ b/net/wireguard/Makefile @@ -1,5 +1,5 @@ PLUGIN_NAME= wireguard -PLUGIN_VERSION= 2.1 +PLUGIN_VERSION= 2.2 PLUGIN_COMMENT= WireGuard VPN service kernel implementation PLUGIN_DEPENDS= wireguard-kmod PLUGIN_CONFLICTS= wireguard-go diff --git a/net/wireguard/pkg-descr b/net/wireguard/pkg-descr index 97bd55ffc..1b9ba24a0 100644 --- a/net/wireguard/pkg-descr +++ b/net/wireguard/pkg-descr @@ -16,6 +16,10 @@ WWW: https://www.wireguard.com/ Changelog --------- +2.2 + +* add vhid (carp) tracking support + 2.1 * Only reload when interface configuration did not change diff --git a/net/wireguard/src/etc/rc.syshook.d/carp/20-wireguard b/net/wireguard/src/etc/rc.syshook.d/carp/20-wireguard new file mode 100755 index 000000000..d8337b6bf --- /dev/null +++ b/net/wireguard/src/etc/rc.syshook.d/carp/20-wireguard @@ -0,0 +1,3 @@ +#!/bin/sh + +configctl -dq wireguard configure \ No newline at end of file diff --git a/net/wireguard/src/opnsense/mvc/app/controllers/OPNsense/Wireguard/forms/dialogEditWireguardServer.xml b/net/wireguard/src/opnsense/mvc/app/controllers/OPNsense/Wireguard/forms/dialogEditWireguardServer.xml index eff1f9504..04bb1a71b 100644 --- a/net/wireguard/src/opnsense/mvc/app/controllers/OPNsense/Wireguard/forms/dialogEditWireguardServer.xml +++ b/net/wireguard/src/opnsense/mvc/app/controllers/OPNsense/Wireguard/forms/dialogEditWireguardServer.xml @@ -59,6 +59,13 @@ true List of addresses to configure on the tunnel adapter. Please use CIDR notation like 10.0.0.1/24. + + server.carp_depend_on + + dropdown + The carp VHID to depend on, when this virtual address is not in master state, + the instance will be shutdown. + server.peers diff --git a/net/wireguard/src/opnsense/mvc/app/models/OPNsense/Wireguard/Server.xml b/net/wireguard/src/opnsense/mvc/app/models/OPNsense/Wireguard/Server.xml index 1dfada39e..fe738e8af 100644 --- a/net/wireguard/src/opnsense/mvc/app/models/OPNsense/Wireguard/Server.xml +++ b/net/wireguard/src/opnsense/mvc/app/models/OPNsense/Wireguard/Server.xml @@ -59,6 +59,11 @@ N + + carp + N + mvc +