On Di, 29.09.20 11:21, Paul Wouters (p...@nohats.ca) wrote:

> No further magic should be needed. The user selects this once when
> joining a new network.

This is terrible UI. It was on Windows, and it would be on Linux.

You shouldn't ask questions people cannot possibly answer
correctly. There's a reason why Windows remained the only big OS doing
that... (And do current version still do that even, I think they hid
it in some secondary menu now, and do not prompt anymore?)

> > Corporate networks tend to define local zones. Home wifi routers all
> > do, too. There's no clear way to know what can go directly to well-known
> > good DNS servers and what needs to be resolved locally.
>
> Generally, resolve the names from the DHCP obtained domain name with
> the DHCP obtained name servers. Yes, this is limited to one domain name,
> which might not be ideal, but in general when you connect to a home or
> corporate network directly (no VPN) then you should use their DNS
> servers regardless. Enterprise is likely blocking port 53 (or DoT or
> trying to block DoH) for security reasons. And your home network you
> trust?

resolved is doing just this. Note that with today's DHCP you can have
many domains listed in the lease.

> What is important with all of the VPN cases is that you properly flush
> the cache when the VPN estalishes and terminates, so avoid having
> unreachable IP's in your DNS cache. It's important not to flush other
> DNS data to avoid DNS fingerprinting users across different
> networks.

We maintain a per-interface cache anyway. If an interface goes down
its cache ceases to exist altogether. There's no flushing necessary,
since it just stops existing.

> In short, I don't understand the issue raised here of "How do you
> determine local resources".
>
> For each and every domain name in the above scenario it is obvious what
> nameserver to send it to. There is never a need to broadcast this over
> a mix of public / private DNS servers.

One example: As mentioned by someone else somewhere in this thread,
apparently some private jboss domains are only resolvable via RH VPN
but not listed as search domains in the server-provided VPN config.

> So let me ExecSum what I wrote here. For systemd-resolved to become
> a high quality DNS solution:
>
> 1) Remove custom DNS/DNSSEC resolving code and use a well maintained
>    DNS library.

"Custom" is in the eye of the beholder. It appears to me you mean that
in a derogatory way. I mean, given that Ubuntu has been enabling
systemd-resolved since quite some time by default I have the suspicion
our codebase is more often deployed IRL than the ones you listed? I
mean, maybe I am wrong, but it's certainly not that this is exotic
stuff as you imply.

I have the suspicion this is a territorial thing, no? It feels as if
you believe that DNS clients that people wo are not core members of
the DNS community are inherently a bad thing, and should go away, and
leave the real work to the people who actually know how things work,
right? I got that kind of behaviour once before when people told us to
just leave service management to the real holy men of UNIX.

I mean, let's not forget: last time this came up, 5 years ago, I was
so fed with dealing with this attitude of yours I just stepped away,
and stopped pushing for systemd-resolved in Fedora. You and some other
peeps then had your shot with dnssec-triggerd, but afaiu that didn't
really go anywhere, we are still at square one, even though "millions
of dollars" are behind things, as you say.

So we actually have a chance of delivering something now, but you just
fight against it, just like 5y ago and nothing changed.

The reason systemd-resolved exists and that people have adopted it in
some distros already and are now doing the same on Fedora is that is
solves real problems, it improves things. It adds local caching, sane
per-interface behaviour, makes VPN DNS mostly just work and so on,
integrates LLMNR/mDNS and other sources of truth into one thing. If
there was already something doing that we wouldn't have done
resolved. But to my knowledge this doesn't exist. There are solutions
to very specific problems, i.e. resolves for DNS with DNSSEC for
example, but that is just one part of the problem and you cannot just
ignore the rest.

> 2) Maintain a per interface DNS cache using these libraries

We maintain per-interface DNS caches, but with our code.

> 3) Use the above sketched out process to improve your process of
>    deciding which interface to send the query to. This is the core
>    of what systemd-resolved should give to the user. It is probably
>    already pretty close to this when we work on integrating VPN
>    supprt.

I understand you love the network "zone" concept. I am not a fan of
the concept, but this doesn't really matter: we provide all the right
IPC APIs to NM and friends to configure per-interface individually
what to do. Hence, if you can convince GNOME and NM to ask people that
zone question all the time (good luck!) then resolved is ready
already, they just have to issue some bus calls to tell resolved what
they want.

> 4) Deal with hotspots separately

We don't deal with captive portals at all. This is up to NM and
similar solutions: they should just switch the dnssec mode in resolved
as they verified captive portal auth is complete.

> 5) Support user configured/prompted fallback using DoT and DoH to well
>    known servers in case obtained DNS servers are too broken to work
>    well (with DNSSEC)

Again, prompting users about DoT/DoH use is — I am sorry for the
strong words — simply a rubbish idea. Outside of a tiny circle of
technical people noone could answer that question properly. There's no
point in prompting users about things they most likely cannot answer
correctly.

I mean, honestly: I for one don't even know if my local wifi router
can do DoT or DNSSEC these days. It's a fritzbox, one of the fancier
vendors, at least in Germany, and they keep adding and updating their
firmware. It didn't use to support it, but maybe it does today, there
very recently was a very big update of there firmware and I know they
did some DNS love on it. But I haven't rechecked if one can now talk
DNSSEC or DoT with the fritzbox. And if I can't answer that question
correctly without much work, then who can (who's not Paul Wouters,
that is... ;-))

BTW: that specific router model exposes its web UI on a non-internet
domain "fritz.box". We can't automatically determine that for that
domain we can't do DNSSEC hence. DHCP won't tell us. We can't bypass
the local DNS server for it, and not do DNSSEC for it, but we don't
know that this is the case — noone tells us. And that means doing
DNSSEC by default or DoT to some known-good server bypassing the local
wifi router isn't really an option — unless you accept that you cannot
talk to your local devices anymore. Which sucks hard...

Lennart

--
Lennart Poettering, Berlin
_______________________________________________
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org

Reply via email to