The posted script works for me, Xubuntu 20.04 kernel 5.4.0-38-generic x86_64. The first time I ran it, it deleted both [wg-crypt-wg0] instances but left one kworker process: [kworker/0:0-wg-crypt-wg0]. I then ran it again and no wg kernel processes were left.

regards,

John

On 30/12/2020 08:19, Fatih USTA wrote:
Hi

I'm playing wireguard with the namespace. I think I caught a litle problem.

If I delete netns directly, everything is removed, but wg-crypt-wg0 process is still alive.

root      8127  0.0  0.0      0     0 ?        S<   07:26 0:00 [wg-crypt-wg0]
root      8143  0.0  0.0      0     0 ?        S<   07:26 0:00 [wg-crypt-wg0]
root      8449  0.0  0.0      0     0 ?        S<   07:26 0:00 [wg-crypt-wg0]
root      8454  0.0  0.0      0     0 ?        S<   07:26 0:00 [wg-crypt-wg0]

If I delete first wireguard interface from the netns, everthing works fine.

wg_version:        1.0.20201221
kernel_version:       3.16.85-1

#!/bin/bash

case $1 in
     remove)
         ip link del dev bridge0 || { echo "Please add first."; exit 1; }
         ip link del dev veth1
         ip link del dev veth2
         #ip netns exec ns1 ip link del dev wg0
         #ip netns exec ns2 ip link del dev wg0
         ip netns del ns1
         ip netns del ns2
         iptables -D FORWARD -i bridge0 -o bridge0 -j ACCEPT
        rm -f /tmp/private-ns1 /tmp/private-ns2 /tmp/public-ns1 /tmp/public-ns2
     ;;
     add)
        ip link add name bridge0 type bridge || { echo "Please remove first."; exit 1; }
         ip link set dev bridge0 up

         ip netns add ns1
         ip netns add ns2
         ip link add name veth1 type veth peer name eth0 netns ns1
         ip link add name veth2 type veth peer name eth0 netns ns2
         ip link set dev veth1 up master bridge0
         ip link set dev veth2 up master bridge0

         ip netns exec ns1 ip link set dev lo up
         ip netns exec ns1 ip link set dev eth0 up
         ip netns exec ns1 ip addr add 10.150.150.1/24 dev eth0

         ip netns exec ns2 ip link set dev lo up
         ip netns exec ns2 ip link set dev eth0 up
         ip netns exec ns2 ip addr add 10.150.150.2/24 dev eth0

         ( umask 0077;
           wg genkey | \
           tee /tmp/private-ns1 | \
           wg pubkey > /tmp/public-ns1

           wg genkey | \
           tee /tmp/private-ns2 | \
           wg pubkey > /tmp/public-ns2
         )

         ip netns exec ns1 ip link add name wg0 type wireguard
         ip netns exec ns1 ip addr add 172.16.1.1/24 dev wg0

         ip netns exec ns2 ip link add name wg0 type wireguard
         ip netns exec ns2 ip addr add 172.16.1.2/24 dev wg0

        ip netns exec ns1 wg set wg0 private-key /tmp/private-ns1 listen-port 51820
         ip netns exec ns1 ip link set wg0 up

        ip netns exec ns2 wg set wg0 private-key /tmp/private-ns2 listen-port 51820
         ip netns exec ns2 ip link set wg0 up

        ip netns exec ns1 wg set wg0 peer "$(</tmp/public-ns2)" allowed-ips 172.16.1.0/24 endpoint 10.150.150.2:51820         ip netns exec ns2 wg set wg0 peer "$(</tmp/public-ns1)" allowed-ips 172.16.1.0/24 endpoint 10.150.150.1:51820

         iptables -I FORWARD -i bridge0 -o bridge0 -j ACCEPT

         ip netns exec ns1 wg
         ip netns exec ns2 wg
         ip netns exec ns1 ping -i 0.3 -c 2 172.16.1.2 &>/dev/null && \
                           echo -e "\n\nWorked" || \
                           echo -e "\n\nFailed"
     ;;
     *)echo "$(basename $0) add|remove" ;;
esac


Reply via email to