Issues with dhcpv6 and ddns updates

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Issues with dhcpv6 and ddns updates

Robert Senger
Hi there,

I am running isc-dhcp-server in ipv6 mode, and I'd like to update the
local internal dns zones hosted by bind9 with dhcpv6 client's names and
ipv6 addresses.

The built-in ddns seems to be completely unable to remove entries from
the dns upon expiry or release, so I ended up doing ddns stuff on my
own using "on commit|expiry|release" event handlers and corresponding
scripts.

But this also has issues with expiry and release events. While
(almost...) everything is fine with commits, I am having trouble
getting enough information about which hosts lease has expired or was
released.

This is the code I have in the dhcpd6.conf global scope:

on commit
{                                                                      
                                                              
        set ClientMac =
"n/a";                                                                 
                                                
        set ClientIP = pick-first-value(binary-to-ascii(16, 16, ":",
substring(option dhcp6.ia-na, 16, 16)),
"n/a");                           
        set ClientID = pick-first-value(binary-to-ascii(16, 8, ":",
option dhcp6.client-id),
"n/a");                                           
        set ClientName = pick-first-value(ddns-hostname, option
fqdn.hostname, option host-name,
"n/a");                                       
        log(concat("Commit (global): Mac: ", ClientMac, ", IP: ",
ClientIP, ", Name: ", ClientName, ", ID: ",
ClientID));                      
        #execute("/etc/dhcp/dhcp6commit.sh", ClientMac, ClientIP,
ClientName,
ClientID);                                                       
}                                                                      
                                                                       
 
on expiry
{                                                                      
                                                              
        set ClientMac =
"n/a";                                                                 
                                                
        set ClientIP = pick-first-value(binary-to-ascii(16, 16, ":",
substring(option dhcp6.ia-na, 16, 16)),
"n/a");                           
        set ClientID = pick-first-value(binary-to-ascii(16, 8, ":",
option dhcp6.client-id),
"n/a");                                           
        set ClientName = pick-first-value(ddns-hostname, option
fqdn.hostname, option host-name,
"n/a");                                       
        log(concat("Expiry (global): Mac: ", ClientMac, ", IP: ",
ClientIP, ", Name: ", ClientName, ", ID: ",
ClientID));                      
        #execute("/etc/dhcp/dhcp6expiry.sh", ClientMac, ClientIP,
ClientName,
ClientID);                                                       
}                                                                      
                                                                       
 
on release
{                                                                      
                                                             
        set ClientMac =
"n/a";                                                                 
                                                
        set ClientIP = pick-first-value(binary-to-ascii(16, 16, ":",
substring(option dhcp6.ia-na, 16, 16)),
"n/a");                           
        set ClientID = pick-first-value(binary-to-ascii(16, 8, ":",
option dhcp6.client-id),
"n/a");                                           
        set ClientName = pick-first-value(ddns-hostname, option
fqdn.hostname, option host-name,
"n/a");                                       
        log(concat("Release (global): Mac: ", ClientMac, ", IP: ",
ClientIP, ", Name: ", ClientName, ", ID: ",
ClientID));                     
        #execute("/etc/dhcp/dhcp6release.sh", ClientMac, ClientIP,
ClientName,
ClientID);                                                      
}                                                                      
                                                                       

(I've commented the "execute" statement to not mess up ddns while
testing).

And this is what I see in the dhcp log:

Commit:

Dec  2 15:02:02 prokyon dhcpd: Reply NA: address
fd10:2842:f0d1:414:b64e:8a55:154d:ad6 to client with duid
00:01:00:01:1e:dd:f7:4d:00:12:f0:90:5a:49 iaid = 1 valid for 1200
seconds
Dec  2 15:02:02 prokyon dhcpd: Commit (global): Mac: n/a, IP:
fd10:2842:f0d1:414:b64e:8a55:154d:ad6, Name: n/a, ID:
0:1:0:1:1e:dd:f7:4d:0:12:f0:90:5a:49

Release:

Dec  2 15:03:39 prokyon dhcpd: Client
00:01:00:01:1e:dd:f7:4d:00:12:f0:90:5a:49 releases address
fd10:2842:f0d1:414:b64e:8a55:154d:ad6
Dec  2 15:03:39 prokyon dhcpd: Release (global): Mac: n/a, IP: n/a,
Name: n/a, ID: n/a

Expiry:

Dec  2 15:14:04 prokyon dhcpd: Expiry (global): Mac: n/a, IP: n/a,
Name: n/a, ID: n/a

So, everything is alright for commit events, except that there's no
hostname available. I know how to create a custom hostname from address
or id, so this is not really a problem.

But for expiry and release events, there's simply nothing that can be
passed on to the scripts. No address, no name, no id. It's impossible
to remove dns entries. 


Next, if I move the "set ClientIP = " lines from inside the "on
commit|expiry|release" event handlers above those into the global
scope, I magically get the address for expiry, but not for release:

Dec  2 15:35:55 prokyon dhcpd: Expiry (global): Mac: n/a, IP:
fd10:2842:f0d1:414:b64e:8a55:154d:ad6, Name: n/a, ID: n/a
Dec  2 15:38:17 prokyon dhcpd: Release (global): Mac: n/a, IP: n/a,
Name: n/a, ID: n/a


Moving all this code into a host statement (works for known hosts only,
of course), finally makes it possible to get a hostname and to perform
clean ddns updates for commit and expiry, but it requires at least one
dns lookup in the script to get the address from the hostname for
release events, which is a really, really ugly hack. 

Am I doing something wrong, did I miss something, or ist this
intended behavior or even a bug?

Thanks for help,

Robert


-- 
Robert Senger


--
Robert Senger



_______________________________________________
dhcp-users mailing list
[hidden email]
https://lists.isc.org/mailman/listinfo/dhcp-users
Reply | Threaded
Open this post in threaded view
|

Re: Issues with dhcpv6 and ddns updates

perl-list
Robert,

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?


From: "Robert Senger" <[hidden email]>
To: "Users of ISC DHCP" <[hidden email]>
Sent: Friday, December 2, 2016 10:01:31 AM
Subject: Issues with dhcpv6 and ddns updates
Hi there,

I am running isc-dhcp-server in ipv6 mode, and I'd like to update the
local internal dns zones hosted by bind9 with dhcpv6 client's names and
ipv6 addresses.

The built-in ddns seems to be completely unable to remove entries from
the dns upon expiry or release, so I ended up doing ddns stuff on my
own using "on commit|expiry|release" event handlers and corresponding
scripts.

But this also has issues with expiry and release events. While
(almost...) everything is fine with commits, I am having trouble
getting enough information about which hosts lease has expired or was
released.

This is the code I have in the dhcpd6.conf global scope:

on commit
{                                                                      
                                                              
        set ClientMac =
"n/a";                                                                 
                                                
        set ClientIP = pick-first-value(binary-to-ascii(16, 16, ":",
substring(option dhcp6.ia-na, 16, 16)),
"n/a");                           
        set ClientID = pick-first-value(binary-to-ascii(16, 8, ":",
option dhcp6.client-id),
"n/a");                                           
        set ClientName = pick-first-value(ddns-hostname, option
fqdn.hostname, option host-name,
"n/a");                                       
        log(concat("Commit (global): Mac: ", ClientMac, ", IP: ",
ClientIP, ", Name: ", ClientName, ", ID: ",
ClientID));                      
        #execute("/etc/dhcp/dhcp6commit.sh", ClientMac, ClientIP,
ClientName,
ClientID);                                                       
}                                                                      
                                                                       
 
on expiry
{                                                                      
                                                              
        set ClientMac =
"n/a";                                                                 
                                                
        set ClientIP = pick-first-value(binary-to-ascii(16, 16, ":",
substring(option dhcp6.ia-na, 16, 16)),
"n/a");                           
        set ClientID = pick-first-value(binary-to-ascii(16, 8, ":",
option dhcp6.client-id),
"n/a");                                           
        set ClientName = pick-first-value(ddns-hostname, option
fqdn.hostname, option host-name,
"n/a");                                       
        log(concat("Expiry (global): Mac: ", ClientMac, ", IP: ",
ClientIP, ", Name: ", ClientName, ", ID: ",
ClientID));                      
        #execute("/etc/dhcp/dhcp6expiry.sh", ClientMac, ClientIP,
ClientName,
ClientID);                                                       
}                                                                      
                                                                       
 
on release
{                                                                      
                                                             
        set ClientMac =
"n/a";                                                                 
                                                
        set ClientIP = pick-first-value(binary-to-ascii(16, 16, ":",
substring(option dhcp6.ia-na, 16, 16)),
"n/a");                           
        set ClientID = pick-first-value(binary-to-ascii(16, 8, ":",
option dhcp6.client-id),
"n/a");                                           
        set ClientName = pick-first-value(ddns-hostname, option
fqdn.hostname, option host-name,
"n/a");                                       
        log(concat("Release (global): Mac: ", ClientMac, ", IP: ",
ClientIP, ", Name: ", ClientName, ", ID: ",
ClientID));                     
        #execute("/etc/dhcp/dhcp6release.sh", ClientMac, ClientIP,
ClientName,
ClientID);                                                      
}                                                                      
                                                                       

(I've commented the "execute" statement to not mess up ddns while
testing).

And this is what I see in the dhcp log:

Commit:

Dec  2 15:02:02 prokyon dhcpd: Reply NA: address
fd10:2842:f0d1:414:b64e:8a55:154d:ad6 to client with duid
00:01:00:01:1e:dd:f7:4d:00:12:f0:90:5a:49 iaid = 1 valid for 1200
seconds
Dec  2 15:02:02 prokyon dhcpd: Commit (global): Mac: n/a, IP:
fd10:2842:f0d1:414:b64e:8a55:154d:ad6, Name: n/a, ID:
0:1:0:1:1e:dd:f7:4d:0:12:f0:90:5a:49

Release:

Dec  2 15:03:39 prokyon dhcpd: Client
00:01:00:01:1e:dd:f7:4d:00:12:f0:90:5a:49 releases address
fd10:2842:f0d1:414:b64e:8a55:154d:ad6
Dec  2 15:03:39 prokyon dhcpd: Release (global): Mac: n/a, IP: n/a,
Name: n/a, ID: n/a

Expiry:

Dec  2 15:14:04 prokyon dhcpd: Expiry (global): Mac: n/a, IP: n/a,
Name: n/a, ID: n/a

So, everything is alright for commit events, except that there's no
hostname available. I know how to create a custom hostname from address
or id, so this is not really a problem.

But for expiry and release events, there's simply nothing that can be
passed on to the scripts. No address, no name, no id. It's impossible
to remove dns entries. 


Next, if I move the "set ClientIP = " lines from inside the "on
commit|expiry|release" event handlers above those into the global
scope, I magically get the address for expiry, but not for release:

Dec  2 15:35:55 prokyon dhcpd: Expiry (global): Mac: n/a, IP:
fd10:2842:f0d1:414:b64e:8a55:154d:ad6, Name: n/a, ID: n/a
Dec  2 15:38:17 prokyon dhcpd: Release (global): Mac: n/a, IP: n/a,
Name: n/a, ID: n/a


Moving all this code into a host statement (works for known hosts only,
of course), finally makes it possible to get a hostname and to perform
clean ddns updates for commit and expiry, but it requires at least one
dns lookup in the script to get the address from the hostname for
release events, which is a really, really ugly hack. 

Am I doing something wrong, did I miss something, or ist this
intended behavior or even a bug?

Thanks for help,

Robert


-- 
Robert Senger


--
Robert Senger



_______________________________________________
dhcp-users mailing list
[hidden email]
https://lists.isc.org/mailman/listinfo/dhcp-users


_______________________________________________
dhcp-users mailing list
[hidden email]
https://lists.isc.org/mailman/listinfo/dhcp-users
Reply | Threaded
Open this post in threaded view
|

Re: Issues with dhcpv6 and ddns updates

Robert Senger
Thanks for the confirmation!

For the moment I can live with this, since I only got a limited number
of known clients I need to create host { } statements for, and a very
limited number of guest clients (for now, I ignore them for ddns).

Well, once dhcpv6 becomes more common in enterprise environments, I
would consider this as a severe issue.

Robert


Am Freitag, den 02.12.2016, 10:07 -0500 schrieb perl-list:

> Robert, 
>
> 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? 
>
> >
> > From: "Robert Senger" <[hidden email]>
> > To: "Users of ISC DHCP" <[hidden email]>
> > Sent: Friday, December 2, 2016 10:01:31 AM
> > Subject: Issues with dhcpv6 and ddns updates
> >
> > Hi there,
> >
> > I am running isc-dhcp-server in ipv6 mode, and I'd like to update
> > the
> > local internal dns zones hosted by bind9 with dhcpv6 client's names
> > and
> > ipv6 addresses.
> >
> > The built-in ddns seems to be completely unable to remove entries
> > from
> > the dns upon expiry or release, so I ended up doing ddns stuff on
> > my
> > own using "on commit|expiry|release" event handlers and
> > corresponding
> > scripts.
> >
> > But this also has issues with expiry and release events. While
> > (almost...) everything is fine with commits, I am having trouble
> > getting enough information about which hosts lease has expired or
> > was
> > released.
> >
> > This is the code I have in the dhcpd6.conf global scope:
> >
> > on commit
> > {
> >
> > set ClientMac =
> > "n/a";
> >
> > set ClientIP = pick-first-value(binary-to-ascii(16, 16, ":",
> > substring(option dhcp6.ia-na, 16, 16)),
> > "n/a");
> > set ClientID = pick-first-value(binary-to-ascii(16, 8, ":",
> > option dhcp6.client-id),
> > "n/a");
> > set ClientName = pick-first-value(ddns-hostname, option
> > fqdn.hostname, option host-name,
> > "n/a");
> > log(concat("Commit (global): Mac: ", ClientMac, ", IP: ",
> > ClientIP, ", Name: ", ClientName, ", ID: ",
> > ClientID));
> > #execute("/etc/dhcp/dhcp6commit.sh", ClientMac, ClientIP,
> > ClientName,
> > ClientID);
> > }
> >
> > on expiry
> > {
> >
> > set ClientMac =
> > "n/a";
> >
> > set ClientIP = pick-first-value(binary-to-ascii(16, 16, ":",
> > substring(option dhcp6.ia-na, 16, 16)),
> > "n/a");
> > set ClientID = pick-first-value(binary-to-ascii(16, 8, ":",
> > option dhcp6.client-id),
> > "n/a");
> > set ClientName = pick-first-value(ddns-hostname, option
> > fqdn.hostname, option host-name,
> > "n/a");
> > log(concat("Expiry (global): Mac: ", ClientMac, ", IP: ",
> > ClientIP, ", Name: ", ClientName, ", ID: ",
> > ClientID));
> > #execute("/etc/dhcp/dhcp6expiry.sh", ClientMac, ClientIP,
> > ClientName,
> > ClientID);
> > }
> >
> > on release
> > {
> >
> > set ClientMac =
> > "n/a";
> >
> > set ClientIP = pick-first-value(binary-to-ascii(16, 16, ":",
> > substring(option dhcp6.ia-na, 16, 16)),
> > "n/a");
> > set ClientID = pick-first-value(binary-to-ascii(16, 8, ":",
> > option dhcp6.client-id),
> > "n/a");
> > set ClientName = pick-first-value(ddns-hostname, option
> > fqdn.hostname, option host-name,
> > "n/a");
> > log(concat("Release (global): Mac: ", ClientMac, ", IP: ",
> > ClientIP, ", Name: ", ClientName, ", ID: ",
> > ClientID));
> > #execute("/etc/dhcp/dhcp6release.sh", ClientMac, ClientIP,
> > ClientName,
> > ClientID);
> > }
> >
> > (I've commented the "execute" statement to not mess up ddns while
> > testing).
> >
> > And this is what I see in the dhcp log:
> >
> > Commit:
> >
> > Dec 2 15:02:02 prokyon dhcpd: Reply NA: address
> > fd10:2842:f0d1:414:b64e:8a55:154d:ad6 to client with duid
> > 00:01:00:01:1e:dd:f7:4d:00:12:f0:90:5a:49 iaid = 1 valid for 1200
> > seconds
> > Dec 2 15:02:02 prokyon dhcpd: Commit (global): Mac: n/a, IP:
> > fd10:2842:f0d1:414:b64e:8a55:154d:ad6, Name: n/a, ID:
> > 0:1:0:1:1e:dd:f7:4d:0:12:f0:90:5a:49
> >
> > Release:
> >
> > Dec 2 15:03:39 prokyon dhcpd: Client
> > 00:01:00:01:1e:dd:f7:4d:00:12:f0:90:5a:49 releases address
> > fd10:2842:f0d1:414:b64e:8a55:154d:ad6
> > Dec 2 15:03:39 prokyon dhcpd: Release (global): Mac: n/a, IP: n/a,
> > Name: n/a, ID: n/a
> >
> > Expiry:
> >
> > Dec 2 15:14:04 prokyon dhcpd: Expiry (global): Mac: n/a, IP: n/a,
> > Name: n/a, ID: n/a
> >
> > So, everything is alright for commit events, except that there's no
> > hostname available. I know how to create a custom hostname from
> > address
> > or id, so this is not really a problem.
> >
> > But for expiry and release events, there's simply nothing that can
> > be
> > passed on to the scripts. No address, no name, no id. It's
> > impossible
> > to remove dns entries.
> >
> > Next, if I move the "set ClientIP = " lines from inside the "on
> > commit|expiry|release" event handlers above those into the global
> > scope, I magically get the address for expiry, but not for release:
> >
> > Dec 2 15:35:55 prokyon dhcpd: Expiry (global): Mac: n/a, IP:
> > fd10:2842:f0d1:414:b64e:8a55:154d:ad6, Name: n/a, ID: n/a
> > Dec 2 15:38:17 prokyon dhcpd: Release (global): Mac: n/a, IP: n/a,
> > Name: n/a, ID: n/a
> >
> > Moving all this code into a host statement (works for known hosts
> > only,
> > of course), finally makes it possible to get a hostname and to
> > perform
> > clean ddns updates for commit and expiry, but it requires at least
> > one
> > dns lookup in the script to get the address from the hostname for
> > release events, which is a really, really ugly hack.
> >
> > Am I doing something wrong, did I miss something, or ist this
> > intended behavior or even a bug?
> >
> > Thanks for help,
> >
> > Robert
> >
> > --
> > Robert Senger
> >
> > --
> > Robert Senger
> >
> > _______________________________________________
> > dhcp-users mailing list
> > [hidden email]
> > https://lists.isc.org/mailman/listinfo/dhcp-users
> _______________________________________________
> dhcp-users mailing list
> [hidden email]
> https://lists.isc.org/mailman/listinfo/dhcp-users
--
Robert Senger



_______________________________________________
dhcp-users mailing list
[hidden email]
https://lists.isc.org/mailman/listinfo/dhcp-users
Reply | Threaded
Open this post in threaded view
|

Re: Issues with dhcpv6 and ddns updates

Thomas Markwalder
In reply to this post by perl-list
On 12/2/16 10:07 AM, perl-list wrote:
Robert,

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?


From: "Robert Senger" [hidden email]
To: "Users of ISC DHCP" [hidden email]
Sent: Friday, December 2, 2016 10:01:31 AM
Subject: Issues with dhcpv6 and ddns updates
Hi there,

I am running isc-dhcp-server in ipv6 mode, and I'd like to update the
local internal dns zones hosted by bind9 with dhcpv6 client's names and
ipv6 addresses.

The built-in ddns seems to be completely unable to remove entries from
the dns upon expiry or release, so I ended up doing ddns stuff on my
own using "on commit|expiry|release" event handlers and corresponding
scripts.

But this also has issues with expiry and release events. While
(almost...) everything is fine with commits, I am having trouble
getting enough information about which hosts lease has expired or was
released.

This is the code I have in the dhcpd6.conf global scope:

on commit
{                                                                      
                                                              
        set ClientMac =
"n/a";                                                                 
                                                
        set ClientIP = pick-first-value(binary-to-ascii(16, 16, ":",
substring(option dhcp6.ia-na, 16, 16)),
"n/a");                           
        set ClientID = pick-first-value(binary-to-ascii(16, 8, ":",
option dhcp6.client-id),
"n/a");                                           
        set ClientName = pick-first-value(ddns-hostname, option
fqdn.hostname, option host-name,
"n/a");                                       
        log(concat("Commit (global): Mac: ", ClientMac, ", IP: ",
ClientIP, ", Name: ", ClientName, ", ID: ",
ClientID));                      
        #execute("/etc/dhcp/dhcp6commit.sh", ClientMac, ClientIP,
ClientName,
ClientID);                                                       
}                                                                      
                                                                       
 
on expiry
{                                                                      
                                                              
        set ClientMac =
"n/a";                                                                 
                                                
        set ClientIP = pick-first-value(binary-to-ascii(16, 16, ":",
substring(option dhcp6.ia-na, 16, 16)),
"n/a");                           
        set ClientID = pick-first-value(binary-to-ascii(16, 8, ":",
option dhcp6.client-id),
"n/a");                                           
        set ClientName = pick-first-value(ddns-hostname, option
fqdn.hostname, option host-name,
"n/a");                                       
        log(concat("Expiry (global): Mac: ", ClientMac, ", IP: ",
ClientIP, ", Name: ", ClientName, ", ID: ",
ClientID));                      
        #execute("/etc/dhcp/dhcp6expiry.sh", ClientMac, ClientIP,
ClientName,
ClientID);                                                       
}                                                                      
                                                                       
 
on release
{                                                                      
                                                             
        set ClientMac =
"n/a";                                                                 
                                                
        set ClientIP = pick-first-value(binary-to-ascii(16, 16, ":",
substring(option dhcp6.ia-na, 16, 16)),
"n/a");                           
        set ClientID = pick-first-value(binary-to-ascii(16, 8, ":",
option dhcp6.client-id),
"n/a");                                           
        set ClientName = pick-first-value(ddns-hostname, option
fqdn.hostname, option host-name,
"n/a");                                       
        log(concat("Release (global): Mac: ", ClientMac, ", IP: ",
ClientIP, ", Name: ", ClientName, ", ID: ",
ClientID));                     
        #execute("/etc/dhcp/dhcp6release.sh", ClientMac, ClientIP,
ClientName,
ClientID);                                                      
}                                                                      
                                                                       

(I've commented the "execute" statement to not mess up ddns while
testing).

And this is what I see in the dhcp log:

Commit:

Dec  2 15:02:02 prokyon dhcpd: Reply NA: address
fd10:2842:f0d1:414:b64e:8a55:154d:ad6 to client with duid
00:01:00:01:1e:dd:f7:4d:00:12:f0:90:5a:49 iaid = 1 valid for 1200
seconds
Dec  2 15:02:02 prokyon dhcpd: Commit (global): Mac: n/a, IP:
fd10:2842:f0d1:414:b64e:8a55:154d:ad6, Name: n/a, ID:
0:1:0:1:1e:dd:f7:4d:0:12:f0:90:5a:49

Release:

Dec  2 15:03:39 prokyon dhcpd: Client
00:01:00:01:1e:dd:f7:4d:00:12:f0:90:5a:49 releases address
fd10:2842:f0d1:414:b64e:8a55:154d:ad6
Dec  2 15:03:39 prokyon dhcpd: Release (global): Mac: n/a, IP: n/a,
Name: n/a, ID: n/a

Expiry:

Dec  2 15:14:04 prokyon dhcpd: Expiry (global): Mac: n/a, IP: n/a,
Name: n/a, ID: n/a

So, everything is alright for commit events, except that there's no
hostname available. I know how to create a custom hostname from address
or id, so this is not really a problem.

But for expiry and release events, there's simply nothing that can be
passed on to the scripts. No address, no name, no id. It's impossible
to remove dns entries. 


Next, if I move the "set ClientIP = " lines from inside the "on
commit|expiry|release" event handlers above those into the global
scope, I magically get the address for expiry, but not for release:

Dec  2 15:35:55 prokyon dhcpd: Expiry (global): Mac: n/a, IP:
fd10:2842:f0d1:414:b64e:8a55:154d:ad6, Name: n/a, ID: n/a
Dec  2 15:38:17 prokyon dhcpd: Release (global): Mac: n/a, IP: n/a,
Name: n/a, ID: n/a


Moving all this code into a host statement (works for known hosts only,
of course), finally makes it possible to get a hostname and to perform
clean ddns updates for commit and expiry, but it requires at least one
dns lookup in the script to get the address from the hostname for
release events, which is a really, really ugly hack. 

Am I doing something wrong, did I miss something, or ist this
intended behavior or even a bug?

Thanks for help,

Robert


-- 
Robert Senger


--
Robert Senger



_______________________________________________
dhcp-users mailing list
[hidden email]
https://lists.isc.org/mailman/listinfo/dhcp-users



_______________________________________________
dhcp-users mailing list
[hidden email]
https://lists.isc.org/mailman/listinfo/dhcp-users

Hello Robert:

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.

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  [hidden email], 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).


Sincerely,

Thomas Markwalder

ISC Software Engineering




_______________________________________________
dhcp-users mailing list
[hidden email]
https://lists.isc.org/mailman/listinfo/dhcp-users
Reply | Threaded
Open this post in threaded view
|

Re: Issues with dhcpv6 and ddns updates

perl-list



From: "Thomas Markwalder" <[hidden email]>
To: [hidden email]
Sent: Friday, December 2, 2016 11:02:32 AM
Subject: Re: Issues with dhcpv6 and ddns updates
On 12/2/16 10:07 AM, perl-list wrote:
Robert,

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?


Hello Robert:

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.

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  [hidden email], 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).


Sincerely,

Thomas Markwalder

ISC Software Engineering



I don't think that could be right that options are not available in on release {} in DHCPv4 as a statement like this:

on release {

        log( error, 

concat( "RELEASED,",

                        "ip,", binary-to-ascii (10, 8, ".", leased-address),",",

                        "hardware,",binary-to-ascii(16,8,":",substring(hardware,1,7))

                )

        );

}



produces a line like this:

RELEASED,ip,192.168.0.1,hardware,01:02:03:02:01:00

in the logs.

_______________________________________________
dhcp-users mailing list
[hidden email]
https://lists.isc.org/mailman/listinfo/dhcp-users


_______________________________________________
dhcp-users mailing list
[hidden email]
https://lists.isc.org/mailman/listinfo/dhcp-users
Reply | Threaded
Open this post in threaded view
|

Re: Issues with dhcpv6 and ddns updates

Thomas Markwalder
On 12/2/16 11:11 AM, perl-list wrote:



From: "Thomas Markwalder" [hidden email]
To: [hidden email]
Sent: Friday, December 2, 2016 11:02:32 AM
Subject: Re: Issues with dhcpv6 and ddns updates
On 12/2/16 10:07 AM, perl-list wrote:
Robert,

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?


Hello Robert:

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.

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  [hidden email], 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).


Sincerely,

Thomas Markwalder

ISC Software Engineering



I don't think that could be right that options are not available in on release {} in DHCPv4 as a statement like this:

on release {

        log( error, 

concat( "RELEASED,",

                        "ip,", binary-to-ascii (10, 8, ".", leased-address),",",

                        "hardware,",binary-to-ascii(16,8,":",substring(hardware,1,7))

                )

        );

}



produces a line like this:

RELEASED,ip,192.168.0.1,hardware,01:02:03:02:01:00

in the logs.

_______________________________________________
dhcp-users mailing list
[hidden email]
https://lists.isc.org/mailman/listinfo/dhcp-users



_______________________________________________
dhcp-users mailing list
[hidden email]
https://lists.isc.org/mailman/listinfo/dhcp-users

Let me clarify.  Some options are going to available, such as leased-address, but not all options will be.  Any option value which has been configured in the server configuration to be the result of expression which must be evaluated, potentially at scopes down to the pool level is not going to have a value, as the statements are simply not executed during release processing.


_______________________________________________
dhcp-users mailing list
[hidden email]
https://lists.isc.org/mailman/listinfo/dhcp-users