<div dir="ltr"><div><div><div>Hi Parke,<br><br></div>Your assessment is correct. tinc will follow any subnet advertisements that it receives over the metaconnection graph. Subnet declarations in host files are only used by the tinc instance running on that specific host to determine which subnets it should advertise to others. I believe the rationale is to make it possible to add new nodes (with their own subnets) to the network (or change existing ones) without having to distribute host files to every other node, which would not scale well.<br><br></div>If StrictSubnets=yes is used, then it's the opposite: tinc will only follow its own host files and ignore any dynamic subnet advertisements made over the network.<br><br></div>In general however, I would advise against trusting other nodes, even with StrictSubnets=yes. tinc is not currently designed to provide strong protection against insider attacks - for the most part it assumes that every node inside the metaconnection graph can be trusted. In my opinion tinc will do poorly in a scenario where a "compromised node" is part of your threat model.<br></div><div class="gmail_extra"><br><div class="gmail_quote">On 5 May 2017 at 04:45, Parke <span dir="ltr"><<a href="mailto:parke.nexus@gmail.com" target="_blank">parke.nexus@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello,<br>
<br>
How does tincd determine the subnet(s) of other remote nodes? Does<br>
tincd read its copies of the hosts file and parse and follow the<br>
subnet information contained in the local files? Or does tincd solely<br>
trust the subnet information dynamically advertised by each remote<br>
node?<br>
<br>
In my experimentation, it seems that:<br>
<br>
a) tincd reads its own subnet(s) from its copy of its own host file, but<br>
<br>
b) tincd ignores the subnets specified in the other hosts files.<br>
<br>
This would seem to mean that if:<br>
<br>
1) There are three nodes, A, B, and C, and<br>
2) Node B is offline, and<br>
3) Node C is compromised and advertises itself as serving B's subnet(s), and<br>
4) Node A sends traffic to an IP address on one of B's subnets, then<br>
5) Node C will intercept the traffic that A believes A is sending to B's subnet.<br>
<br>
Is the above description of how tincd operates correct?<br>
<br>
Is this an intentional choice? If so, what is the reasoning behind it?<br>
<br>
It seems to me that this behavior (trusting all advertised subnets) is<br>
unexpected and possibly undocumented. The behavior would also seem to<br>
prioritize convenience over security.<br>
<br>
(I am running tinc version 1.0.24 on Debian.)<br>
<br>
Thanks!<br>
<span class="HOEnZb"><font color="#888888"><br>
-Parke<br>
______________________________<wbr>_________________<br>
tinc mailing list<br>
<a href="mailto:tinc@tinc-vpn.org">tinc@tinc-vpn.org</a><br>
<a href="https://www.tinc-vpn.org/cgi-bin/mailman/listinfo/tinc" rel="noreferrer" target="_blank">https://www.tinc-vpn.org/cgi-<wbr>bin/mailman/listinfo/tinc</a><br>
</font></span></blockquote></div><br></div>