Route certain trafic via a tinc node that is not directly connected.

Hans de Groot hansg at dandy.nl
Tue Apr 10 15:36:08 CEST 2018


Hello List,

I have this setup:

hosta  <--> hostb  <-->  hostc

Hosta and hostc are not directly connected via tinc. But both are 
conncted via hostb (I called my network tincnet). This works fine I can 
ssh from hosta to hostc and vice versa without any problems.

hostc is in a whitelisted iprange at some service provider.

I need hosta to talk to a certain ip (lets call it ipaddressx) via hostc.

I added the iptables mangle rule to mark all traffic to ipaddressx at 
port 700.

-A OUTPUT  -p 6 -m tcp -d ipaddressx/255.255.255.255 --dport 700 -j MARK 
--set-mark 0x1

I added:
     ip route add default via iphostc dev tincnet table hostc
     ip rule add from 0.0.0.0/0 fwmark 1 table hostc

Now when I try this:

traceroute -T -n ipaddressx -p 700

The route goes via the ip of hostb and not via the ip of hostc as I 
would have expected.
If I remove the iptables rule the route goes directly via the ip of 
hosta. So the mangle rule and ip rule lines are okay I think.
Of course I also checked this via telnet ipaddressx 700 and watched via 
tcpdump what happened on hostb and hostc.

A weird thing is when I try the add route with any ip in the tincnet 
subnet the route gets added even if that ip is not in use and all 
traffic still goes via the ip of hostb.
ie: ip route add default via any_ip_in_the_tincnet_subnet dev tincnet 
table hostc

Does any one know what is happening here?

Is it tincd at hostb that intercepts the traffic actually meant for 
hostc and thinks it's meant for hostb and rewrites stuff automaticaly?  
Or am I missing something in the ip route / ip rules part?

I am using tinc a lot but so far it was between tinc nodes that are also 
directly connected. and never had this problem before.

If I just use iptables on hosta and hostc with nat en prerouting it 
works fine. I just tell iptables on hosta that all traffic to ipaddressx 
has to be dnatted to hostc and at hostc I just dnat this to the 
destination ip.

But I really would like to understand how to do this via mangle/fwmark 
and ip route  / ip rule way.

hosta is centos 7 tinc 1.0.31
hostb is centos 5 tinc 1.0.25
hostc is centos 5 tinc 1.0.13

I hope someone can help me on my way.

Thx

Hans de Groot










More information about the tinc mailing list