On 11/17/2010 11:29 AM, Harald Hoyer wrote:
Interesting. -------- Original-Nachricht -------- Betreff: DHCPv6 broken in RHEL 6.x Datum: Tue, 16 Nov 2010 17:14:16 -0500 Von: Ray Soucy <rps@xxxxxxxxx> An: teg@xxxxxxxxxx, harald@xxxxxxxxxx 2. There seems to be an assumption made that "stateless" == "autoconf". When DHCPv6 is selected in the installer, it adds a IPV6_AUTOCONF="no" to the interface configuration. DHCPv6 has no way to provide default route information. In IPv6, that task is handled by router advertisement. If you disable autoconf, then you disable the mechanistic for the host to get a default gateway, making DHCPv6 pointless. Similarly, host systems should not decide to "disable" stateless address configuration in favor of DHCPv6. The "A" (autonomous) flag within a router advertisement signals hosts on a network whether to assign a stateless address or not; Linux already respects this flag. It is a legitimate configuration to use _both_ a stateless and a stateful IPv6 address on a single interface. That should be determined by the network, not the host, as the default behavior. If the RFC were followed, you would actually wait for an IPv6 router advertisement to announce either the "M" or "O" flags before starting a DHCPv6 client; but I'm not sure how you would do that in Linux. The only reliable way right now is to just enable DHCPv6 by default if "Automatic" configuration is selected.
Please see discussion in NetworkManager bug https://bugzilla.redhat.com/show_bug.cgi?id=612445 where IPV6_AUTOCONF=no was added to DHCPv6 configuration option. In anaconda loader we follow NetworkManager Connection Editor (we are using it in anaconda GUI) which behaves the same way ('Automatic, DHCP only' option), from NM's ifcfg-rh plugin: value = nm_setting_ip6_config_get_method (s_ip6); g_assert (value); if (!strcmp (value, NM_SETTING_IP6_CONFIG_METHOD_IGNORE)) { svSetValue (ifcfg, "IPV6INIT", "no", FALSE); svSetValue (ifcfg, "DHCPV6C", NULL, FALSE); return TRUE; } else if (!strcmp (value, NM_SETTING_IP6_CONFIG_METHOD_AUTO)) { svSetValue (ifcfg, "IPV6INIT", "yes", FALSE); svSetValue (ifcfg, "IPV6_AUTOCONF", "yes", FALSE); svSetValue (ifcfg, "DHCPV6C", NULL, FALSE); } else if (!strcmp (value, NM_SETTING_IP6_CONFIG_METHOD_DHCP)) { svSetValue (ifcfg, "IPV6INIT", "yes", FALSE); svSetValue (ifcfg, "IPV6_AUTOCONF", "no", FALSE); svSetValue (ifcfg, "DHCPV6C", "yes", FALSE); } else if (!strcmp (value, NM_SETTING_IP6_CONFIG_METHOD_MANUAL)) { svSetValue (ifcfg, "IPV6INIT", "yes", FALSE); svSetValue (ifcfg, "IPV6_AUTOCONF", "no", FALSE); svSetValue (ifcfg, "DHCPV6C", NULL, FALSE); } else if (!strcmp (value, NM_SETTING_IP6_CONFIG_METHOD_LINK_LOCAL)) { svSetValue (ifcfg, "IPV6INIT", "yes", FALSE); svSetValue (ifcfg, "IPV6_AUTOCONF", "no", FALSE); svSetValue (ifcfg, "DHCPV6C", NULL, FALSE); } else if (!strcmp (value, NM_SETTING_IP6_CONFIG_METHOD_SHARED)) { svSetValue (ifcfg, "IPV6INIT", "yes", FALSE); svSetValue (ifcfg, "DHCPV6C", NULL, FALSE); /* TODO */ }
4. The network setup utility (which has your names on it, ;D) doesn't provide for IPv6 configuration as the installer does. We really need the default tools to setup IPv6 to be in place at this point. We can't wait for RHEL 7 to get this right.
Are you talking about system-config-network? In anaconda we use NetworkManager Connection Editor (nm-c-e) in GUI and I think we don't offer more ipv6 configuration options in loader than nm-c-e has
Essentially, there should be 2 options for IPv6: "Automatic" and "Static" configuration. Automatic should imply that a working DHCPv6 client will be started. If you have a way to only start it when a router advertisement with the "O" (other) or "M" (managed) flags set, then that would be better since it would match the requirement by the RFC... I can't think of a way to easily do that though (maybe with udev...). So the other obvious solution is to just start the DHCPv6 client up in case it's needed. This seems to be how Windows handles it by default.
Perhaps "stateless" (or "automatic") DHCPv6 (with IPV6_AUTOCONF="yes", that is what you are suggesting below) can be added to present ("stateful" or "static") DHCPv6 in loader. It should be easy, but I'd hesitate to do it unless it has been added to nm-c-e too.
Example interface configuration for "automatic" IPv6: DEVICE="eth0" BOOTPROTO="dhcp" DHCPV6C="yes" HWADDR="00:1D:09:EF:E9:9A" IPV6INIT="yes" IPV6_AUTOCONF="yes" NM_CONTROLLED="yes" ONBOOT="yes"
Radek _______________________________________________ Anaconda-devel-list mailing list Anaconda-devel-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/anaconda-devel-list