<p dir="ltr">On Aug 4, 2014 7:05 PM, "Lennart Poettering" <<a href="mailto:lennart@poettering.net">lennart@poettering.net</a>> wrote:<br>
><br>
> On Tue, 29.07.14 14:48, Michael Marineau (<a href="mailto:michael.marineau@coreos.com">michael.marineau@coreos.com</a>) wrote:<br>
><br>
> > When the code for generating resolv.conf was moved from networkd to<br>
> > resolved the DHCP domain name code was dropped.<br>
><br>
> Hmm, we really should figure out how we want to support all of this in<br>
> the long run, between networkd and resolved.<br>
><br>
> Quite frankly I believe the entire "domain" and "search list" logic is<br>
> idiotic. It's an invitation for a security breach without bounds. In a<br>
> world where DNSSEC is supposed to validate full hostnames, and what they<br>
> refer to it's simply wrong to mangle user input like that.<br>
><br>
> But then again, I figure we cannot just not support it. Administrators<br>
> traditionally used that and most would probably defend it as the most<br>
> useful thing on earth. But I guess we can at least try to make this less<br>
> broken...</p>
<p dir="ltr">On the one hand, it certainly saves a lot of time typing, and I don't see how it affects DNSSEC given that the validator always sees full names.</p>
<p dir="ltr">On the other hand, it *does* break TLS certificate validation, as well as Kerberos authentication, both of which want an exact FQDN match.</p>
<p dir="ltr">So 'ping' and 'mtr' is probably 99% of my use of the search list; full domain name everywhere else. So I probably wouldn't miss the search list much, myself.</p>
<p dir="ltr">(glibc has a nice alternative, $HOSTALIASES, allowing each user to configure alias › domain name mappings. Interestingly, setuid programs ignore that completely for security reasons, so it's unusable with ping/mtr/traceroute, precisely where I'd want it most.)</p>

<p dir="ltr">><br>
> For example, I don't really understand where the effective difference<br>
> between resolv.conf's "domain" and "search" setting is supposed to be<br>
> for resolvers. Why would anyone configure "domain", if he could just<br>
> as well configure "search"?</p>
<p dir="ltr">If I remember correctly from the resolv.conf manpage or somewhere such, there's *no* difference other than 'domain' being limited to one suffix.</p>
<p dir="ltr">> resolved's DNS resolver is actually aware of multiple interfaces and<br>
> their specific DNS servers (at least when used in conjuncion with<br>
> networkd). It will issue DNS requests in parallel on all interfaces, in<br>
> order to deal with the VPN vs. local LAN problem where a company VPN and<br>
> the local LAN might both define local, private names, and we should be<br>
> able to resolve them both at the same time. For this kind of setup it is<br>
> sometimes useful however to bind a specific domain exlcusively to one<br>
> interface though, i.e. to disable the logic of simulatenously asking all<br>
> interfaces after all. For example, declaring that *.<a href="http://redhat.com">redhat.com</a> should<br>
> strictly go into the VPN is a good thing, in order not leak information<br>
> about redhat-internal hosts onto public DNS servers... Now, for this<br>
> kind of stuff we should allow defining a list of exclusive domains per<br>
> interface. This is different from a search list however, as this is<br>
> simply about where to route DNS requests to, and not about appending<br>
> suffixes.</p>
<p dir="ltr">In other words, the Linux resolver is finally as smart as Windows has been for a decade :D</p>
<p dir="ltr">> I think if we apply search lists then we should probably restrict this<br>
> to single-label names, for security reasons. That way it will only<br>
> compete against LLMNR (since llmnr is used exclusively for single-label<br>
> names, too), but never be applied to fqdns. Given that one can trust<br>
> LLMNR and DHCP pretty much to the same degree that should be OK.</p>
<p dir="ltr">Well, I imagine admins *do* filter DHCP packets from untrusted devices. I've even seen switches capable of this.</p>
<p dir="ltr">> So, maybe we should have just two options:<br>
><br>
>     [Network]<br>
>     Domains=list of domains<br>
><br>
>     [DHCP]<br>
>     UseDomains=yes/no (default: no)<br>
><br>
> Domains= configures a list of domains specific to the interface. This<br>
> would be used for DNS routing by resolved, as pointed out above. It<br>
> would also be used as search list for single-label names.<br>
><br>
> And UseDomains= in the [DHCP] section would have the result of adding a<br>
> search list supplied via DHCP (either option 119 or 15) to the manually<br>
> configured search list (at the end). It would be off by default, for<br>
> security reasons.<br>
><br>
> Does this make any sense? Opinions?<br>
><br>
> Note that this would be different from glibc's resolver, where the<br>
> search list is applied to *all* domains names, regardless if they are<br>
> single-label or not.</p>
<p dir="ltr">The one label restriction sounds like an improvement, though I wonder if someone actually relies on the old behavior.</p>
<p dir="ltr">I always disliked how Windows would first attempt resolving <a href="http://google.com.example.com">google.com.example.com</a>. and only then <a href="http://google.com">google.com</a>. unless I manually added "." at the top of the list... </p>

<p dir="ltr">-- <br>
Mantas Mikulėnas <<a href="mailto:grawity@gmail.com">grawity@gmail.com</a>><br>
// sent from phone</p>