• L
    network: only prevent forwarding of DNS requests for unqualified names · f69a6b98
    Laine Stump 提交于
    In commit f3868259 we began adding the options
    
      --domain-needed
      --local=/$mydomain/
    
    to all dnsmasq commandlines with the stated reason of preventing
    forwarding of DNS queries for names that weren't fully qualified
    domain names ("FQDN", i.e. a name that included some "."s and a domain
    name). This was later changed to
    
      domain-needed
      local=/$mydomain/
    
    when we moved the options from the dnsmasq commandline to a conf file.
    
    The original patch on the list, and discussion about it, is here:
    
      https://www.redhat.com/archives/libvir-list/2012-August/msg01594.html
    
    When a domain name isn't specified (mydomain == ""), the addition of
    "domain-needed local=//" will prevent forwarding of domain-less
    requests to the virtualization host's DNS resolver, but if a domain
    *is* specified, the addition of "local=/domain/" will prevent
    forwarding of any requests for *qualified* names within that domain
    that aren't resolvable by libvirt's dnsmasq itself.
    
    An example of the problems this causes - let's say a network is
    defined with:
    
       <domain name='example.com'/>
       <dhcp>
          ..
          <host mac='52:54:00:11:22:33' ip='1.2.3.4' name='myguest'/>
       </dhcp>
    
    This results in "local=/example.com/" being added to the dnsmasq options.
    
    If a guest requests "myguest" or "myguest.example.com", that will be
    resolved by dnsmasq. If the guest asks for "www.example.com", dnsmasq
    will not know the answer, but instead of forwarding it to the host, it
    will return NOT FOUND to the guest. In most cases that isn't the
    behavior an admin is looking for.
    
    A later patch (commit 4f595ba6) attempted to remedy this by adding a
    "forwardPlainNames" attribute to the <dns> element. The idea was that
    if forwardPlainNames='yes' (default is 'no'), we would allow
    unresolved names to be forwarded. However, that patch was botched, in
    that it only removed the "domain-needed" option when
    forwardPlainNames='yes', and left the "local=/mydomain/".
    
    Really we should have been just including the option "--domain-needed
    --local=//" (note the lack of domain name) regardless of the
    configured domain of the network, so that requests for names without a
    domain would be treated as "local to dnsmasq" and not forwarded, but
    all others (including those in the network's configured domain) would
    be forwarded. We also shouldn't include *either* of those options if
    forwardPlainNames='yes'. This patch makes those corrections.
    
    This patch doesn't remedy the fact that default behavior was changed
    by the addition of this feature. That will be handled in a subsequent
    patch.
    f69a6b98
netboot-network.conf 710 字节