Thanks Steffen, but I don't think it is the case.
I shut down VTI interface toward another VPS and GRE on top of it,
enabled the plain GRE for transport SA. It works on one end, but not for
the other end which has to leave VTI with `remote any` up. How can the
transport SA match this `remote any` VTI?
Attached relevant `ip tun`, `ip link`, `ip addr` and `ip xfrm pol` for
your investigation.
On the working end:
root@ayaka:~# ip tun
test: gre/ip remote 139.162.122.174 local 149.248.36.252 dev ens3 ttl
inherit nopmtudisc
goips-i0n2: gre/ip remote 172.16.44.7 local 172.16.44.6 dev ipsec0 ttl
inherit
ipsec0: ip/ip remote 139.162.122.174 local 149.248.36.252 dev ens3 ttl
inherit nopmtudisc key 410191106
root@ayaka:~# ip link
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP
mode DEFAULT group default qlen 1000
link/ether 56:00:01:c6:b6:20 brd ff:ff:ff:ff:ff:ff
12: ipsec0@ens3: <POINTOPOINT,NOARP> mtu 1446 qdisc noqueue state DOWN
mode DEFAULT group default qlen 1000
link/ipip 149.248.36.252 peer 139.162.122.174
13: goips-i0n2@ipsec0: <POINTOPOINT,NOARP,M-DOWN> mtu 1422 qdisc noqueue
state DOWN mode DEFAULT group default qlen 1000
link/gre 172.16.44.6 peer 172.16.44.7
14: test@ens3: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1400 qdisc noqueue
state UNKNOWN mode DEFAULT group default qlen 1000
link/gre 149.248.36.252 peer 139.162.122.174
root@ayaka:~# ip addr
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP
group default qlen 1000
link/ether 56:00:01:c6:b6:20 brd ff:ff:ff:ff:ff:ff
inet 149.248.36.252/23 brd 149.248.37.255 scope global ens3
valid_lft forever preferred_lft forever
12: ipsec0@ens3: <POINTOPOINT,NOARP> mtu 1446 qdisc noqueue state DOWN
group default qlen 1000
link/ipip 149.248.36.252 peer 139.162.122.174
inet 172.16.44.6/31 brd 255.255.255.255 scope global ipsec0
valid_lft forever preferred_lft forever
13: goips-i0n2@ipsec0: <POINTOPOINT,NOARP,M-DOWN> mtu 1422 qdisc noqueue
state DOWN group default qlen 1000
link/gre 172.16.44.6 peer 172.16.44.7
inet 172.22.181.16/31 brd 255.255.255.255 scope global goips-i0n2
valid_lft forever preferred_lft forever
14: test@ens3: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1400 qdisc noqueue
state UNKNOWN group default qlen 1000
link/gre 149.248.36.252 peer 139.162.122.174
inet 172.22.181.16/31 scope global test
valid_lft forever preferred_lft forever
root@ayaka:~# ip xfrm pol
src 149.248.36.252/32 dst 139.162.122.174/32 proto gre
dir out priority 366975 ptype main
tmpl src 0.0.0.0 dst 0.0.0.0
proto esp spi 0xc9d4a0c3 reqid 6 mode transport
src 139.162.122.174/32 dst 149.248.36.252/32 proto gre
dir in priority 366975 ptype main
tmpl src 0.0.0.0 dst 0.0.0.0
proto esp reqid 6 mode transport
On the not working end:
root@kotone:~# ip tun
ipsec0: ip/ip remote any local 139.162.122.174 dev eth0 ttl inherit
nopmtudisc key 410190082
goips-i0n1: gre/ip remote 172.16.44.1 local 172.16.44.0 dev ipsec0 ttl
inherit
test: gre/ip remote 149.248.36.252 local 139.162.122.174 dev eth0 ttl
inherit nopmtudisc
goips-i2n5: gre/ip remote 172.16.44.6 local 172.16.44.7 dev ipsec2 ttl
inherit
ipsec2: ip/ip remote 149.248.36.252 local 139.162.122.174 dev eth0 ttl
inherit nopmtudisc key 410191106
root@kotone:~# ip link
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
state UP mode DEFAULT group default qlen 1000
link/ether f2:3c:91:70:9c:ad brd ff:ff:ff:ff:ff:ff
12: ipsec0@eth0: <NOARP,UP,LOWER_UP> mtu 1446 qdisc noqueue state
UNKNOWN mode DEFAULT group default qlen 1000
link/ipip 139.162.122.174 brd 0.0.0.0
14: ipsec2@eth0: <POINTOPOINT,NOARP> mtu 1446 qdisc noqueue state DOWN
mode DEFAULT group default qlen 1000
link/ipip 139.162.122.174 peer 149.248.36.252
15: goips-i0n1@ipsec0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1422 qdisc
noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/gre 172.16.44.0 peer 172.16.44.1
17: goips-i2n5@ipsec2: <POINTOPOINT,NOARP,M-DOWN> mtu 1422 qdisc noqueue
state DOWN mode DEFAULT group default qlen 1000
link/gre 172.16.44.7 peer 172.16.44.6
18: test@eth0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1400 qdisc noqueue
state UNKNOWN mode DEFAULT group default qlen 1000
link/gre 139.162.122.174 peer 149.248.36.252
root@kotone:~# ip addr
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
state UP group default qlen 1000
link/ether f2:3c:91:70:9c:ad brd ff:ff:ff:ff:ff:ff
inet 139.162.122.174/24 brd 139.162.122.255 scope global eth0
valid_lft forever preferred_lft forever
12: ipsec0@eth0: <NOARP,UP,LOWER_UP> mtu 1446 qdisc noqueue state
UNKNOWN group default qlen 1000
link/ipip 139.162.122.174 brd 0.0.0.0
inet 172.16.44.0/31 brd 255.255.255.255 scope global ipsec0
valid_lft forever preferred_lft forever
14: ipsec2@eth0: <POINTOPOINT,NOARP> mtu 1446 qdisc noqueue state DOWN
group default qlen 1000
link/ipip 139.162.122.174 peer 149.248.36.252
inet 172.16.44.7/31 brd 255.255.255.255 scope global ipsec2
valid_lft forever preferred_lft forever
15: goips-i0n1@ipsec0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1422 qdisc
noqueue state UNKNOWN group default qlen 1000
link/gre 172.16.44.0 peer 172.16.44.1
inet 172.22.181.10/31 brd 255.255.255.255 scope global goips-i0n1
valid_lft forever preferred_lft forever
17: goips-i2n5@ipsec2: <POINTOPOINT,NOARP,M-DOWN> mtu 1422 qdisc noqueue
state DOWN group default qlen 1000
link/gre 172.16.44.7 peer 172.16.44.6
inet 172.22.181.17/31 brd 255.255.255.255 scope global goips-i2n5
valid_lft forever preferred_lft forever
18: test@eth0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1400 qdisc noqueue
state UNKNOWN group default qlen 1000
link/gre 139.162.122.174 peer 149.248.36.252
inet 172.22.181.17/31 scope global test
valid_lft forever preferred_lft forever
root@kotone:~# ip xfrm pol
src 172.16.44.0/31 dst 172.16.44.0/31
dir out priority 368255 ptype main
mark 0x18730102/0xffffffff
tmpl src 139.162.122.174 dst 122.100.194.181
proto esp spi 0xd5d1c8e9 reqid 24 mode tunnel
src 172.16.44.0/31 dst 172.16.44.0/31
dir fwd priority 368255 ptype main
mark 0x18730102/0xffffffff
tmpl src 122.100.194.181 dst 139.162.122.174
proto esp reqid 24 mode tunnel
src 172.16.44.0/31 dst 172.16.44.0/31
dir in priority 368255 ptype main
mark 0x18730102/0xffffffff
tmpl src 122.100.194.181 dst 139.162.122.174
proto esp reqid 24 mode tunnel
src 139.162.122.174/32 dst 149.248.36.252/32 proto gre
dir out priority 366975 ptype main
tmpl src 0.0.0.0 dst 0.0.0.0
proto esp spi 0xc815bb54 reqid 25 mode transport
src 149.248.36.252/32 dst 139.162.122.174/32 proto gre
dir in priority 366975 ptype main
tmpl src 0.0.0.0 dst 0.0.0.0
proto esp reqid 25 mode transport
On 2018/12/21 04:38 PM, Steffen Klassert wrote:
On Sat, Dec 15, 2018 at 07:02:41PM +0800, Lemon Lam wrote:
Hello,
I recently joined DN42 with my virtual private servers, and decided to
use
GRE
and IPsec to form interconnects between servers.
I can use GRE over IPsec VTI tunnel fine, but when I simplified some
tunnels
down to GRE over IPsec transport, no incoming traffic is possible.
Please look into full description below.
[1.] One line summary of the problem:
XFRMINSTATEMODEERROR for transport mode IPsec SA when IP VTI is
active
[2.] Full description of the problem/report:
I built tunnels according to StrongSwan's guide on VTI, i.e.
using
`ip tun add ipsecvti mode vti key <hex key>`, then I add GRE on
top of
it for MPLS. Everything works great at this stage.
I want to strip it down to GRE over IPsec transport between my
VPS but
have to leave one as-is since there's endpoint with dynamic IP,
need
this
as workaround. After necessary configurations, I pinged between
transport
mode tunnel, received no response. `swanctl -l` showed increased
outgoing
traffic counter, but incoming counter stayed at zero. `tcpdump`
showed
incoming ESP packets on physical interfaces but no corresponding
packets
on GRE tunnel.
Hinted to look at `/proc/net/xfrm_stat` by developers from
StrongSwan,
found out that XFRMINSTATEMODEERROR increases by any traffic on
transport tunnel. Later experiments discovered that merely
`ip link set ipsecvti down` will let incoming traffic went
through.
This looks like you have a transport mode SA that matches
the src and dst endpoint of the vti tunnel. If this is
the case, it is a conceptional problem. VTI behaves like
an IP tunnel, it can not handle transport mode packets.