That makes sense. I may just do that. Since /etc/ethers and
/etc/dnsmasq-hosts.d would both be reread upon a SIGHUP signal, it seems
that there wouldn't be much of a difference either way, other than, as you
say, one way is more confusing than another.

Thanks again!
On Feb 11, 2014 5:36 AM, "Simon Kelley" <si...@thekelleys.org.uk> wrote:

> On 08/02/14 17:42, Linux Luser wrote:
>
>> dhcp-ignore-clid might just work for the long-term. But I ended up
>> playing around a bit more and I've managed to isolate the part of my
>> config that I believe triggers the problem. Maybe this can be fixed
>> without a dhcp-ignore-clid option?
>>
>> When I set a host's MAC address and IP association in /etc/ethers (with
>> the read-ethers option on of course) and that same host's IP address to
>> hostname association in /etc/hosts, I am able to get a consistent IP,
>> whether or not that same host is using PXE boot, the Debian installer
>> (where it send the vendor-id as "d-i", which shouldn't matter in this
>> case) or boots to its own image on the drive. It is consistent, that is,
>> until I implement a "trick" that I wanted to use so I could whitelist
>> hosts for PXEboot. That's when it got inconsistent and I would end up
>> with a brand new IP address for PXE and usually another brand new one
>> when the host boot into it's own OS. I could only get the IP that I had
>> set in /etc/ethers if I restarted dnsmasq on the server. Otherwise the
>> host would receive the same WRONG IP over and over for each renewal.
>>
>> Here's the config I had BEFORE implementing a "PXEboot whitelist":
>>
>> domain-needed
>> bogus-priv
>> log-dhcp
>>
>> domain=mydomain
>> local=/mydomain/
>> server=8.8.8.8
>> server=8.8.4.4
>>
>> interface=eth0
>> except-interface=eth1
>>
>> expand-hosts
>> read-ethers
>>
>> dhcp-range=tag:known,set:controller,10.1.0.1,10.1.255.254,2h
>> dhcp-range=tag:known,set:device,10.2.0.1,10.2.255.254,2h
>> dhcp-option=option:router,10.0.0.1
>>
>> enable-tftp
>> tftp-root=/tftpboot
>> dhcp-boot=pxelinux.0
>>
>>
>> Now, I'll add the lines which allow me to use a directory of files for
>> dhcp-host commands:
>>
>> dhcp-vendorclass=pxe,PXEClient
>> dhcp-ignore=tag:pxe,tag:!install
>> dhcp-hostsfile=/etc/dnsmasq-hosts.d
>>
>>
>> Inside of /etc/dnsmasq-hosts.d then I can put files that contain lines
>> like this one:
>>
>> 01:02:03:04:05:06,set:install
>>
>> ... and send a SIGHUP to dnsmasq process. After this, the host with that
>> MAC address gets the tag "install" and instead of ignoring PXEboot,
>> dnsmasq will respond for that host. Wonderful! Problem: now I'm getting
>> wildly different MAC addresses. It's like dnsmasq is reading the files
>> in /etc/dnsmasq-hosts.d and ignoring the /etc/ethers file. Is this
>> expected behavior? A bug? I know that specifying a DIRECTORY instead of
>> a file for the dhcp-hostsfile is kind of a new feature. (For my
>> purposes, I'd prefer a directory because it's possible that several
>> processes might want to write files at the same time. It's easy to avoid
>> concurrency problems by putting files with unique names in a directory
>> (named after MAC or hostname or UUIDs, etc).)
>>
>>
>>
> My guess is that dnsmasq is failing to integrate the information from
> /etc/ethers and the dnsmasq-host.d file into a single coherent record.
> There are various heuristics in the code to do that for common situations,
> but since there no real "primary key", it difficult to do it generally. Do
> you merge the settings for a MAC address. for and IP address, for a
> hostname?
>
> The simplest solution is probably to abandon /etc/ethers, and put all the
> information in one place in the files in /etc/dnsmasq-hosts.d  It;s fine to
> keep what you have and add IP addresses and/or hostnames to that.
>
>  01:02:03:04:05:06,set:install,1.2.3.4
>
> Cheers,
>
> Simon
>
_______________________________________________
Dnsmasq-discuss mailing list
Dnsmasq-discuss@lists.thekelleys.org.uk
http://lists.thekelleys.org.uk/mailman/listinfo/dnsmasq-discuss

Reply via email to