I have found the issue! Not a Strongswan one after all :)

This is my ip rules output:

# ip rule
0:      from all lookup local
100:    from 85.24.x.x lookup WAN1
101:    from 90.225.x.x lookup WAN2
102:    from 10.248.x.x lookup WAN3
104:    from 46.195.x.x lookup WAN4
121:    from all fwmark 0x100/0xf00 lookup WAN1
122:    from all fwmark 0x200/0xf00 lookup WAN2
123:    from all fwmark 0x300/0xf00 lookup WAN3
124:    from all fwmark 0x400/0xf00 lookup WAN4
220:    from all lookup main
32766:  from all lookup main
32767:  from all lookup default

When deleting rule 121 my VPN clients starts respecting the multipath routes on the gateway and get routed out on ppp0 (WAN3) as wanted. However, then my specific policy rules (marked with 0x100) stops going out on vlan847 (WAN1) of course, which is not wanted. Do you have any suggestion how I could make both work? I'm just guessing here, but probably all incoming traffic on each of the WAN interfaces gets marked with the above marks, so that return traffic goes out the same interface which if the right behaviour, however not in my VPN remote access case!


Den 2017-04-26 kl. 23:19, skrev Noel Kuntze:
Hello Dusan,

In general, charon does not route any packets of the kernel. Charon is out of 
the loop there,
however, it installs routes into routing table 220 by default to make sure the 
packets
that are going to be protected with IPsec reach the remote subnet.
This means that when charon picks the wrong route, the traffic that is 
forwarded or
sent by the kernel to the remote subnet is going to be routed over the last 
fitting route that
the kernel-netlink plugin finds, as Tobias wrote.

In order to prevent this from happening, you have to disable the installation 
of routes.
You do this by setting "charon.install_routes" to "no" in strongswan.conf or try
to set charon.plugins.kernel-netlink.fwmark to a mark value you don't use.

Kind regards,
Noel

On 26.04.2017 22:23, Dusan Ilic wrote:
Hi  again Tobias,

After reading your post once more I suspect we are talking about different 
things. I see you qouted my question why the last multipath is being chosen by 
Strongswan when configuring left=%any and initiating the connection, however Im 
talking about the route Strongswan chooses to forward remote clients out on the 
Internet. Do you think the problem is the same? My remote clients are 
connecting to Public IP on vlsn847, and when accessing the internet 
(leftsubnet=0.0.0.0/0) they are being always routed out the same interface, 
that is vlsn847. What I expect is that Strongswan will hand over the vpn 
clients traffic to the Linux kernel, which will do a normal route lookup and 
route the clients out on interface ppp0. Isnt this possible? Is it maybe 
something in Strongswan that makes it forward incoming traffic out on the 
Internet through the same interface?

---- Tobias Brunner skrev ----

Hi Dusan,

default
          nexthop via 90.225 <tel:90.225>.x.x  dev vlan845 weight 1
          nexthop via 10.248 <tel:10.248>.x.x  dev ppp0 weight 256
          nexthop via 85.24 <tel:85.24>.x.x  dev vlan847 weight 1
          nexthop via 46.195 <tel:46.195>.x.x  dev ppp1 weight 1

My gateway is configured to use 10.248.0 <tel:10.248.0>.x as "default route" 
(highest
weight/priority), but when Strongswan tried to initiate the tunnel it
seems to always default too the last route, 46.195 <tel:46.195>.x.x, and this 
wont
work as the remote peer is expecting 85.24 <tel:85.24>.x.x.
These kinds of multipath routes (via RTA_MULTIPATH) are currently not
supported by strongSwan when looking up source addresses/nexthops.  The
kernel-netlink plugin only sees one of these via RTA_GATEWAY and
RTA_OIF.  You could try to switch to the kernel's default route lookup
by setting either charon.install_routes=no (disables route installation
by strongSwan altogether, only works with 5.5.2 <tel:5.5.2>), or by setting
charon.plugins.kernel-netlink.fwmark 
<http://charon.plugins.kernel-netlink.fwmark> to an arbitrary number not used 
yet
as firewall mark (this works since 5.3.3 <tel:5.3.3>).  However, I'm not sure if
that will return different values in RTA_GATEWAY/RTA_OIF or if it would
still be necessary to parse RTA_MULTIPATH.  How exactly do these kind of
kind of multipath routes compare to multiple routes with different
priorities/metrics?  In your case you have multiple paths with the same
weight, how is the actual nexthop/interface chosen by the kernel?
Round-robin?  Random?

Regards,
Tobias



_______________________________________________
Users mailing list
[email protected]
https://lists.strongswan.org/mailman/listinfo/users

_______________________________________________
Users mailing list
[email protected]
https://lists.strongswan.org/mailman/listinfo/users

Reply via email to