[Samba] Dynamic Updates to Bind DLZ through DHCP have repeated errors in syslog
Rowland penny
rpenny at samba.org
Fri Jan 29 18:51:15 UTC 2021
On 29/01/2021 18:06, ralph strebbing wrote:
> These records specifically are generated by the script from DHCP.
> Looking at what it's passing (in the previous log file), I think the
> issue is stemming from the script grabbing and passing the MAC, but
> not the hostname, which is what Samba-tool uses.
If you are adding a record, dhcp should be passing the hostname:
Jan 11 15:08:50 dc4 dhcpd[2228]: Commit: IP: 192.168.0.73 DHCID:
cc:4e:ec:1f:48:ef Name: HUMAX
Jan 11 15:08:50 dc4 dhcpd[2228]: execute_statement argv[0] =
/usr/local/bin/dhcp-dyndns.sh
Jan 11 15:08:50 dc4 dhcpd[2228]: execute_statement argv[1] = add
Jan 11 15:08:50 dc4 dhcpd[2228]: execute_statement argv[2] = 192.168.0.73
Jan 11 15:08:50 dc4 dhcpd[2228]: execute_statement argv[3] =
cc:4e:ec:1f:48:ef
Jan 11 15:08:50 dc4 dhcpd[2228]: execute_statement argv[4] = HUMAX
If it isn't, you need to find out why, the script depends on receiving
the required data.
If you are deleting a record, then the script just requires the IP, the
hostname will be found by this:
# Exit if no computer name supplied, unless the action is 'delete'
if [ -z "${name}" ]; then
if [ "${action}" = "delete" ]; then
name=$(host -t PTR "${ip}" | awk '{print $NF}' | awk -F '.'
'{print $1}')
else
usage
exit 1;
fi
fi
That piece of code should obtain the short hostname from the IP, unless
the record does not exist or the wrong data is being returned by the
'host' command.
> I just tested it manually, and deleting a record in DNS took the following args:
> samba-tool dns delete <server> <zone> <name> <Record Type> <record data>
>
> The example I used and succeeded on manually was: samba-tool dns
> delete dc1 domain.com sys-rstrebbing A 10.60.2.35 (My laptop). It ran
> fine.
> If I understand the logs correctly from your script, this is what it's passing:
> samba-tool dns delete dc1 domain.com 0 A 10.60.2.11 <---Example based
> on args given in the log file.
No, my script isn't 'passing' 10.60.2.11 , it is what is being passed to
it by dhcp
> So would it even be possible to grab the hostname on an expiring
> lease? Looking over the wiki again I noticed this comment on the code
> in dhcpd.conf
> In the on expiry block:
> # cannot get a ClientMac here, apparently this only works when
> actually receiving a packet
> and
> # cannot get a ClientName here, for some reason that always fails
This is an artefact of dhcp, the bash script can only use what is passed
to it.
> By chance has the second one changed? Because otherwise samba doesn't
> seem to allow removing the record since the name of the record
> (ClientName) almost seems like it's a critical piece of this. Or if
> anyone else has come to another solution to get the information
> another way while the script runs.
The different IP has something to do with your setup and is not
something I have ever seen, I cannot fix this, you need to find out why
the IP changed.
Rowland
More information about the samba
mailing list