wireguard.lists.zx2c4.com archive mirror
 help / color / mirror / Atom feed
* Error with wg-quick down when IPv6 not present
@ 2019-09-25  1:06 Brassy Panache
  2019-09-25  9:25 ` Jason A. Donenfeld
  0 siblings, 1 reply; 3+ messages in thread
From: Brassy Panache @ 2019-09-25  1:06 UTC (permalink / raw)
  To: wireguard


[-- Attachment #1.1: Type: text/plain, Size: 1117 bytes --]

I have a kernel without IPv6 support.  I've noticed when running:

$ wg-quick down vpn


I receive the following errors:

[#] ip -4 rule delete table 51820
[#] ip -4 rule delete table main suppress_prefixlength 0
RTNETLINK answers: Address family not supported by protocol
Dump terminated
RTNETLINK answers: Address family not supported by protocol
Dump terminated
[#] ip link delete dev vpn
[#] resolvconf -d vpn -f


This is caused by the assumption that the command:

$ ip -6 rule show


will run on the system.  I have made a change to my local wg-quick script
which first tests if the command runs successfully before it clears the
rules.  The same should probably also be done prior to running the IPv4
version of the command.

An alternate approach could also be to check that IPv6 is available in the
running kernel, but there didn't seem to be a reliable cross-platform
mechanism to do that [0].

In any case, I have attached a patch which I am running locally to avoid
these spurious errors.

[0]:
https://stackoverflow.com/questions/39983121/how-to-detect-if-system-has-ipv6-enabled-in-a-unix-shell-script

[-- Attachment #1.2: Type: text/html, Size: 1743 bytes --]

[-- Attachment #2: patch --]
[-- Type: application/octet-stream, Size: 927 bytes --]

--- /tmp/wg-quick	2019-09-25 10:43:18.851033088 +1000
+++ /usr/bin/wg-quick	2019-09-25 10:45:12.839833715 +1000
@@ -102,12 +102,14 @@
 		while [[ $(ip -4 rule show) == *"from all lookup main suppress_prefixlength 0"* ]]; do
 			cmd ip -4 rule delete table main suppress_prefixlength 0
 		done
-		while [[ $(ip -6 rule show) == *"lookup $table"* ]]; do
-			cmd ip -6 rule delete table $table
-		done
-		while [[ $(ip -6 rule show) == *"from all lookup main suppress_prefixlength 0"* ]]; do
-			cmd ip -6 rule delete table main suppress_prefixlength 0
-		done
+		if ip -6 rule show &>/dev/null 2>&1 ; then
+			while [[ $(ip -6 rule show) == *"lookup $table"* ]]; do
+				cmd ip -6 rule delete table $table
+			done
+			while [[ $(ip -6 rule show) == *"from all lookup main suppress_prefixlength 0"* ]]; do
+				cmd ip -6 rule delete table main suppress_prefixlength 0
+			done
+		fi
 	fi
 	cmd ip link delete dev "$INTERFACE"
 }

[-- Attachment #3: Type: text/plain, Size: 148 bytes --]

_______________________________________________
WireGuard mailing list
WireGuard@lists.zx2c4.com
https://lists.zx2c4.com/mailman/listinfo/wireguard

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Error with wg-quick down when IPv6 not present
  2019-09-25  1:06 Error with wg-quick down when IPv6 not present Brassy Panache
@ 2019-09-25  9:25 ` Jason A. Donenfeld
  2019-09-25  9:30   ` Brassy Panache
  0 siblings, 1 reply; 3+ messages in thread
From: Jason A. Donenfeld @ 2019-09-25  9:25 UTC (permalink / raw)
  To: Brassy Panache; +Cc: wireguard

On Wed, Sep 25, 2019 at 11:06:18AM +1000, Brassy Panache wrote:
> I have a kernel without IPv6 support.  I've noticed when running:
> 
> $ wg-quick down vpn
> 
> 
> I receive the following errors:
> 
> [#] ip -4 rule delete table 51820
> [#] ip -4 rule delete table main suppress_prefixlength 0
> RTNETLINK answers: Address family not supported by protocol
> Dump terminated
> RTNETLINK answers: Address family not supported by protocol
> Dump terminated
> [#] ip link delete dev vpn
> [#] resolvconf -d vpn -f
> 
> 
> This is caused by the assumption that the command:
> 
> $ ip -6 rule show
> 
> 
> will run on the system.  I have made a change to my local wg-quick script
> which first tests if the command runs successfully before it clears the
> rules.  The same should probably also be done prior to running the IPv4
> version of the command.

Would this work?

diff --git a/src/tools/wg-quick/linux.bash b/src/tools/wg-quick/linux.bash
index e690944d..612ecd77 100755
--- a/src/tools/wg-quick/linux.bash
+++ b/src/tools/wg-quick/linux.bash
@@ -102,10 +102,10 @@ del_if() {
 		while [[ $(ip -4 rule show) == *"from all lookup main suppress_prefixlength 0"* ]]; do
 			cmd ip -4 rule delete table main suppress_prefixlength 0
 		done
-		while [[ $(ip -6 rule show) == *"lookup $table"* ]]; do
+		while [[ $(ip -6 rule show 2>/dev/null) == *"lookup $table"* ]]; do
 			cmd ip -6 rule delete table $table
 		done
-		while [[ $(ip -6 rule show) == *"from all lookup main suppress_prefixlength 0"* ]]; do
+		while [[ $(ip -6 rule show 2>/dev/null) == *"from all lookup main suppress_prefixlength 0"* ]]; do
 			cmd ip -6 rule delete table main suppress_prefixlength 0
 		done
 	fi

_______________________________________________
WireGuard mailing list
WireGuard@lists.zx2c4.com
https://lists.zx2c4.com/mailman/listinfo/wireguard

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: Error with wg-quick down when IPv6 not present
  2019-09-25  9:25 ` Jason A. Donenfeld
@ 2019-09-25  9:30   ` Brassy Panache
  0 siblings, 0 replies; 3+ messages in thread
From: Brassy Panache @ 2019-09-25  9:30 UTC (permalink / raw)
  To: Jason A. Donenfeld; +Cc: wireguard


[-- Attachment #1.1: Type: text/plain, Size: 2193 bytes --]

I've just tested your patch and that works!  I no longer see the errors.  I
don't have a IPv6 environment to test with at the moment, so I cannot
verify that case.

On Wed, Sep 25, 2019 at 7:25 PM Jason A. Donenfeld <Jason@zx2c4.com> wrote:

> On Wed, Sep 25, 2019 at 11:06:18AM +1000, Brassy Panache wrote:
> > I have a kernel without IPv6 support.  I've noticed when running:
> >
> > $ wg-quick down vpn
> >
> >
> > I receive the following errors:
> >
> > [#] ip -4 rule delete table 51820
> > [#] ip -4 rule delete table main suppress_prefixlength 0
> > RTNETLINK answers: Address family not supported by protocol
> > Dump terminated
> > RTNETLINK answers: Address family not supported by protocol
> > Dump terminated
> > [#] ip link delete dev vpn
> > [#] resolvconf -d vpn -f
> >
> >
> > This is caused by the assumption that the command:
> >
> > $ ip -6 rule show
> >
> >
> > will run on the system.  I have made a change to my local wg-quick script
> > which first tests if the command runs successfully before it clears the
> > rules.  The same should probably also be done prior to running the IPv4
> > version of the command.
>
> Would this work?
>
> diff --git a/src/tools/wg-quick/linux.bash b/src/tools/wg-quick/linux.bash
> index e690944d..612ecd77 100755
> --- a/src/tools/wg-quick/linux.bash
> +++ b/src/tools/wg-quick/linux.bash
> @@ -102,10 +102,10 @@ del_if() {
>                 while [[ $(ip -4 rule show) == *"from all lookup main
> suppress_prefixlength 0"* ]]; do
>                         cmd ip -4 rule delete table main
> suppress_prefixlength 0
>                 done
> -               while [[ $(ip -6 rule show) == *"lookup $table"* ]]; do
> +               while [[ $(ip -6 rule show 2>/dev/null) == *"lookup
> $table"* ]]; do
>                         cmd ip -6 rule delete table $table
>                 done
> -               while [[ $(ip -6 rule show) == *"from all lookup main
> suppress_prefixlength 0"* ]]; do
> +               while [[ $(ip -6 rule show 2>/dev/null) == *"from all
> lookup main suppress_prefixlength 0"* ]]; do
>                         cmd ip -6 rule delete table main
> suppress_prefixlength 0
>                 done
>         fi
>
>

[-- Attachment #1.2: Type: text/html, Size: 2865 bytes --]

[-- Attachment #2: Type: text/plain, Size: 148 bytes --]

_______________________________________________
WireGuard mailing list
WireGuard@lists.zx2c4.com
https://lists.zx2c4.com/mailman/listinfo/wireguard

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2019-11-27  9:06 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-09-25  1:06 Error with wg-quick down when IPv6 not present Brassy Panache
2019-09-25  9:25 ` Jason A. Donenfeld
2019-09-25  9:30   ` Brassy Panache

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).