Re: nss_myhostname as default in Fedora

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 2016-01-26 at 09:47 -0800, Andrew Lutomirski wrote:
> On Tue, Jan 26, 2016 at 9:19 AM, Dan Williams <dcbw@xxxxxxxxxx>
> wrote:
> > On Mon, 2016-01-25 at 19:43 -0800, Andrew Lutomirski wrote:
> > > On Mon, Jan 25, 2016 at 6:34 PM, Peter Robinson <
> > > pbrobinson@xxxxxxxxx
> > > > wrote:
> > > > > > > > > It is intended as a convenient fallback mechanism,
> > > > > > > > > and is
> > > > > > > > > only supposed
> > > > > > > > > to have an effect if 'gateway' is not defined in the
> > > > > > > > > local DNS (the
> > > > > > > > > 'domain' or 'search' zones). Would it help if those
> > > > > > > > > limitations were
> > > > > > > > > more explicit, e.g. documented in nss-myhostname(8)?
> > > > > > > > 
> > > > > > > > I understand that the goal is that nss_myhostname will
> > > > > > > > not
> > > > > > > > override
> > > > > > > > existing names, due to the way the NSS is configured.
> > > > > > > > 
> > > > > > > > What I do not understand is how the the “gateway” name
> > > > > > > > can
> > > > > > > > be
> > > > > > > > useful.
> > > > > > > 
> > > > > > > Here's a very obvious, trivial example: wherever I am I
> > > > > > > can
> > > > > > > now simply
> > > > > > > type "ping gateway" to know whether connectivity to my
> > > > > > > local
> > > > > > > router
> > > > > > > works.
> > > > > > 
> > > > > > But that's not actually true, isn't it?  If nss_myhostname
> > > > > > doesn't
> > > > > > override “gateway”, the outcome depends on the network you
> > > > > > are
> > > > > > on.  With
> > > > > > a captive portal, you are likely pinging the portal server,
> > > > > > not
> > > > > > the
> > > > > > default gateway.  And if you are on one of Microsoft's
> > > > > > corporate
> > > > > > networks, you might end up at gateway.microsoft.com
> > > > > > (whatever
> > > > > > this
> > > > > > is).
> > > > > 
> > > > > Well, IRL you'd actually quickly notice, since ping shows you
> > > > > the
> > > > > full
> > > > > fqdn of the host, and hence gives you a very clear hint on
> > > > > what
> > > > > it is
> > > > > actually pinging.
> > > > > 
> > > > > > Because it's so unreliable, we cannot put this trick into
> > > > > > documentation,
> > > > > > and we shouldn't train users to rely on this functionality.
> > > > > 
> > > > > Yeah, single-label names are like that. If you want trustable
> > > > > single-label names, you better shouldn't use search domains
> > > > > (and
> > > > > quite
> > > > > frankly, I am not particularly a fan of the search domain
> > > > > concept
> > > > > myself, because of its ambiguities. In systemd-resolved we by
> > > > > default
> > > > > ignore the DHCP-reported search domains because of this.)
> > > > > 
> > > > > Note that systemd-resolved's LLMNR implementation actually
> > > > > excepts
> > > > > itself from resolving "gateway" even though a single-label
> > > > > name
> > > > > (it
> > > > > also excepts itself from a couple of other names, such as
> > > > > "localhost"). Which basically means: the "gateway" name is
> > > > > safe
> > > > > exactly when you turn off the search domain logic (or to put
> > > > > this
> > > > > correctly if networkd is used: it is safe unless you *turn
> > > > > on*
> > > > > the
> > > > > search domain logic).
> > > > > 
> > > > > > Right.  If software (or documentation) uses “gateway” to
> > > > > > mean
> > > > > > “address
> > > > > > of the default gateway”, it will break, depending on search
> > > > > > path
> > > > > > configuration and other network properties.
> > > > > > 
> > > > > > I don't think this is what Fedora wants (and what you
> > > > > > intended).
> > > > > 
> > > > > I disagree. It only breaks if the user enables domain search
> > > > > logic,
> > > > > and configures a domain in there that actually serves a host
> > > > > called
> > > > > "gateway".
> > > > 
> > > > Which from my time, a good 10 years or so, at a large global
> > > > service
> > > > provider and as a Red Hat consultant on customer sites both of
> > > > those
> > > > were often true so I'm not sure it's something that you can
> > > > assume
> > > > either way. And given on those networks there's generally LOT
> > > > of
> > > > legacy platforms that make assumptions about that sort of thing
> > > > I'm
> > > > not sure it's something you can just turn around and say "well
> > > > just
> > > > turn it off you idiots".
> > > > 
> > > 
> > > I think that the "gateway" override should not be conflated with
> > > always letting the gethostname(2) return value resolve.
> > > 
> > > I also think that the whole gethostname(2) mechanism is
> > > terminally
> > > screwed up.  We abuse the hostname for multiple purposes:
> > > 
> > > 1. It shows up in the default bash prompt.
> > > 2. It gets sent to remote DHCP servers.  I think this is a
> > > mistake on
> > > desktop machines
> > 
> > When sent to DHCP servers, the hostname is used only for DDNS
> > updates
> > and not for any kind of client identification.  That's what the
> > Client
> > Identifier is used for, or missing that, the MAC address (depending
> > on
> > the server).  I'm not aware of any DHCP server that uses the DDNS
> > hostname as a lease identifier.
> > 
> > It's not a mistake to send a hostname if your DHCP server also
> > handles
> > DDNS updates.  It doesn't have to be the name set for the local
> > machine, but almost all of the time its going to be since you want
> > your
> > local queries to return the same result for your machine name as
> > non
> > -local queries would.
> > 
> > One problem is that there is no way to determine that the DHCP
> > server
> > has DDNS functionality enabled, and thus to selectively send the
> > hostname.  Which is why NetworkManager has ipv4.dhcp-send-hostname
> > and
> > ipv6.dhcp-send-hostname toggles so you can turn it off.
> 
> I think this depends a bit on the use case.
> 
> On a public network, I think that NetworkManager and related tools
> should send the bare minimum of identifying information.  I think
> that
> means that a MAC address should be sent and as little as possible
> that
> isn't a MAC address.  If I name my computer "fluffybunnies" or
> "mysocialsecuritynumber", I do *not* want to advertise that, and if
> something else on the network is trying to resolve fluffybunnies
> using
> DDNS, then something is already very wrong.
> 
> On a private network that uses pre-assigned MAC-to-IP+name or
> port-to-IP+name mappings on the DHCP server, DDNS is irrelevant.
> 
> That leaves only private networks that actually use DDNS in some
> useful manner with a user clueful enough to set up a meaningful name.
> 
> I still think that, for the default workstation use case, configuring
> a hostname as a mandatory part of installation is counterproductive.
> Would it make sense to improve support for hostname-less
> workstations?
>  NetworkManager could take hostname=="localhost" or
> "localhost.localdomain" to mean that DDNS should be turned off and
> the
> client ID should be "MAC<digits>" instead of "localhost".Would it
> make
> sense to teach NetworkManager to skip sending the client ID (or send
> some compatibility value) instead of "localhost"?
> 
> If public vs private networks ever get implemented in a meaningful
> manner, the same behavior could be flipped on for public networks.

Agreed.  The issue is more around UI; no interaction gurus that I know
think the Windows "PICK A ZONE FOOL!!!" is the right thing to do.  We
do have the firewall zone thing in NetworkManager, but that's not quite
the same thing as public/private networks, thought they are closely
related.  It's all possible to set right now by:

nmcli con mod <name> ipv4.dhcp-send-hostname false
nmcli con mod <name> ipv4.dhcp-client-id "sillyclientid"
nmcli con mod <name> 802-11-wireless.mac-address-randomization 2

and maybe a couple other toggles.  But it's more about the interaction
design than any underlying deficiencies in the software.

Dan
--
devel mailing list
devel@xxxxxxxxxxxxxxxxxxxxxxx
http://lists.fedoraproject.org/admin/lists/devel@xxxxxxxxxxxxxxxxxxxxxxx




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]
  Powered by Linux