Hello,

On Wed, Nov 25, 2015, at 17:58, Radu Rendec wrote:
> Disclaimer: I know this is a *development* list, but I feel the answer
> lies deep down in the ipv4 routing code, so it's more likely that I
> find help here.
> 
> That being said, I have two TUN interfaces that are "cross-connected"
> in user space (i.e. whatever is read on the socket corresponding to
> either interface is written to the socket of the other interface).
> 
> The problem: if I assign IPv4 addresses to both TUN interfaces, local
> traffic to either address flows through the loopback interface. Getting
> packets to be routed through the TUN interfaces is easy. The real
> challenge is to get packets to be accepted/processed as input packets
> when they pop out of the opposite TUN interface.

Why do you require them to be marked as "input" packets?

> I tracked down the problem to ip_route_input_slow() in net/ipv4/route.c
> 
> What I tried so far:
> 
> 1. Remove the implicit routes from the local table. This apparently
> causes packets to be silently dropped by ip_route_input_slow(), since
> it looks for a corresponding route and only delivers packets locally if
> a local route is found.
> 
> 2. Keep implicit routes in the local table, change the priority of the
> "lookup local" ip rule, mark *output* packets with iptables and add a
> higher priority rule to lookup the main table for marked packets.
> 
> By doing that, the main table is looked up on the egress path and
> packets are routed through the TUN interface. When packets pop out of
> the opposite TUN interface, they are no longer marked (because they are
> actually different packets), so ingress routing correctly looks up the
> local table.
> 
> The next problem is that packets are seen as "martians" and dropped,
> most probably because of __fib_validate_source() failing due to the
> fact that the input interface is not the expected one.
> 
> This is where I stopped. Any idea or help would be highly appreciated.
> Please CC my private address (I am not subscribed to the list). Thanks
> in advance!

Have you tried ip route add local-ip-addr/32 dev tun0 and handle arp on
the outside interfaces with arp proxying or other means (routing
protocols)?

Thanks,
Hannes

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to