Hi all,

I noticed strange behaviour with an IPSec tunnel set up with strongswan.
Discussing the issue on IRC, a strongswan developer suggested the issue
is due to a kernel bug and I should ask here.

The client connects to the server and is assigned an IPv6 address
from a pool. The remote traffic selector of the tunnel includes this
virtual IP so that multiple clients can communicate. However, when the
client tries to ping its own virtual IP, traffic goes over the tunnel
instead of via the loopback adapter (this shows in the TTL of the
packet, latency > 1ms and strongswan's traffic counters). If the virtual
IP addresses are IPv4, this issue does not occur. I'm running kernel
5.4.41 and strongswan 5.8.1. The output of relevant commands is included
below (IPs snipped), with more information including strongswan and
kernel config at [1].

On suggestion of strongswan developers, I tried to set
`net.ipv6.conf.lo.disable_policy=1`, this made no visible difference. Is
this a kernel bug, or other issue? I'm happy to help debug or test other
configurations.

Many thanks,
Kai

[1]: 
https://gist.github.com/kwohlfahrt/6db96db25e44ae208178335b2cdb9523/0d14b393d659c9adce6a8c925656dd6b90dc65e0

$ ip -6 addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN qlen 1000
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
3: wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
    inet6 fd01::3/128 scope global nodad
       valid_lft forever preferred_lft forever
    inet6 2a00::e4df/64 scope global dynamic mngtmpaddr noprefixroute
       valid_lft 315359984sec preferred_lft 315359984sec
    inet6 fdaa::e4df/64 scope global mngtmpaddr noprefixroute
       valid_lft forever preferred_lft forever
    inet6 fe80::e4df/64 scope link
       valid_lft forever preferred_lft forever

$ ping -c3 fd01::3
PING fd01::3(fd01::3) 56 data bytes
64 bytes from fd01:: icmp_seq=1 ttl=63 time=306 ms
64 bytes from fd01:: icmp_seq=2 ttl=63 time=6.64 ms
64 bytes from fd01:: icmp_seq=3 ttl=63 time=8.02 ms

--- fd01::3 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 6.636/106.842/305.875/140.738 ms

$ ip -6 route show table all
fd01::/64 via 2a00::280e dev wlp3s0 table 220 proto static src fd01::3 metric 
1024 pref medium
fdaa:::/64 via 2a00::280e dev wlp3s0 table 220 proto static src fd01::3 metric 
1024 pref medium
::1 dev lo proto kernel metric 256 pref medium
2a00:::/64 dev wlp3s0 proto ra metric 303 mtu 1488 pref medium
fd01::3 dev wlp3s0 proto kernel metric 256 pref medium
fdaa:::/64 dev wlp3s0 proto ra metric 303 mtu 1488 pref medium
fe80::/64 dev wlp3s0 proto kernel metric 256 pref medium
default via fe80::44af dev wlp3s0 proto ra metric 303 mtu 1488 pref medium
local ::1 dev lo table local proto kernel metric 0 pref medium
local 2a00::e4df dev wlp3s0 table local proto kernel metric 0 pref medium
local fd01::3 dev wlp3s0 table local proto kernel metric 0 pref medium
local fdaa::e4df dev wlp3s0 table local proto kernel metric 0 pref medium
local fe80::e4df dev wlp3s0 table local proto kernel metric 0 pref medium
ff00::/8 dev wlp3s0 table local metric 256 pref medium
ff00::/8 dev enp4s0 table local metric 256 linkdown pref medium

$ ip -6 xfrm policy
src fd01::3/128 dst fdaa:::/64
        dir out priority 301695
        tmpl src 2a00::e4df dst 2a00::280e
                proto esp spi 0xc0a4e6ee reqid 3 mode tunnel
src fd01::3/128 dst fd01::/64
        dir out priority 301695
        tmpl src 2a00::e4df dst 2a00::280e
                proto esp spi 0xc0a4e6ee reqid 3 mode tunnel
src fdaa:::/64 dst fd01::3/128
        dir fwd priority 301695
        tmpl src 2a00::280e dst 2a00::e4df
                proto esp reqid 3 mode tunnel
src fdaa:::/64 dst fd01::3/128
        dir in priority 301695
        tmpl src 2a00::280e dst 2a00::e4df
                proto esp reqid 3 mode tunnel
src fd01::/64 dst fd01::3/128
        dir fwd priority 301695
        tmpl src 2a00::280e dst 2a00::e4df
                proto esp reqid 3 mode tunnel
src fd01::/64 dst fd01::3/128
        dir in priority 301695
        tmpl src 2a00::280e dst 2a00::e4df
                proto esp reqid 3 mode tunnel
src ::/0 dst ::/0
        socket in priority 0
src ::/0 dst ::/0
        socket out priority 0
src ::/0 dst ::/0
        socket in priority 0
src ::/0 dst ::/0
        socket out priority 0

Reply via email to