Did the change break existing code ?

What I did understand about the dnsmasq options --resolv-file (UCI 
dhcp:dnsmasq.resolvfile) and --no-resolv (UCI dhcp:dnsmasq.noresolv) is:

- the --no-resolv option governs whether dnsmasq ignores the nameservers listed 
in the resolvfile.
- the resolvfile dnsmasq reads by default is the file /etc/resolv.conf unless 
set otherwise with --resolv-file (LEDE soft links that file to /tmp/dnsmasq 
which by default soft links again to /tmp/resolv.conf.auto which is written by 
netifd).
- the contents of the resolvfile is normally populated with the DNS servers of 
the upstream link.
- nameservers to be used by dnsmasq can (also) be configured with the --server 
option (UCI:dhcp dnsmasq.server); several may of these option may be passed.

With LEDE/OpenWrt different instance of dnsmasq can run each with separate UCI 
options.
When running multiple instances and one of those must **not** use the upstream 
nameservers, than set dhcp:dnsmasq[i].noresolv to '1' and if needed specify one 
or more name servers with the UCI dhcp:dnsmasq[i].server list option.

One could write different resolvfiles manually and specify different UCI 
dhcp:dnsmasq.resolvfile options for each instance, but that is not what those 
files are meant for. The resolvfile is for use by the resolver routines of the 
C library which are used by processes running on the host [1]. By reading the 
resolvfile dnsmasq gets to know the nameservers of the upstream link; most 
times those are the nameservers dnsmasq will use, but not necessarily.

Conclusion: in order to get dnsmasq **not** to share nameservers with other 
instances, set noresolv to '1' and specify one or more nameservers to use with 
the server list option.

Hopefully I did understand your problem well, bye,
Paul

[1] man 5 resolv.conf


> Op 12 jun. 2017, om 18:09 heeft e9hack <e9h...@gmail.com> het volgende 
> geschreven:
> 
> Hi,
> 
> IMHO, usage of the resolve file is completely wrong. If option 'resolvfile' 
> is not given for a configuration, dnsmasq
> must run without a parameter resolv-file='..' and uses /etc/resolv.conf which 
> is a symbolic link to /tmp/resolv.conf. In
> this case, the init script writes to /tmp/resolv.conf. If option 'resolvfile' 
> is given, dnsmasq must run with a
> parameter resolv-file='..'. The init script writes to the given resolve file. 
> This is important, if two instances of
> dnsmasq are running with different configurations and which cannot share any 
> data, e.g. 1th dnsmasq for the normal lan,
> 2th dnsmasq for a tor proxy.
> 
> Regards,
> Hartmut


_______________________________________________
Lede-dev mailing list
Lede-dev@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/lede-dev

Reply via email to