[solved] IPv6 address lost (not renewed) on cable modem reset



  • For some reason, Comcast has this idea to reboot my cable modem nightly.  I wouldn't mind so much, but a side effect is that pfSense loses my IPv6 address.  From what I can see in the logs, dhcp6c tries to renew, gets no response, and so just dies without being a bit more persistent.

    Once I notice that the problem has occurred, "fixing" it is as easy as popping into pfsense, going to the WAN interface, and clicking "SAVE" (which restarts dhcp6c.)

    Is this a known issue?

    Is there an automated way to get this to self-correct?

    Thank you
    Gary

    (below is a log dump of the process showing that it releases the assigned ipv6 addresses when it loses WAN, and then gives up trying to renew them.)

    
    Aug 15 18:21:00	dhcp6c	30186	release an IA: NA-0
    Aug 15 18:21:00	dhcp6c	30186	reset a timer on igb0, state=RELEASE, timeo=0, retrans=905
    Aug 15 18:21:00	dhcp6c	30186	a new XID (df32ce) is generated
    Aug 15 18:21:00	dhcp6c	30186	set client ID (len 14)
    Aug 15 18:21:00	dhcp6c	30186	set server ID (len 14)
    Aug 15 18:21:00	dhcp6c	30186	set IA address
    Aug 15 18:21:00	dhcp6c	30186	set identity association
    Aug 15 18:21:00	dhcp6c	30186	set elapsed time (len 2)
    Aug 15 18:21:00	dhcp6c	30186	transmit failed: No buffer space available
    Aug 15 18:21:00	dhcp6c	30186	remove an IA: NA-0
    Aug 15 18:21:00	dhcp6c	30186	remove an address 2001:558:6035:13:aaaa:aaaa:aaaa:aaaa
    Aug 15 18:21:00	dhcp6c	30186	remove an address 2001:558:6035:13:aaaa:aaaa:aaaa:aaaa/128 on igb0
    Aug 15 18:21:00	dhcp6c	30186	reset a timer on igb0, state=INIT, timeo=0, retrans=763
    Aug 15 18:21:00	dhcp6c	30186	release an IA: PD-0
    Aug 15 18:21:00	dhcp6c	30186	reset a timer on igb0, state=RELEASE, timeo=0, retrans=1092
    Aug 15 18:21:00	dhcp6c	30186	a new XID (c92302) is generated
    Aug 15 18:21:00	dhcp6c	30186	set client ID (len 14)
    Aug 15 18:21:00	dhcp6c	30186	set server ID (len 14)
    Aug 15 18:21:00	dhcp6c	30186	set elapsed time (len 2)
    Aug 15 18:21:00	dhcp6c	30186	set IA_PD prefix
    Aug 15 18:21:00	dhcp6c	30186	set IA_PD
    Aug 15 18:21:00	dhcp6c	30186	transmit failed: No buffer space available
    Aug 15 18:21:00	dhcp6c	30186	remove an IA: PD-0
    Aug 15 18:21:00	dhcp6c	30186	remove a site prefix bbbb:bbb:bbbb:bbb0::/60
    Aug 15 18:21:00	dhcp6c	30186	remove an address bbbb:bbb:bbbb:bbb1:bbb:bbbb:bbbb:bbbb/64 on lagg0_vlan1
    Aug 15 18:21:00	dhcp6c	30186	remove an address bbbb:bbb:bbbb:bbb6:bbb:bbbb:bbbb:bbbb/64 on lagg0_vlan6
    Aug 15 18:21:00	dhcp6c	30186	remove an address bbbb:bbb:bbbb:bbb7:bbb:bbbb:bbbb:bbbb/64 on lagg0_vlan7
    Aug 15 18:21:00	dhcp6c	30186	remove an address bbbb:bbb:bbbb:bbb3:bbb:bbbb:bbbb:bbbb/64 on lagg0_vlan31
    Aug 15 18:21:00	dhcp6c	30186	reset a timer on igb0, state=INIT, timeo=0, retrans=540
    Aug 15 18:21:00	dhcp6c	30186	removing an event on igb0, state=INIT
    Aug 15 18:21:00	dhcp6c	30186	removing an event on igb0, state=INIT
    Aug 15 18:21:01	dhcp6c	30186	set client ID (len 14)
    Aug 15 18:21:01	dhcp6c	30186	set server ID (len 14)
    Aug 15 18:21:01	dhcp6c	30186	set IA address
    Aug 15 18:21:01	dhcp6c	30186	set identity association
    Aug 15 18:21:01	dhcp6c	30186	set elapsed time (len 2)
    Aug 15 18:21:01	dhcp6c	30186	transmit failed: No buffer space available
    Aug 15 18:21:01	dhcp6c	30186	reset a timer on igb0, state=RELEASE, timeo=1, retrans=1848
    Aug 15 18:21:01	dhcp6c	30186	set client ID (len 14)
    Aug 15 18:21:01	dhcp6c	30186	set server ID (len 14)
    Aug 15 18:21:01	dhcp6c	30186	set elapsed time (len 2)
    Aug 15 18:21:01	dhcp6c	30186	set IA_PD prefix
    Aug 15 18:21:01	dhcp6c	30186	set IA_PD
    Aug 15 18:21:01	dhcp6c	30186	transmit failed: No buffer space available
    Aug 15 18:21:01	dhcp6c	30186	reset a timer on igb0, state=RELEASE, timeo=1, retrans=2202
    Aug 15 18:21:03	dhcp6c	30186	set client ID (len 14)
    Aug 15 18:21:03	dhcp6c	30186	set server ID (len 14)
    Aug 15 18:21:03	dhcp6c	30186	set IA address
    Aug 15 18:21:03	dhcp6c	30186	set identity association
    Aug 15 18:21:03	dhcp6c	30186	set elapsed time (len 2)
    Aug 15 18:21:03	dhcp6c	30186	transmit failed: No buffer space available
    Aug 15 18:21:03	dhcp6c	30186	reset a timer on igb0, state=RELEASE, timeo=2, retrans=3832
    Aug 15 18:21:04	dhcp6c	30186	set client ID (len 14)
    Aug 15 18:21:04	dhcp6c	30186	set server ID (len 14)
    Aug 15 18:21:04	dhcp6c	30186	set elapsed time (len 2)
    Aug 15 18:21:04	dhcp6c	30186	set IA_PD prefix
    Aug 15 18:21:04	dhcp6c	30186	set IA_PD
    Aug 15 18:21:04	dhcp6c	30186	transmit failed: No buffer space available
    Aug 15 18:21:04	dhcp6c	30186	reset a timer on igb0, state=RELEASE, timeo=2, retrans=4450
    Aug 15 18:21:07	dhcp6c	30186	set client ID (len 14)
    Aug 15 18:21:07	dhcp6c	30186	set server ID (len 14)
    Aug 15 18:21:07	dhcp6c	30186	set IA address
    Aug 15 18:21:07	dhcp6c	30186	set identity association
    Aug 15 18:21:07	dhcp6c	30186	set elapsed time (len 2)
    Aug 15 18:21:07	dhcp6c	30186	send release to ff02::1:2%igb0
    Aug 15 18:21:07	dhcp6c	30186	reset a timer on igb0, state=RELEASE, timeo=3, retrans=7805
    Aug 15 18:21:08	dhcp6c	30186	set client ID (len 14)
    Aug 15 18:21:08	dhcp6c	30186	set server ID (len 14)
    Aug 15 18:21:08	dhcp6c	30186	set elapsed time (len 2)
    Aug 15 18:21:08	dhcp6c	30186	set IA_PD prefix
    Aug 15 18:21:08	dhcp6c	30186	set IA_PD
    Aug 15 18:21:08	dhcp6c	30186	send release to ff02::1:2%igb0
    Aug 15 18:21:08	dhcp6c	30186	reset a timer on igb0, state=RELEASE, timeo=3, retrans=8707
    Aug 15 18:21:15	dhcp6c	30186	set client ID (len 14)
    Aug 15 18:21:15	dhcp6c	30186	set server ID (len 14)
    Aug 15 18:21:15	dhcp6c	30186	set IA address
    Aug 15 18:21:15	dhcp6c	30186	set identity association
    Aug 15 18:21:15	dhcp6c	30186	set elapsed time (len 2)
    Aug 15 18:21:15	dhcp6c	30186	send release to ff02::1:2%igb0
    Aug 15 18:21:15	dhcp6c	30186	reset a timer on igb0, state=RELEASE, timeo=4, retrans=15164
    Aug 15 18:21:17	dhcp6c	30186	set client ID (len 14)
    Aug 15 18:21:17	dhcp6c	30186	set server ID (len 14)
    Aug 15 18:21:17	dhcp6c	30186	set elapsed time (len 2)
    Aug 15 18:21:17	dhcp6c	30186	set IA_PD prefix
    Aug 15 18:21:17	dhcp6c	30186	set IA_PD
    Aug 15 18:21:17	dhcp6c	30186	send release to ff02::1:2%igb0
    Aug 15 18:21:17	dhcp6c	30186	reset a timer on igb0, state=RELEASE, timeo=4, retrans=18094
    Aug 15 18:21:30	dhcp6c	30186	no responses were received
    Aug 15 18:21:30	dhcp6c	30186	removing an event on igb0, state=RELEASE
    Aug 15 18:21:35	dhcp6c	30186	no responses were received
    Aug 15 18:21:35	dhcp6c	30186	removing an event on igb0, state=RELEASE
    Aug 15 18:21:35	dhcp6c	30186	exiting
    
    

    A search for "dhcpc6" in this forum reveals that this problem has existed for at least 3 years:  https://forum.pfsense.org/index.php?topic=67571



  • …and more digging hints at the answer:

    DHCP (v4) gets a DHCP answer from the cable modem with a bogus IP addr, and so DHCPv6 figures that if v4 is working, but v6 isn't getting an answer, that DHCPv6 must not be supported.



  • …and based on the cause listed in the previous message, the solution is to go into Interfaces->WAN, scroll down to "DHCP Client Configuration" and add your cable modem's IP address to the "Reject leases from" field.

    The IP address of the cable modem depends on the specific hardware.  For nearly all Motorola/Arris modems, it'll be "192.168.100.1".

    You can figure it out if you examine the "dhcp" logs in pfsense after a reboot of the modem.  It'll be the IP address listed as the DHCP server assigning pfSense an IPv4 before the modem is completely rebooted.


Log in to reply