IPv6 DDNS using dhcp-4.1.0p1

Brett Lee brettlee at yahoo.com
Fri Jan 22 22:20:30 UTC 2010


> > > > Am now running the 4.1.1 client (FreeBSD

> 
> > > > 8) and server (Solaris 10u4).  As I understood the DDNS section of the
> > > > client man page, have the client configured like this:
> > > > 
> > > > [root at freebsdvm8 ~]# cat /usr/local/etc/dhclient.conf
> > > > send fqdn.fqdn "freebsdvm8.apevt.local.";
> > > > send fqdn.encoded on;
> > > > send fqdn.server-update off;
> > > > also request fqdn, dhcp6.fqdn;
> > > > interface le0 { send ia-na 0; }
> > > > id-assoc na 0 { }
> > > > [root at freebsdvm8 ~]#
> > > 
> > > I'm not really sure what's going on, that should work (you've got
> > > 'ignore client-updates' on the server end).  You may want to try
> > 
> > David - I've seen IPv6 DDNS happening a couple times today with the server and 
> a 
> > couple different clients.  Daemon (4.1.1 & 4.1.0p1) is crashing now just 
> seconds 
> > after startup, so I've certainly screwed something up.  Will post some results 
> 
> > when this makes sense.
> > Thanks!  -Brett
> > 
> > 
> 
> Not making sense yet.  Captured a little bit of info on why the daemon is 
> stopping.  Per the logging, a core file is created.  Seems to point here:
> 
> void
> isc_heap_decreased(isc_heap_t *heap, unsigned int index) {
>         REQUIRE(index >= 1 && index <= heap->last);
>         sink_down(heap, index, heap->array[index]);
> }
> 
> [root at solaris10u4sparc named]# /data/work/build/dhcpd/dhcp-4.1.1/server/dhcpd -d 
> -f -6 bge1 bge2 bge3
> Internet Systems Consortium DHCP Server 4.1.1
> Copyright 2004-2010 Internet Systems Consortium.
> All rights reserved.
> For info, please visit https://www.isc.org/software/dhcp/
> Wrote 0 leases to leases file.
> Bound to *:547
> Listening on Socket/6/bge3/2bad:0:564:3::/64
> Sending on   Socket/6/bge3/2bad:0:564:3::/64
> Listening on Socket/6/bge2/2bad:0:564:2::/64
> Sending on   Socket/6/bge2/2bad:0:564:2::/64
> Listening on Socket/6/bge1/2bad:0:564:1::/64
> Sending on   Socket/6/bge1/2bad:0:564:1::/64
> Request message from fe80::20c:29ff:fef4:8684 port 546, transaction ID 0xBF11ED
> Assertion failed: index >= 1 && index <= heap->last, file heap.c, line 222
> Abort (core dumped)
> [root at solaris10u4sparc named]#
> 
> And on another window at the same time:
> 
> [root at solaris10u4sparc named]# snoop -v -r ip6 port 546
> Using device /dev/bge1 (promiscuous mode)
> ETHER:  ----- Ether Header -----
> ETHER:
> ETHER:  Packet 1 arrived at 11:51:39.93604
> ETHER:  Packet size = 170 bytes
> ETHER:  Destination = 33:33:0:1:0:2, (multicast)
> ETHER:  Source      = 0:c:29:f4:86:84,
> ETHER:  Ethertype = 86DD (IPv6)
> ETHER:
> IPv6:   ----- IPv6 Header -----
> IPv6:
> IPv6:   Version = 6
> IPv6:   Traffic Class = 0
> IPv6:   Flow label = 0x0
> IPv6:   Payload length = 116
> IPv6:   Next Header = 17 (UDP)
> IPv6:   Hop Limit = 1
> IPv6:   Source address = fe80::20c:29ff:fef4:8684
> IPv6:   Destination address = ff02::1:2
> IPv6:
> UDP:  ----- UDP Header -----
> UDP:
> UDP:  Source port = 546
> UDP:  Destination port = 547 (DHCPv6S)
> UDP:  Length = 116
> UDP:  Checksum = CCD6
> UDP:
> DHCPv6: ----- Dynamic Host Configuration Protocol Version 6 -----
> DHCPv6:
> DHCPv6: Message type (msg-type) = 3 (Request)
> DHCPv6: Transaction ID = bf11ed
> DHCPv6:
> DHCPv6: Option Code = 1 (Client Identifier)
> DHCPv6:   DUID Type = 1 (Link-layer Address Plus Time)
> DHCPv6:   Hardware Type = 1 (Ethernet (10Mb))
> DHCPv6:   Time = 317230774 (Tue Jan 19 08:39:34 2010)
> DHCPv6:   Link Layer Address = 00:0c:29:f4:86:84
> DHCPv6: Option Code = 2 (Server Identifier)
> DHCPv6:   DUID Type = 1 (Link-layer Address Plus Time)
> DHCPv6:   Hardware Type = 1 (Ethernet (10Mb))
> DHCPv6:   Time = 316828499 (Thu Jan 14 16:54:59 2010)
> DHCPv6:   Link Layer Address = 05:00:00:00:31:00:00:00:03:00:00:00:00:00:00:00
> DHCPv6: Option Code = 6 (Option Request)
> DHCPv6:   Requested Option Code = 23 (DNS Recursive Name Server)
> DHCPv6:   Requested Option Code = 24 (Domain Search List)
> DHCPv6: Option Code = 8 (Elapsed Time)
> DHCPv6:   Elapsed Time = 84.28 seconds
> DHCPv6: Option Code = 3 (Identity Association for Non-temporary Addresses)
> DHCPv6:   IAID = 703891076
> DHCPv6:   T1 (renew) = 3600 seconds
> DHCPv6:   T2 (rebind) = 5400 seconds
> DHCPv6: IA: ----- Identity Association -----
> DHCPv6: IA: Option Code = 5 (IA Address)
> DHCPv6: IA:   Address = 2bad:0:564:1::17
> DHCPv6: IA:   Preferred lifetime = 7200 seconds
> DHCPv6: IA:   Valid lifetime = 7500 seconds
> DHCPv6:
> 
> ^C[root at solaris10u4sparc named]#
> 
> 
> With fe80::20c:29ff:fef4:8684 *POWERED OFF* am still seeing the error.  In fact, 
> other times it works for a bit with that host up:
> 
> [root at solaris10u4sparc named]# /data/work/build/dhcpd/dhcp-4.1.1/server/dhcpd -d 
> -f -6 bge1 bge2 bge3
> Internet Systems Consortium DHCP Server 4.1.1
> Copyright 2004-2010 Internet Systems Consortium.
> All rights reserved.
> For info, please visit https://www.isc.org/software/dhcp/
> Wrote 0 leases to leases file.
> Bound to *:547
> Listening on Socket/6/bge3/2bad:0:564:3::/64
> Sending on   Socket/6/bge3/2bad:0:564:3::/64
> Listening on Socket/6/bge2/2bad:0:564:2::/64
> Sending on   Socket/6/bge2/2bad:0:564:2::/64
> Listening on Socket/6/bge1/2bad:0:564:1::/64
> Sending on   Socket/6/bge1/2bad:0:564:1::/64
> Solicit message from fe80::45f9:ce7b:e665:7ab port 546, transaction ID 0xC37689
> Sending Advertise to fe80::45f9:ce7b:e665:7ab port 546
> Request message from fe80::45f9:ce7b:e665:7ab port 546, transaction ID 0xC37689
> Assertion failed: index >= 1 && index <= heap->last, file heap.c, line 222
> Abort (core dumped)
> [root at solaris10u4sparc named]#
> 
> 
> [root at solaris10u4sparc named]# /data/work/build/dhcpd/dhcp-4.1.1/server/dhcpd -d 
> -f -6 bge1 bge2 bge3
> Internet Systems Consortium DHCP Server 4.1.1
> Copyright 2004-2010 Internet Systems Consortium.
> All rights reserved.
> For info, please visit https://www.isc.org/software/dhcp/
> Wrote 0 leases to leases file.
> Bound to *:547
> Listening on Socket/6/bge3/2bad:0:564:3::/64
> Sending on   Socket/6/bge3/2bad:0:564:3::/64
> Listening on Socket/6/bge2/2bad:0:564:2::/64
> Sending on   Socket/6/bge2/2bad:0:564:2::/64
> Listening on Socket/6/bge1/2bad:0:564:1::/64
> Sending on   Socket/6/bge1/2bad:0:564:1::/64
> Solicit message from fe80::20c:29ff:fef4:8684 port 546, transaction ID 0x09D75D
> Sending Advertise to fe80::20c:29ff:fef4:8684 port 546
> Renew message from fe80::21b:21ff:fe36:a534 port 546, transaction ID 0x65D6F1
> Sending Reply to fe80::21b:21ff:fe36:a534 port 546
> Request message from fe80::21b:21ff:fe36:a534 port 546, transaction ID 0x49E247
> Picking pool address 2bad:0:564:2::19
> Sending Reply to fe80::21b:21ff:fe36:a534 port 546
> Solicit message from fe80::20c:29ff:fef4:8684 port 546, transaction ID 0xE668C0
> Sending Advertise to fe80::20c:29ff:fef4:8684 port 546
> Request message from fe80::20c:29ff:fef4:8684 port 546, transaction ID 0xBF11ED
> Assertion failed: index >= 1 && index <= heap->last, file heap.c, line 222
> Abort (core dumped)
> [root at solaris10u4sparc named]#
> 
> Off to find gdb...

Note that the daemon is now running continuously.  Tried several things in the config file that had no effect.  Once I removed directives in the router advertisements that directed clients to perform DHCP as well as SLAAC, 4.1.1 DHCPD began running (and renewing a single IP address for a wayward Solaris client that isn't paying attention to the new NDP directive.)  DDNSv6 is not active, but to reiterate what I posted earlier, I did see DDNSv6 occur and the forward/reverse zones journaling replicated to the slave when several DHCPv6 clients were up.

It seems to me like there may be some requisite interaction between client and server for DDNSv6 to occur, even when "ignore client-updates" is configured, and that the requisite does not occur with every client.  Regarding the heap index assertion failure, am hoping a rogue client could not cause this failure.  I'd be interested in hearing any insights of why this may have occurred.

My plan will be to introduce the clients (HPUX, Solaris, FreeBSD,
Linux, Win2K8) one by one w/o the NDP DHCP directive and take it from
there.  Repeated analyses of subsequent core files pointed to the same place.  GDB output is below.
-Brett

[root at solaris10u4sparc data]# gdb /data/work/build/dhcpd/dhcp-4.1.1/server/dhcpd /var/named/core
GNU gdb 6.8
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "sparc-sun-solaris2.10"...
Reading symbols from /lib/libnsl.so.1...done.
Loaded symbols for /lib/libnsl.so.1
Reading symbols from /lib/libsocket.so.1...done.
Loaded symbols for /lib/libsocket.so.1
Reading symbols from /usr/sfw/lib/libcrypto.so.0.9.7...done.
Loaded symbols for /usr/sfw/lib/libcrypto.so.0.9.7
Reading symbols from /lib/libc.so.1...done.
Loaded symbols for /lib/libc.so.1
Reading symbols from /usr/sfw/lib/libcrypto_extra.so.0.9.7...done.
Loaded symbols for /usr/sfw/lib/libcrypto_extra.so.0.9.7
Reading symbols from /platform/SUNW,Sun-Fire-V240/lib/libc_psr.so.1...done.
Loaded symbols for /platform/SUNW,Sun-Fire-V210/lib/libc_psr.so.1
Reading symbols from /lib/ld.so.1...done.
Loaded symbols for /lib/ld.so.1
Core was generated by `/data/work/build/dhcpd/dhcp-4.1.1/server/dhcpd -d -f -6 bge1 bge2 bge3'.
Program terminated with signal 6, Aborted.
[New process 78514    ]
#0  0xff0c69ec in _lwp_kill () from /lib/libc.so.1
(gdb) bt
#0  0xff0c69ec in _lwp_kill () from /lib/libc.so.1
#1  0xff064a0c in raise () from /lib/libc.so.1
#2  0xff041120 in abort () from /lib/libc.so.1
#3  0xff04135c in _assert () from /lib/libc.so.1
#4  0x00082ca4 in isc_heap_decreased (heap=0xfe938, index=1) at heap.c:224
#5  0x00057558 in renew_lease6 (pool=0xa3, lease=0x1) at mdb6.c:1023
#6  0x00052fc4 in lease_to_client (reply_ret=0xffbef660, packet=0x14a098, client_id=0x14a404, server_id=0xd4868) at dhcpv6.c:1838
#7  0x000553c4 in build_dhcpv6_reply (reply=0xffbef660, packet=0x14a098) at dhcpv6.c:4116
#8  0x00055d78 in dhcpv6 (packet=0x14a098) at dhcpv6.c:5814
#9  0x0006c0bc in do_packet6 (interface=0x100510, packet=0xffbef778 "\003Ãv\211", len=128, from_port=546, from=0xffbff778, was_unicast=isc_boolean_false) at options.c:3877
#10 0x0005f614 in got_one_v6 (h=0x100510) at discover.c:1452
#11 0x00089d9c in omapi_one_dispatch (wo=0x6, t=0xffbffbd8) at dispatch.c:520
#12 0x00060fd0 in dispatch () at dispatch.c:92
#13 0x00021ea8 in main (argc=0, argv=0xffbffc78) at dhcpd.c:837
(gdb) q
[root at solaris10u4sparc data]#


      




More information about the dhcp-users mailing list