Hi Marcel,
I am connecting multiple XFRM interfaces, each being in a different VRF,
between two servers running strongSwan 5.9.4.
As I am running dynamic routing protocols over those XFRM interfaces,
all traffic selectors of the CHILD_SAs have been set to 0.0.0.0/0 & ::/0.
Now, the responder is not being able to distinguish between the
CHILD_SAs anymore (due to the same TS) for one IKE_SA and all the
CHILD_SAs of the initiator end up in the same (the first) CHILD_SA in
the responder, meaning the different XFRM interfaces of the initiator
are being terminated all in the same XFRM interface of the responder.
My current workaround is to create one IKE_SA per CHILD_SA as I am able
to set the local and remote ID in the IKE_SA and use these to
distinguish the tunnels as the local and remote addresses are the same
aswell. Unfortunately. the CHILD_SA parameter "reqid" is a local setting
only and looking at the docs I can't see another way to set some "ID" of
some sort to be able to distinguish between overlapping/identical
traffic selectors. Am I missing something here or is this the only
possible workaround?
The labeled-ipsec branch might be of interest to you (still experimental
and undergoing some major changes in the near future). In a non-SELinux
mode (in the current branch just don't compile with --enable-selinux),
the labels simply act as additional identifier/selector on the IKEv2
layer when negotiating CHILD_SAs and selecting child configs. This
allows using the label like a transmitted mark/if_id.
Regards,
Tobias