Cannot disable IPv6 on LAN because "DHCP6 Server is active on this interface"
-
I am trying to dismantle my he.net ipv6 tunnel setup in preparation for a native Comcast IPv6 setup (hopefully) soon. I have disabled the OPT interface, and unchecked "Enable DHCPv6 server on LAN interface" under Services -> DHCPv6 Server/RA as well as disabled router advertisements under the Router Advertisements tab.
When I go to Interfaces -> LAN and set IPv6 Configuration Type from Static IPv6 to None (or even DHCP6 or SLAAC) and hit apply I get:
The following input errors were detected: The DHCP6 Server is active on this interface and it can be used only with a static IPv6 configuration. Please disable the DHCPv6 Server service on this interface first, then change the interface configuration.
I have done everything I can think of to ensure the DHCP6 Server is disabled. I have re-enabled it and disabled it again, rebooted a bunch of times, killed all of the running DHCP processes by hand, whether related to the LAN interface or not. I still get the same error message every time, making it impossible to disable IPv6 on the LAN interface or even change it to another type of IPv6 configuration short of removing the entire interface and re-adding it somehow, by hand or another way…
I found this forum report:
http://forum.pfsense.org/index.php/topic,51239.0.htmlwhich references this bug:
http://redmine.pfsense.org/issues/2065which seems very similar to what I am seeing.
My snapshot version is
2.1-BETA1 (amd64)
built on Fri Feb 15 04:33:17 EST 2013
FreeBSD 8.3-RELEASE-p5 -
It turns out that I have two IPv6 "dhcpd" sections in my config.xml file, a <dhcpd6>and a <dhcpdv6>. When I enable the dhcp server under the Services -> DHCPv6 Server/RA menu, an <enable>gets put at the end of the <dhcpdv6>block just before , and when i disable it the <enable>gets removed.
The strange thing is, when I remove the <dhcpd6>block, and try to disable the static IPv6 IP on the LAN interface, I still get the error " The following input errors were detected: The DHCP6 Server is active on this interface blah, blah…"
And when I go to the Services -> DHCPv6 Server/RA -> Router Advertisements tab and ensure that the Router Advertisements drop-down is set to "Disable" and everything else is empty, then click save, the whole incorrect (quite old) <dhcpd6>block gets added back in, complete with the <enable>. I am not sure where it is coming from, it seems to be a really old minimal set of values from when I was first setting up IPv6...
It seems that interfaces.php is looking somewhere else for the <enable>or not looking for it at all, or looking for something else entirely to determine if the dhcpd6/dhcpv6 server is running...
dhcpd6 is:
<dhcpd6><lan><enable><range><from>2001:470:1:2:3::0</from> <to>2001:470:1:2:3:ffff:ffff:ffff</to></range></enable></lan></dhcpd6>
dhcpdv6 is:
<dhcpdv6><lan><range><from>2001:470:1:2:ffff:ffff:ffff:0</from> <to>2001:470:1:2:ffff:ffff:ffff:fffe</to></range> <prefixrange><from><to><prefixlength>48</prefixlength></to></from></prefixrange> <ramode>disabled</ramode> <rapriority>medium</rapriority> <rainterface></rainterface> <defaultleasetime><maxleasetime><netmask><failover_peerip><domain>domain.loc</domain> <domainsearchlist>domain.loc</domainsearchlist> <ddnsdomain><tftp><ldap><nextserver><filename><rootpath><dhcpv6leaseinlocaltime>yes</dhcpv6leaseinlocaltime> <numberoptions><radomainsearchlist>domain.loc</radomainsearchlist> <staticmap><duid>00:01:00:01:c7:92:bc:96:00:01:02:03:04:05</duid> <ipaddrv6>2001:470:1:2:1:2ff:fe03:405</ipaddrv6> <hostname>mrtv</hostname> <filename><rootpath></rootpath></filename></staticmap> <dnsserver>2001:470:1::1</dnsserver></numberoptions></rootpath></filename></nextserver></ldap></tftp></ddnsdomain></failover_peerip></netmask></maxleasetime></defaultleasetime></lan></dhcpdv6> ```</enable></enable></dhcpd6></dhcpd6></enable></dhcpdv6></enable></dhcpdv6></dhcpd6>