[Dnsmasq-discuss] writing a dhclient-exit-hooks script to manage dnsmasq

richardvoigt at gmail.com richardvoigt at gmail.com
Thu Jul 9 05:48:54 BST 2009


On Wed, Jul 8, 2009 at 8:12 PM, Rance Hall<ranceh at gmail.com> wrote:
> hey gang, Im trying to do something I've done repeatedly with static
> external ip addresses but now that I have a external dhcp address
> things have gone a little off.
>
> What I used to do was mv /etc/resolv.conf to /etc/resolv.conf.dnsmasq
> and tell dnsmasq to read this file instead of /etc/resolv.conf  then I
> would edit /etc/resolv.conf to point the machine back to itself.

Yep, that's a pretty common setup.

>
> This way during normal operation the dhcp server ping, ssh, etc to the
> same machines by hostname that the clients all did.
>
> no biggie
>
> Enter a dhcp based external interface
>
> /etc/resolv.conf is rewritten from time to time as my ISP uses a set
> of DNS servers and selects the least busy one to give out for load
> balancing reasons.
>
> There are lots of tutorials on how to get /etc/resolv.conf to NOT get
> rewritten, but if the ISP changes it on purpose, not rewriting the
> file is not an option.
>
> so, I came up with the idea of creating an extra file called
> /etc/resolv.conf.perm for the permanant /etc/resolv.conf to reside.
>
> Then as part of dhclient-exit-hooks, I would check if /etc/resolv.conf
> had been rewritten some way and if it did, move the .conf file to
> .conf.dnsmasq and then copy the .conf.perm into .conf

You can configure dhclient to overwrite /etc/resolv.conf.dnsmasq
instead of /etc/resolv.conf

>
> then I would have to send dnsmasq a signal (a SIGHUP if I read the
> docs correctly)
>
> Then I need the script to do something strange, I want it to upload a
> file to my isp's webhosting account so that my public ip address is
> available via a simple grep of a downloaded .html file  I already know
> how to script an ftp session, so that part is easy.
>
> I have several questions...
>
> 1) according to dnsmasq documentation a SIGHUP will cause all the
> config files to re re-read and it will also re-read /etc/resolv.conf
> if the no-poll option is set.
>
> Am I reading this correctly? Is there a way to ask dnsmasq to just
> re-read the resolv file without having to reload everything?

If you don't set the no-poll option, then dnsmasq will notice the
change and re-read just the DNS server settings, no SIGHUP required.

Also SIGHUP doesn't actually re-apply the entire configuration, some
settings can't be changed after dnsmasq forks as a restricted user.

>
> 2) I'm not convinced that dhclient-exit-hooks is the right place for
> this, but I cant think of another.  There are lots of google hits on
> errors with dhclient-exit-hooks not running.
> Not to mention that I dont yet understand when the various things
> happen that dhclient-script asks for.  (like "Is /etc/resolv.conf
> created before or after the exit-hooks-script is run?"
> or "What about one of the interface specific scripts that
> dhclient-script executes at different places in the process?" or "Is
> the value of the new IP available to a dhclient-exit-hooks script so I
> could just reference the variable, or do I have to look it up on my
> own?"
>
> If someone would be so kind as to help straighten me out with a
> pointer to a good primer, or something like that I would be grateful.
>
> Is there a better way/place to do what I want to do?
>
> 3) if anyone has done anything like this, and wouldn't mind sharing,
> I'd love to see a reasonably active script that really does some
> stuff.
>
> Thanks all for the time, and I apologize for the parts of this that
> are related, but maybe off topic
> As a way of saying thanks I would like to contribute the script for
> public use when its done.
>
> Simon, you think there is room for something like this in /contrib?
>
> _______________________________________________
> Dnsmasq-discuss mailing list
> Dnsmasq-discuss at lists.thekelleys.org.uk
> http://lists.thekelleys.org.uk/mailman/listinfo/dnsmasq-discuss
>



More information about the Dnsmasq-discuss mailing list