I'm not sure I understand what you mean.  In a typical configuration you
never send "foo" to the nameservice, there's always a search domain and
those lookups are always tried first (because the default value for the
ndots is 1).  This is handled by the libc resolver linked into every
program, it's not handled by a central service.

I don't have any idea how systemd-resolve works.  But, my understanding
of how it used to work with dnsmasq using split tunneling was that the
nameservice mapped domains to DNS servers, and the resolver would only
forward requests to the DNS server that matched the domain for the host
being requested.

If you have a VPN interface that adds "mycorp.com" to the search domain
that appears in /etc/resolv.conf search, so it contains "mycorp.com
localdomain" for example.  Then when someone tries to resolve "myhost",
the libc resolver sees that there are no dots here and so it starts
appending search paths to the hostname, in order, and sending them to
the DNS service to look up.  So first it will send "myhost.mycorp.com"
to the resolver.  The resolver sees that the hostname ends in
"mycorp.com" and it knows that the VPN DNS servers "own" that domain, so
it forwards that request to those servers for lookup.

If that doesn't match, then the libc resolver will try to look up
"myhost.localdomain".  That does NOT match the VPN domain, so it will
not try to forward that to the DNS servers for the VPN connection and
instead use a different resolver.

I don't think there's any information leakage here.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1726124

Title:
  DNS domain search paths not updated when VPN started

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/network-manager/+bug/1726124/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to