Table of Contents

Alternate address

Based on my experiments with IPv6 prefix delegation and subnetting I determined a prefix to delegate to Steve. Steve has asked for a /64 delegation like the one I would get from him. The prefix became 1011, derived in this manner: My LAN (0019) is actually subnet 0 in the first level (/56), subnet 1 in the next level (/60) and subnet 9 in the third level (/64). So the 1011 is subnet 10 (first level), 1 second level and again 1 third level. The initial 10 could also be interpreted as subnet 1 in a /52 allocation and subnet 0 in the /56 allocation giving a total of four possible subnet levels.

Steve's configuration using 2a06:4000:8073:1011::/64

(basically excerpts from an email)

i) on the VPN router

  ip addr add dev br-lan 2a06:4000:8073:1011::2/64
  ip route add default from 2a06:4000:8073:1011::/64 dev tun2 metric 10    ===> for return traffic

ii) on Ictoan

  ip addr add br-lan 2a06:4000:8073:1011:202:12:89:12/64
  ip route add default from 2a06:4000:8073:1011::/64 via 2a06:4000:8073:1011::2  ===> for return traffic

a) on Vultrgate

  ip route add 2a06:4000:8073:1011::/64 via tun0
  ip route add 2001:44b8:5135:7c07::/64 dev wg0
  Add 2001:44b8:5135:7c07::/64 to Bent's peer "allowed-ips"

Bent's end 2001:44b8:5135:7c07::/64

gate-rpi

The basic IP commands are:

    ip addr add dev eth0 2001:44b8:5135:7c07::44/64
    ip route add default from 2001:44b8:5135:7c07::/64 dev wg0  metric 10    ===> for return traffic
    ip -6 route add 2a06:4000:8073:1011::/64 dev wg0 

Two of the three commands are easily transferred to Networkd configurations files but the one with 'default from' isn't. The solution chosen was to write a systemd service file for this. The service file is listed further down. Here is the configuration file for eth0:

#/etc/systemd/network/eth0.network
[Match]
Name=eth0

[Network]
Address=192.168.19.44/24
DNS=192.168.19.5
IPForward=yes
Address=2a06:4000:8073:19::44/64
Address=2001:44b8:5135:7c07::44/64
IPv6AcceptRA=yes

and for the tunnel interface (wg0):

#/etc/systemd/network/wg0.network
[Match]
Name=wg0

[Network]
Address=10.8.3.2/24
IPForward=yes

[Route]
#Gateway=10.8.3.1
Destination=2a06:4000:8073:1011::/6

Spot

Similarly the basic IP commands are:

    ip addr add dev enp2s0 2001:44b8:5135:7c07::5/64
    ip route add default from 2001:44b8:5135:7c07::/64 via 2001:44b8:5135:7c07::44 metric 10  ==> return traffic

The 'default from' entry is again handled by a service file. Configuration file for enp2s0:

[Match]
Name=enp2s0

[Network]
Address=192.168.19.5/24
Gateway=192.168.19.254
Address=2a06:4000:8073:19::5/64
DHCP=no
IPv6AcceptRA=yes

[Address]
Address=2001:44b8:5135:7c07::5/64
PreferredLifetime=0

(the PreferredLifetime=0 is there to prevent usein this address as source address for outgoing connections

Service script

#/etc/systemd/system/return-route.service
[Unit]
Description=Return route for IPv6 traffic
After=network-online.target

[Service]
ExecStart=/usr/bin/ip -6 route add default from 2001:44b8:5135:7c07::/64 via 2a06:4000:8073:19::44 dev enp2s0 metric 10
ExecStop=/usr/bin/ip -6 route del default from 2001:44b8:5135:7c07::/64 via 2a06:4000:8073:19::44 dev enp2s0 metric 10
Type=oneshot
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

This is the script from Spot. The one on gate-rpi is identical except for the interface name which is eth0 on gate-rpi. It doesn't have the 'via' part either.