On Jan 9, 2009, at 12:03 PM, Scott Haneda wrote:

On Jan 9, 2009, at 9:38 AM, Chris Buxton wrote:

On Jan 9, 2009, at 3:14 AM, Scott Haneda wrote:
It is getting important to know if you are on Mac OS X, if you are, this may have been solved, and somehow, I overlooked it.

It appears launcd, the cron replacement tool in OS X, can start named before the network interfaces come up. I am not sure.

When this problem occurs, it affects all of named's ports, not just the TCP port. Also, Apple's version of BIND is not built from the stock source code; they have modified it to request that the kernel send a SIGHUP whenever the network configuration changes, to work around this very problem.

Unfortunately, their solution requires that named run as root. The wrapper script you posted was written as a different way to solve the same issue, and it does not rely on named running as root. It just waits for a network interface other than the loopback interface to be configured before starting named.

We have seen named's TCP port go deaf over time on Mac OS X, without any reboot in between. We have not been able to find a reason, but it may be that if the port is inactive for a long period of time, something may close or block it.


Thanks Chris. If that is the case, then the wrapper script is not going to help me. I think my first course of action is going to be to update named and move it elsewhere so Apple does not write over it. After that, what do you think about a small tickler that pokes into port 53 every now and again to prove if silence time is really causing it to close?


Sure, create a launchd job (using launchd as a cron replacement) that runs every 15 minutes and checks port 53/TCP. You can probably use netcat for that, or maybe nmap (which you would have to install).

'launchd' is a replacement for an init scripts system (e.g. the old Mac OS X StartupItems system), [x]inetd, and cron, all at once. Therefore, unless you can find a working cron-like example, you may have to dig through the launchd.plist manpage to figure out what to put into the job file. Note that the manpage is not terribly well- written, nor is it entirely correct.

I would start with "StartInterval" in the plist file. Have that trigger a short script that checks to see if named is running, then waits 10 seconds (or whatever) in case the script was started at the same time as everything else (including named). Then probe the port and take any necessary action.

Chris Buxton
Professional Services
Men & Mice

_______________________________________________
bind-users mailing list
bind-users@lists.isc.org
https://lists.isc.org/mailman/listinfo/bind-users

Reply via email to