I wanted to change the mtu on a WireGuard interface. The setting "mtu_wg0" had no effect. Reproducible: Always Steps to Reproduce: 1. Configure wg0 as WireGuard interface in /etc/conf.d/net 2. Set mtu_wg0="1400" 3. start net.wg0 Actual Results: mtu is 1420 Expected Results: mtu is 1400 My config: config_wg0="fd23::10:1:3/64 10.23.10.13/16" wireguard_wg0="/etc/wireguard/wg0.conf" mtu_wg0="1400"
*** Bug 677940 has been marked as a duplicate of this bug. ***
I have the same issue on all of my Gentoo machines. Additionally, after a recent update (?) the MTU is no longer set correctly automatically, causing breakage. This means that every single time I boot any of my devices I have to log in as root and manually correct the MTU. From what I can tell, netifrc is attempting to set the MTU before the interface has even been created, suggesting that this is not a Wireguard bug, but rather a netifrc bug. Either way, it's a problem...
Does the workaround from bug 677940 work for you? It works for me with netifrc 0.7.3. postup() { case ${IFACE} in wg*) ip link set mtu 1400 dev ${IFACE} ;; esac }
Alternative solution that works for me is changing wireguard_depend() function in /lib/netifrc/net/wireguard to: wireguard_depend() { program /usr/bin/wg before interface }
Created attachment 892862 [details, diff] netifrc-wireguard-after-interface.patch (In reply to lmk from comment #4) > Alternative solution that works for me is changing wireguard_depend() > function in /lib/netifrc/net/wireguard to: > > wireguard_depend() > { > program /usr/bin/wg > before interface > } Thanks, I can confirm that this works, I added the attached patch to /etc/portage/patches/net-misc/netifrc. I would really like to know what the consequences of this change could be as I'm not familiar enough with netifrc's code.
Created attachment 893576 [details, diff] proposed patch From my understanding, the patch is correct. "interface" dependency in netifrc - is where ip address, mtu, etc. is being set up. So "wireguard" module should be sorted before it. Also it is unclear to me why interface is brought up in the module, instead of creating intface in wireguard_pre_up function, and it will be brought up later by init-script. I've added the modified patch, taking it into account.
The bug has been closed via the following commit(s): https://gitweb.gentoo.org/proj/netifrc.git/commit/?id=8bb61b90c1d791bafd5cd0b6c54093cccee425f4 commit 8bb61b90c1d791bafd5cd0b6c54093cccee425f4 Author: Alexander Zubkov <green@qrator.net> AuthorDate: 2024-05-23 14:56:42 +0000 Commit: Patrick McLean <chutzpah@gentoo.org> CommitDate: 2024-05-23 18:12:13 +0000 net/wireguard.sh: make wireguard module to run before interface Wireguard module was configured to run after interface module, that caused interface-related settings like mtu not to apply, because wireguard interfaces was not present by that time. It seems logical that wireguard module should be run before interface module. Credits to lmk <lmkrawiec@gmail.com> who proposed the solution and to Louis Sautier (sbraz) <sbraz@gentoo.org> who proposed the patch. Closes: https://bugs.gentoo.org/678184 Closes: https://github.com/gentoo/netifrc/pull/54 Signed-off-by: Louis Sautier (sbraz) <sbraz@gentoo.org> Signed-off-by: Alexander Zubkov <green@qrator.net> Signed-off-by: Patrick McLean <chutzpah@gentoo.org> net/wireguard.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)