Getting DHCP to use resolv.conf? AN ANSWER

fbsd fbsd at a1poweruser.com
Thu May 4 00:55:50 UTC 2006


>
>
> -----Original Message-----
> From: owner-freebsd-questions at freebsd.org
> [mailto:owner-freebsd-questions at freebsd.org]On Behalf Of Murray
Taylor
> Sent: Sunday, April 30, 2006 7:56 PM
> To: Lowell Gilbert
> Cc: freebsd-questions at freebsd.org
> Subject: RE: Getting DHCP to use resolv.conf? AN ANSWER
>
>
> Murray.
>
> Using your scripts as a example I coded the following script.
> I can not get the notification logger and email to function.
> I am running postfix launched by the sendmail wrappers on a
> FreeBSD 6.0 system.
> I am also using the built in dhclient that comes with the
> base install.
> Could you post the isc_dhclient-script so I can compare it to
> the one that comes with the base install for differences that
> may cause this behavior?
> Any other help would be appreciated.
>
>
> When this script runs the logger statements do not create any
> message in the targeted log files.
> IF I execute the same logger statements from the command line
> they work as expected.
> This is the boot time messages with mail code commented out.
>
> dc0: link state changed to DOWN
> dc0: no link ....dc0: link state changed to UP  got link
> dc0: link state changed to DOWN
> DHCPREQUEST on dc0 to 255.255.255.255 port 67
> dc0: link state changed to UP
> DHCPACK from 10.0.10.2
> dc0: link state changed to DOWN
> bound to 10.0.10.4 -- renewal in 43200 seconds.
>
>
> IF I execute the cat command to issue the notification email
> from the command line it works fine, but when used in the
> script I get these messages during boot process.
>
> "~/.mailrc": No match.
> DHCPREQUEST on dc0 to 255.255.255.255 port 67
> /libexec/ld-elf.so.1: Shared object "libpcre.so.0" not found,
> required by "send-mail"
> dc0: link state changed to UP
> DHCPREQUEST on dc0 to 255.255.255.255 port 67 DHCPACK from
10.0.10.2
> dc0: link state changed to DOWN
> bound to 10.0.10.4 -- renewal in 43200 seconds.
>
>
>
>
> #!/bin/sh
>
> #############  Start of refresh dhcpd dns ip script
> ############# # This script will propagate to dhcpd the
> changed dns servers ip # address which dhcp-client puts in
> resolv.conf.
> #
> # In dhcpd.conf replace the "option domain-name-servers" line
> with this # #  include "/etc/dhcpd.name-servers"; # # Script
> uses the dhcpc variables to build temp line in dhcpd format.
> # Then compare temp content to production content.
> # If different replace production content with new content
> from temp # and restart dhcp to reread dhcpd.conf containing
> new ISP dns ip addresses.
> #
> # logging event and sending email to user root is optional.
> #
> # Note: All LAN machines using dhcpd will not get new ISP dns
> ip # addresses until they reboot or their lease comes up for
renewal.
> #
> # Each of the following lines must be one long line. IE: no
> wrap around
>
####################################################################
>
> # load my_domain_name_servers variable with ISP dns ip
> addresses from dhcpc my_domain_name_servers=`echo
> $new_domain_name_servers | sed -e 's/ /, /g'`
>
> # Create single line in file to be included in dhcpd.conf
> echo "option domain-name-servers $my_domain_name_servers ;" >
> /etc/dhcpd.name-servers.tmp
>
> # See if different from what production file contains cmp -s
> /etc/dhcpd.name-servers.tmp /etc/dhcpd.name-servers if [ $?
> -gt 0 ]; then
>   # move the new file into place
>   mv /etc/dhcpd.name-servers.tmp /etc/dhcpd.name-servers
>   # restart dhcp using whatever is appropriate for your platform
>   #service dhcpd restart
>   #/usr/local/etc/rc.d/isc-dhcpd.sh restart -q
>   # Write message to /var/log/dhcpc.log to document event.
>   logger -p user.warning -t dhclient Your ISP DNS IP
> addresses changed.
>   # Write message to /var/log/dhcpd.log to document event.
>   logger -p local1.warning -t dhclient Your ISP DNS IP
> addresses changed.
>
>   # Send notification email to root user. This can wrap to next
line.
> #  cat << EOF | mail -s "dhcp client changed ISP DNS IP addresses"
> root
> #The dhclient-exit-hook script was invoked and has determined
> that your #ISP changed the IP address of their DNS servers.
> The new values have been #auto updated to dhcpd.conf and dhcp
> restarted so they are now in effect.
> #
> #Note: All LAN machines using dhcpd will not start using the
> new ISP dns #ip addresses until they reboot or their lease
> comes up for renewal.
> #EOF
> fi
> rm -f /etc/dhcpd.name-servers.tmp
> ###############  End of refresh dhcpd dns ip script
> ###################

The script I sent are operational on FBSD 4.11
with the enter/exit-hooks scripts that are
part of the base install.
NB Dont forget I run the ipf firewall rewrite rules script manually
as
root
when my IP number changes, but the DHCP -> resolv.conf is automatic
via exit-hooks

The scripts are always called by dhclient, what I put in them
is what I attached.

And I am also using Postfix ... As far as I remenber pcre is only
needed by Postfix if you use pcre:<check-file> regular expression
type files in main.cf. If you use regexp:<check-file> then pcre is
not
used.


Murray Taylor

---------------------------------------------------------------

Murry
The only difference between us is I am running FreeBSD 6.0. & you
4.11.
I had another exit-hooks script that worked fine when I was
running all the versions in 4.x series.
Currents tests show that even the IF statement in the script does
not work either.
I think this is turning into looking like a bug in the 6.0 release.
I jumped from 4.11 to 6.0 doing a fresh install.
Problem may have been in 5.x series also.

I believe the recorder directives were added to the /etc/rc.d boot
process
as part of version 5.0 development series and the build in dhclient
boot process was over looked so it no longer is getting executed at
the time when all the resources it needs are active yet.






More information about the freebsd-questions mailing list