<div dir="ltr">I've converted the config from ipsec.conf to swanctl.conf and got it working. Thanks! The ipsec.conf does not appear to have an alternative for the if_id_in/out parameters.<div><br></div><div>For those interested, I have a working docker-compose based lab setup up at GitHub: <a href="https://github.com/TomCan/strongswan-xfrm-poc">https://github.com/TomCan/strongswan-xfrm-poc</a><br><div><br></div><div><br></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Op do 13 aug. 2020 om 17:36 schreef Volodymyr Litovka <<a href="mailto:doka.ua@gmx.com">doka.ua@gmx.com</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="overflow-wrap: break-word;">Hi Tom,<div><br></div><div>please, see below<br><div>
<div><br>-- <br>Volodymyr Litovka<br>  "Vision without Execution is Hallucination." -- Thomas Edison</div>
</div>
<div><br><blockquote type="cite"><div>On 13 Aug 2020, at 18:22, Tom Cannaerts <<a href="mailto:mot@tom.be" target="_blank">mot@tom.be</a>> wrote:</div><br><div><div dir="ltr">I'm trying to setup route-based tunnel using an xfrm interface, but it's not clear to me on how to link the policy to the interface?<div><br></div><div>This is my ipsec.conf of router1 (currently lab based setup) </div><div><br></div><div>conn router2<br>    fragmentation=yes<br>    dpdaction=restart<br>    ike=aes256-sha256-modp2048<br>    esp=aes256-sha256-modp2048<br>    keyingtries=%forever<br>    leftid=192.168.100.101<br>    leftauth=secret<br>    rightauth=secret<br>    leftsubnet=<a href="http://192.168.101.0/24" target="_blank">192.168.101.0/24</a><br>    keyexchange=ikev2<br>    right=192.168.100.102<br>    rightsubnet=<a href="http://192.168.102.0/24" target="_blank">192.168.102.0/24</a><br>    auto=start<br></div></div></div></blockquote><div><br></div><div>Since I’m using swanctl.conf, I don’t know, how it maps to old config, but there is no if_id_in/if_id_out parameters, which will connect it with xfrm interface. In my case it looks as shown below:</div><div><br></div><div>connections {<br>        conn1 {<br>                children {<br>                        conn1-child {<br>                                if_id_in = 9<br>                                if_id_out = 9<br>                        }<br>                }<br>        }<br>}<br><br></div><blockquote type="cite"><div dir="ltr"><div>This is how I'm creating the interface using iproute2</div><div><br></div><div>ip link add ipsec2 type xfrm dev eth0 if_id 0xff02<br>sysctl -w net.ipv4.conf.ipsec2.disable_policy=1<br>ip link set ipsec2 up<br>ip route add <a href="http://192.168.102.0/24" target="_blank">192.168.102.0/24</a> dev ipsec2 metric 10<br></div></div></blockquote><div><br></div>I assign ip address directly to xfrm interface</div><div><br></div><div>ip link add xfrm0 type xfrm dev lo if_id 9</div><div>ip link set xfrm0 up</div><div>ip link address add x.x.x.x/24 dev xfrm0</div><div><br></div>And don’t forget to unload kernel-libipsec to avoid running in userland.</div><div><br></div><div>Hope this’ll help.</div><div><br></div></div></blockquote></div>