<html>
<head>
<meta content="text/html; charset=windows-1252"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">On 12/2/16 10:07 AM, perl-list wrote:<br>
</div>
<blockquote
cite="mid:1323179569.210468.1480691256933.JavaMail.zimbra@network1.net"
type="cite">
<meta http-equiv="Context-Type" content="text/html; charset=utf-8">
<div>
<div>Robert,</div>
<div><br data-mce-bogus="1">
</div>
<div>I don't know anything about DDNS updates as I have never
used them, but I can confirm that on release {} in DHCPv6 does
not seem to have access to any of the option data. I had the
same problem and asked the list about it more than a week ago.
I was met with silence. If a developer could comment on this
being a bug or simply not implemented yet, that would be
great. Target for inclusion of option data in on release {}
statements?<br>
<br>
<hr id="zwchr" data-marker="__DIVIDER__">
<div data-marker="__HEADERS__">
<blockquote><b>From: </b>"Robert Senger"
<a class="moz-txt-link-rfc2396E" href="mailto:robert.senger@lists.microscopium.de"><robert.senger@lists.microscopium.de></a><br>
<b>To: </b>"Users of ISC DHCP"
<a class="moz-txt-link-rfc2396E" href="mailto:dhcp-users@lists.isc.org"><dhcp-users@lists.isc.org></a><br>
<b>Sent: </b>Friday, December 2, 2016 10:01:31 AM<br>
<b>Subject: </b>Issues with dhcpv6 and ddns updates<br>
</blockquote>
</div>
<div data-marker="__QUOTED_TEXT__">
<blockquote>Hi there,<br>
<br>
I am running isc-dhcp-server in ipv6 mode, and I'd like to
update the<br>
local internal dns zones hosted by bind9 with dhcpv6
client's names and<br>
ipv6 addresses.<br>
<br>
The built-in ddns seems to be completely unable to remove
entries from<br>
the dns upon expiry or release, so I ended up doing ddns
stuff on my<br>
own using "on commit|expiry|release" event handlers and
corresponding<br>
scripts.<br>
<br>
But this also has issues with expiry and release events.
While<br>
(almost...) everything is fine with commits, I am having
trouble<br>
getting enough information about which hosts lease has
expired or was<br>
released.<br>
<br>
This is the code I have in the dhcpd6.conf global scope:<br>
<br>
on commit<br>
{ <br>
<br>
set ClientMac =<br>
"n/a"; <br>
<br>
set ClientIP =
pick-first-value(binary-to-ascii(16, 16, ":",<br>
substring(option dhcp6.ia-na, 16, 16)),<br>
"n/a"); <br>
set ClientID =
pick-first-value(binary-to-ascii(16, 8, ":",<br>
option dhcp6.client-id),<br>
"n/a"); <br>
set ClientName = pick-first-value(ddns-hostname,
option<br>
fqdn.hostname, option host-name,<br>
"n/a"); <br>
log(concat("Commit (global): Mac: ", ClientMac, ",
IP: ",<br>
ClientIP, ", Name: ", ClientName, ", ID: ",<br>
ClientID)); <br>
#execute("/etc/dhcp/dhcp6commit.sh", ClientMac,
ClientIP,<br>
ClientName,<br>
ClientID); <br>
} <br>
<br>
<br>
on expiry<br>
{ <br>
<br>
set ClientMac =<br>
"n/a"; <br>
<br>
set ClientIP =
pick-first-value(binary-to-ascii(16, 16, ":",<br>
substring(option dhcp6.ia-na, 16, 16)),<br>
"n/a"); <br>
set ClientID =
pick-first-value(binary-to-ascii(16, 8, ":",<br>
option dhcp6.client-id),<br>
"n/a"); <br>
set ClientName = pick-first-value(ddns-hostname,
option<br>
fqdn.hostname, option host-name,<br>
"n/a"); <br>
log(concat("Expiry (global): Mac: ", ClientMac, ",
IP: ",<br>
ClientIP, ", Name: ", ClientName, ", ID: ",<br>
ClientID)); <br>
#execute("/etc/dhcp/dhcp6expiry.sh", ClientMac,
ClientIP,<br>
ClientName,<br>
ClientID); <br>
} <br>
<br>
<br>
on release<br>
{ <br>
<br>
set ClientMac =<br>
"n/a"; <br>
<br>
set ClientIP =
pick-first-value(binary-to-ascii(16, 16, ":",<br>
substring(option dhcp6.ia-na, 16, 16)),<br>
"n/a"); <br>
set ClientID =
pick-first-value(binary-to-ascii(16, 8, ":",<br>
option dhcp6.client-id),<br>
"n/a"); <br>
set ClientName = pick-first-value(ddns-hostname,
option<br>
fqdn.hostname, option host-name,<br>
"n/a"); <br>
log(concat("Release (global): Mac: ", ClientMac,
", IP: ",<br>
ClientIP, ", Name: ", ClientName, ", ID: ",<br>
ClientID)); <br>
#execute("/etc/dhcp/dhcp6release.sh", ClientMac,
ClientIP,<br>
ClientName,<br>
ClientID); <br>
}
<br>
<br>
<br>
(I've commented the "execute" statement to not mess up
ddns while<br>
testing).<br>
<br>
And this is what I see in the dhcp log:<br>
<br>
Commit:<br>
<br>
Dec 2 15:02:02 prokyon dhcpd: Reply NA: address<br>
fd10:2842:f0d1:414:b64e:8a55:154d:ad6 to client with duid<br>
00:01:00:01:1e:dd:f7:4d:00:12:f0:90:5a:49 iaid = 1 valid
for 1200<br>
seconds<br>
Dec 2 15:02:02 prokyon dhcpd: Commit (global): Mac: n/a,
IP:<br>
fd10:2842:f0d1:414:b64e:8a55:154d:ad6, Name: n/a, ID:<br>
0:1:0:1:1e:dd:f7:4d:0:12:f0:90:5a:49<br>
<br>
Release:<br>
<br>
Dec 2 15:03:39 prokyon dhcpd: Client<br>
00:01:00:01:1e:dd:f7:4d:00:12:f0:90:5a:49 releases address<br>
fd10:2842:f0d1:414:b64e:8a55:154d:ad6<br>
Dec 2 15:03:39 prokyon dhcpd: Release (global): Mac: n/a,
IP: n/a,<br>
Name: n/a, ID: n/a<br>
<br>
Expiry:<br>
<br>
Dec 2 15:14:04 prokyon dhcpd: Expiry (global): Mac: n/a,
IP: n/a,<br>
Name: n/a, ID: n/a<br>
<br>
So, everything is alright for commit events, except that
there's no<br>
hostname available. I know how to create a custom hostname
from address<br>
or id, so this is not really a problem.<br>
<br>
But for expiry and release events, there's simply nothing
that can be<br>
passed on to the scripts. No address, no name, no id. It's
impossible<br>
to remove dns entries. <br>
<br>
<br>
Next, if I move the "set ClientIP = " lines from inside
the "on<br>
commit|expiry|release" event handlers above those into the
global<br>
scope, I magically get the address for expiry, but not for
release:<br>
<br>
Dec 2 15:35:55 prokyon dhcpd: Expiry (global): Mac: n/a,
IP:<br>
fd10:2842:f0d1:414:b64e:8a55:154d:ad6, Name: n/a, ID: n/a<br>
Dec 2 15:38:17 prokyon dhcpd: Release (global): Mac: n/a,
IP: n/a,<br>
Name: n/a, ID: n/a<br>
<br>
<br>
Moving all this code into a host statement (works for
known hosts only,<br>
of course), finally makes it possible to get a hostname
and to perform<br>
clean ddns updates for commit and expiry, but it requires
at least one<br>
dns lookup in the script to get the address from the
hostname for<br>
release events, which is a really, really ugly hack. <br>
<br>
Am I doing something wrong, did I miss something, or ist
this<br>
intended behavior or even a bug?<br>
<br>
Thanks for help,<br>
<br>
Robert<br>
<br>
<br>
-- <br>
Robert Senger<br>
<br>
<br>
-- <br>
Robert Senger<br>
<br>
<br>
<br>
_______________________________________________<br>
dhcp-users mailing list<br>
<a class="moz-txt-link-abbreviated" href="mailto:dhcp-users@lists.isc.org">dhcp-users@lists.isc.org</a><br>
<a class="moz-txt-link-freetext" href="https://lists.isc.org/mailman/listinfo/dhcp-users">https://lists.isc.org/mailman/listinfo/dhcp-users</a></blockquote>
</div>
</div>
<br>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
dhcp-users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:dhcp-users@lists.isc.org">dhcp-users@lists.isc.org</a>
<a class="moz-txt-link-freetext" href="https://lists.isc.org/mailman/listinfo/dhcp-users">https://lists.isc.org/mailman/listinfo/dhcp-users</a></pre>
</blockquote>
<p>Hello Robert:</p>
<p>Sorry for the belated reply, ISC is a small non-profit with
limited resources and we do what we can. Contributions are always
welcome. In order to make options available during releases,
regardless of whether we're discussing v4 of v6, the server would
have to execute all of the configuration statements down to
appropriate scope as is done when granting or renewing leases.
The same applies to lease expiration processing.<br>
</p>
<p>As to why this has never been added I cannot say, however adding
it might have unintended consequences. It is something we we
would have to examine closely and if we were to add, it would be
disabled by default, enabled with a run time option. If you
submit a feature request by emailing <a class="moz-txt-link-abbreviated" href="mailto:dhcp-suggest@isc.org">dhcp-suggest@isc.org</a>, I will
add it to the list of items under consideration for inclusion in
4.4.0 release, due sometime in 2017 (date is TBD).<br>
</p>
<p><br>
</p>
<p>Sincerely,</p>
<p>Thomas Markwalder</p>
<p>ISC Software Engineering<br>
</p>
<p><br>
</p>
<p><br>
</p>
</body>
</html>