Bug 625938 - Fedora IPv6 dhclient times out in network script before receiving an address.
Fedora IPv6 dhclient times out in network script before receiving an address.
Status: CLOSED NOTABUG
Product: Fedora
Classification: Fedora
Component: initscripts (Show other bugs)
13
All Linux
low Severity medium
: ---
: ---
Assigned To: Bill Nottingham
Fedora Extras Quality Assurance
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2010-08-20 16:35 EDT by Russ
Modified: 2014-03-16 23:24 EDT (History)
6 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2010-09-08 14:23:04 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)

  None (edit)
Description Russ 2010-08-20 16:35:11 EDT
Description of problem:

History:

1996: Alpha quality IPv6 support in Linux kernel development version 2.1.8.
2000: Microsoft releases an IPv6 technology preview version for Windows 2000.
2001: Red Hat, Inc.announced the availability of Red Hat Linux 7.1 with ipv6
2005: Linux 2.6.12 removes experimental status from its IPv6 implementation.
2008: IANA adds AAAA records for the IPv6 addresses of six root name servers.
2010: Fedora still does not support dual-stack ipv4/ipv6 with ipv6 dhcp - 14 years after the first ipv6 Linux kernel was released. . . 

Synopsis:

The ISC dhclient used in Fedora does not support dual instances of ipv4 and ipv6. The only way for ipv6 dhcp to work alongside the ipv4 dhcp is to run a second instance of dhclient using the /sbin/dhclient -6 command. Unfortunately, doing so cannot be done automatically, and results in conflicts and problems in NetworkManager.

Previously the WIDE-dhcp client was available in Fedora repositories. It could run alongside the ISC dhclient, but it is no longer available. Thus, there is currently no ipv6 dhclient service available and a system hack must be done to get ipv6 using dhcp to function. Since many large networks require ipv6 dhcp to function, this greatly limits usage of Fedora on those networks. Thus it probably would also impact the adoption of RHEL in those scenarios by system administrators familiar with Fedora.


Version-Release number of selected component (if applicable):


How reproducible:
always

Steps to Reproduce:

1. ifup on dual-stack ipv4/ipv6 network using dhcp6 
2. ifconfig: is there a global ipv6 address?

  
Actual results:

no global ipv6 address is configured

Expected results:

a global ipv6 address is configured

Additional info:
Comment 1 Jiri Popelka 2010-08-23 05:02:33 EDT
(In reply to comment #0)
> The only way for ipv6 dhcp to work alongside the ipv4 dhcp is to run a
> second instance of dhclient using the /sbin/dhclient -6 command.
> Unfortunately, doing so cannot be done automatically,
> and results in conflicts and problems in NetworkManager.

Hello,

Are you using NetworkManager or network service (ifup/ifdown) ?
In case of NM, set IPv6 in NM applet.
Right click on NM applet, Edit connections, eth0, edit, IPv6 Settings.
It's set to automatic by default,
so you should get IPv6 address out of the box on IPv6 network.

If you are using network service, use DHCPV6C variable in
/etc/sysconfig/network-scripts/ifcfg-eth0

See
/usr/share/doc/initscripts-9.12.1/sysconfig.txt

   IPv6-only option to enable DHCPv6 client:
      DHCPV6C=yes|no
      This will enable the DHCPv6 features of dhclient to be run for the interface.
      See man dhclient(8) and dhclient.conf(5).
      DHCPV6C_OPTIONS=...
      This will pass given arguments to the DHCPv6 client.  For example,
      "-S" option will request network information (e.g., DNS addresses)
      only, not IPv6 addresses
Comment 2 Russ 2010-09-05 21:35:53 EDT
(In reply to comment #1)

> Are you using NetworkManager or network service (ifup/ifdown) ?

Both ways:

1)NetworkManager on a laptop.
2)network service on a server.

>In case of NM, set IPv6 in NM applet.
> Right click on NM applet, Edit connections, eth0, edit, IPv6 Settings.
> It's set to automatic by default,
> so you should get IPv6 address out of the box on IPv6 network.

Sheesh! I hope this doesn't sound rude, but are you with RH 1st-level tech support or something? Let's please get this bug past the basic newbie user level. We understand all this. We are not newbie users here. We understand all the Fedora docs and configs. We have been working with RHL since inception and with Linux since before Red Hat existed...

NM applet does not work on KDE anymore unless you run it manually via console. That also needs to be fixed or at least get knetworkmanager working with IPv6, but that's another bug. So you are off topic here. We are talking about DHCLIENT here, and the scripts that get it going. . . 
 
> If you are using network service, use DHCPV6C variable in
> /etc/sysconfig/network-scripts/ifcfg-eth0
> 
> See
> /usr/share/doc/initscripts-9.12.1/sysconfig.txt
> 
>    IPv6-only option to enable DHCPv6 client:
>       DHCPV6C=yes|no
>       This will enable the DHCPv6 features of dhclient to be run for the
> interface.
>       See man dhclient(8) and dhclient.conf(5).
>       DHCPV6C_OPTIONS=...
>       This will pass given arguments to the DHCPv6 client.  For example,
>       "-S" option will request network information (e.g., DNS addresses)
>       only, not IPv6 addresses

Sure, that would certainly work fine if all that was needed was IPv6. . .

BUT. . . you can't run the DHCPv6 dhclient and also have IPv4 working unless you run another instance of dhclient.

This is about  dual-stack ipv4/ipv6 network using dhcp6 AND dchp4. 
Maybe you should please actually READ THE BUG before commenting.
Please don't start with Router Advertisements, either. We know that works. 
We don't want and can't use IPv6 autoconfiguration.
The issue is with DHCLIENT for DHCPv6 and it is a serious issue. This kind of stuff is basic and has worked out of the box on Windows since Win2k. It even worked before on Fedora until they pulled WIDE-DHCP. . .
Comment 3 Jiri Popelka 2010-09-06 07:18:26 EDT
(In reply to comment #2)
> Sheesh! I hope this doesn't sound rude, but are you with RH 1st-level tech
> support or something?
Actually yes, I'm Fedora 1st-level tech support or something.

> Let's please get this bug past the basic newbie user
> level. We understand all this. We are not newbie users here. We understand all
> the Fedora docs and configs. We have been working with RHL since inception and
> with Linux since before Red Hat existed...
Jeez. What a lucky day I have. Then you can help me figure out why it works here and not there. Because I'm a newbie user.
 
> This is about  dual-stack ipv4/ipv6 network using dhcp6 AND dchp4. 
> Maybe you should please actually READ THE BUG before commenting.
> The issue is with DHCLIENT for DHCPv6 and it is a serious issue.
Maybe you should better describe the issue, because I still don't understand.
Comment 4 Russ 2010-09-06 16:13:09 EDT
(In reply to comment #3)
> Actually yes, I'm Fedora 1st-level tech support or something.

<Big Grin>

Okay then. At least you admit it ;) I appreciate your honesty and I'll try to be patient then. . .

> Jeez. What a lucky day I have. Then you can help me figure out why it works
> here and not there. Because I'm a newbie user.

Sure, but just please try to understand that I don't have time to teach a full course on IPv6, DHCP, etc. when all I'm trying to do is get a bug resolved. So the best thing for both of us would be for you to just send the bug to the maintainers responsible for the package. But I suppose the bug has to get through you first. . .

> > This is about  dual-stack ipv4/ipv6 network using dhcp6 AND dchp4. 
> > The issue is with DHCLIENT for DHCPv6 and it is a serious issue.
> Maybe you should better describe the issue, because I still don't understand.

I'll be happy to give you more background then:

Previously with IPv4 DHCP the client gets all configuration information using a DHCP client such as dhclient. This includes IP address, default route, and DNS servers. In IPv6 the powers that be, that make the RFC's, decided that auto configuration of the IP address would be a better alternative in MOST cases. Therefore, on most clients, the global IPv6 address is normally configured by the client itself by combining the globally routable subnet with the MAC address and maybe also the current date.

The client gets the routable subnet and default route through what is called Router Advertisements. A daemon (radvd) runs on the router that sends out the subnet and default route to the clients. BUT, the radvd daemon does NOT issue actual addresses. There has been a lot of debate on the subject in the RFC's. The powers that be decided that radvd will NOT send addresses, and that DHCPv6 cannot send the routes.

So if you want a SPECIFIC fixed IPv6 address you have two alternatives - you can either configure a static IPv6 address on the client, or you can use DHCPv6 to issue an address. Obviously if you are running a big network then static IP's managed by the client is a bad idea. So you NEED DHCPv6. Which means you also need a DHCPv6 client.

The dhclient that Fedora currently uses is the ISC dhclient. The ISC dhclient only supports EITHER IPv4 or IPv6. It does NOT support both in the same instance. So if you are only running the ISC dhclient and you want support for both you need to run TWO instances of the ISC dhclient.

To overcome this limitation prior Fedora versions also had the WIDE-dhcp client in the repositories, and that is what was used for DHCPv6. The WIDE-dhcp client is also what is used in current RHEL versions for DHCPv6.

The current Fedora version does not have the WIDE-dhcp client in the repositories. So if you are not running NetworkManager then DHCPv6 does not work unless you start a separate instance of the ISC dhclient manually or in a script.

> Then you can help me figure out why it works
> here and not there.

A few possibilities:

1. You are using RHEL (which has WIDE-dhcp client) and not Fedora.
2. You are using a Fedora version before v13 (which has WIDE-dhcp client).
3. You are using NetworkManager.
4. You are NOT using DHCPv6 and instead the IPv6 address is autoconfigured.
5. You added a custom script like we did to add a second instance of ISC dhclient for DHCPv6.
6. You are using IPv6 only and not dual-stack.
Comment 5 Jiri Popelka 2010-09-07 05:51:49 EDT
(In reply to comment #4)
> (In reply to comment #3)
> > Actually yes, I'm Fedora 1st-level tech support or something.
 'or something' means other levels of tech support and maintainer.

> The dhclient that Fedora currently uses is the ISC dhclient. The ISC dhclient
> only supports EITHER IPv4 or IPv6. It does NOT support both in the same
> instance. So if you are only running the ISC dhclient and you want support for
> both you need to run TWO instances of the ISC dhclient.
> To overcome this limitation prior Fedora versions also had the WIDE-dhcp client
> in the repositories, and that is what was used for DHCPv6. The WIDE-dhcp client
> is also what is used in current RHEL versions for DHCPv6.
Earlier versions of Fedora (up to F8) and RHEL-5 use(d) dhcp-3 + dhcpv6 (yes, that's the name for the package, see https://fedorahosted.org/dhcpv6).
In F9 - F11 we used dhcp-4 + dhcpv6 and finally since F12 there's only dhcp-4.
I'm maintainer for dhcp and dhcpv6 (RHEL only) so I should know.
 
> The current Fedora version does not have the WIDE-dhcp client in the
> repositories. So if you are not running NetworkManager then DHCPv6 does not
> work unless you start a separate instance of the ISC dhclient manually or in a
> script.
THIS is the ONLY thing I haven't understood since beginning of our conversation.
What's the difference between running
'dhclient -4' + 'dhcpv6c' (RHEL-5, Fedora prior to F-12)
and
'dhclient -4' + 'dhclient -6' (RHEL-6, Fedora since F-12)
?
In both cases you have 2 different processes running.
In both cases the only thing you need to change is to add DHCPV6C=yes into ifcfg-ethx
The only thing that changed is that ifup-eth script now
starts (when there's DHCPV6C defined) 'dhclient -6' instead of 'dhcpv6c'
http://git.fedorahosted.org/git/?p=initscripts.git;a=commitdiff;h=36697b32a0ea243447430d8c72ebfd55bc2736c2

> A few possibilities:
> 1. You are using RHEL (which has WIDE-dhcp client) and not Fedora.
From my point of view there's no difference.
You always have 1 client (or process/instance) for dhcpv4 and 1 client for dhcpv6 running.
> 2. You are using a Fedora version before v13 (which has WIDE-dhcp client).
The same as 1.
> 3. You are using NetworkManager.
correct
> 4. You are NOT using DHCPv6 and instead the IPv6 address is autoconfigured.
correct
> 5. You added a custom script like we did to add a second instance of ISC dhclient for DHCPv6.
Maybe you could show me the script so I would finally know what you are trying to achieve.
> 6. You are using IPv6 only and not dual-stack.
correct

BTW. Thank you for the description in comment #4.
     I already know that, but appreciate it.
Comment 6 Jiri Popelka 2010-09-07 06:00:32 EDT
I admit that Fedora-12 is (and remains) crippled (bug #531769) in this way,
so are we talking about Fedora-13, right ?
Comment 7 Russ 2010-09-07 07:41:00 EDT
(In reply to comment #6)
> so are we talking about Fedora-13, right ?

Yes, we're talking about F13.

...and probably 14,15,16 at this rate :(

> I admit that Fedora-12 is (and remains) crippled (bug #531769) in this way,

I haven't looked at that bug, but it looks like I was wrong about the last Fedora version with dhcpv6_client in x86. That was F11. Only SPARC arch had it in F12, and no arch has it in F13.

You may want to look at <a href>http://fedoraproject.org/wiki/IPv6Guide</a>. It has more IPv6 info, but is now out of date since dhcpv6_client (WIDE-DHCP client) is no longer in the repos.

All that really needs to be done is add back the dhcpv6_client package to the repo. . . That would be a good starting point and I would be satisfied then. But since the ISC dhclient also works well, and is in the repos and all the default installs, a more elegant option would be to fix the network scripts.
Comment 8 Russ 2010-09-07 08:00:29 EDT
> I admit that Fedora-12 is (and remains) crippled (bug #531769) in this way,

Okay. I looked at your bug and traced it down. The bug you referenced was actually a dupe. This bug is actually the one where a fix was implemented:

https://bugzilla.redhat.com/show_bug.cgi?id=553017

But it wasn't actually fixed properly as far as I can tell. The patch that was implemented only replaced the IPv4 dhclient instance with a IPv6 dhclient instance. That works fine as long as you are running IPv6 only, or IPv4/IPv6 with IPv6 auto configuration using radvd. But if you need IPv6 using DHCP along with IPv4 the patch does not help. That's why the dhcpv6_client (WIDE-DHCP
client) was used previously. . .

So you need to either reopen the old bug or follow up on this one.
Comment 9 Jiri Popelka 2010-09-07 08:54:22 EDT
(In reply to comment #7)
> ... since dhcpv6_client (WIDE-DHCP client) is no longer in the repos.
dhcpv6-client (https://fedorahosted.org/dhcpv6) is not WIDE-DHCP (http://www.sfc.wide.ad.jp/~tomy/dhcp/README)
 
> All that really needs to be done is add back the dhcpv6_client package to the
> repo. . . That would be a good starting point and I would be satisfied then.
> But since the ISC dhclient also works well, and is in the repos and all the
> default installs, a more elegant option would be to fix the network scripts.
Ok, if you think the problem is in network scripts go ahead and reassign this bug to initscripts.

(In reply to comment #8)
> But it wasn't actually fixed properly as far as I can tell.
> The patch that was implemented only replaced the IPv4 dhclient
> instance with a IPv6 dhclient instance.
Again:
The only thing that changed is that ifup-eth script now
starts (when there's DHCPV6C defined) 'dhclient -6' instead of 'dhcpv6c'
http://git.fedorahosted.org/git/?p=initscripts.git;a=commitdiff;h=36697b32a0ea243447430d8c72ebfd55bc2736c2
Nothing changed with dhclient for IPv4.

> That works fine as long as you are running IPv6 only, or IPv4/IPv6
> with IPv6 auto configuration using radvd.
> But if you need IPv6 using DHCP along with IPv4 the patch does not help.
Did you try that? Because I did and it works for me.

> That's why the dhcpv6_client (WIDE-DHCP client) was used previously. . .
dhcpv6-client (WIDE-DHCP is different implementation of dhcpv6) was used
because ISC dhcp-3 is IPv4 only. Now when ISC dhclient knows how to speak DHCPv6 we don't need dhcpv6-client anymore.

> So you need to either reopen the old bug or follow up on this one.
Then reopen the old bug or reassign this one to initscripts.
I'm not able to help you, because I absolutely have no idea what are you trying to achieve.
Comment 10 Russ 2010-09-07 16:21:13 EDT
(In reply to comment #9)

> dhcpv6-client (https://fedorahosted.org/dhcpv6) is not WIDE-DHCP

Okay. Someone somewhere said it was WIDE. My bad. But it's not ISC dhclient.

> Ok, if you think the problem is in network scripts go ahead and reassign this
> bug to initscripts.

I'm just a bug submitter. I don't know how to reassign or even if I have the requisite permissions. I thought that's what you did.


> The only thing that changed is that ifup-eth script now
> starts (when there's DHCPV6C defined) 'dhclient -6' instead of 'dhcpv6c'
> http://git.fedorahosted.org/git/?p=initscripts.git;a=commitdiff;h=36697b32a0ea243447430d8c72ebfd55bc2736c2
> Nothing changed with dhclient for IPv4.

Except for the fact that dhclient -4 isn't running then. So IPv4 does not work.

> 
> > That works fine as long as you are running IPv6 only, or IPv4/IPv6
> > with IPv6 auto configuration using radvd.
> > But if you need IPv6 using DHCP along with IPv4 the patch does not help.
> Did you try that? Because I did and it works for me.

Try what? 

We MUST have DHCPv6. We cannot use radvd. Our radvd daemons do not allow client autoconfiguration. It is set that way ON PURPOSE. Same as most enterprises should have done.

> > That's why the dhcpv6_client (WIDE-DHCP client) was used previously. . .
> dhcpv6-client (WIDE-DHCP is different implementation of dhcpv6) was used
> because ISC dhcp-3 is IPv4 only. Now when ISC dhclient knows how to speak
> DHCPv6 we don't need dhcpv6-client anymore.

Yes. That is the logic behind it and a good idea. But then you need two instances of the ISC dhclient running to have DHCPv4 + DHCPv6. Whoever made the scripts did not think of that.


> Then reopen the old bug or reassign this one to initscripts.
> I'm not able to help you, because I absolutely have no idea what are you trying to achieve.

We are trying to achieve a working network setup without having to make an additional custom initscript for DHCPv6 that should not be needed. Once you get more people using IPv6 this will be a BIG DEAL (TM). While most people using Fedora, since they are individuals, will be happy and never notice a problem using radvd, anybody needing DHCPv6 will have the same problem. If RHEL uses the Fedora 13 DHCP client setup in the next release then enterprises will start dropping it like a hot potato. All client and server versions of Windows made from Y2K (except 2000) support it out of the box. I would bet that most Linux distros do too.

> Then reopen the old bug or reassign this one to initscripts.

Would not that be something you should do?
Comment 11 Jiri Popelka 2010-09-08 05:37:16 EDT
(In reply to comment #10)
> Try what?
(DHCPv4 server) 
# cat /etc/dhcp/dhcpd.conf
subnet 192.168.0.0 netmask 255.255.255.0 {
  range 192.168.0.10 192.168.0.20;
}
# dhcpd -d eth1
(DHCPv6 server)
# cat /etc/dhcp/dhcpd6.conf
subnet6 3ffe:501:ffff:100:200:ff:fe00:0/112 {
  range6 3ffe:501:ffff:100:200:ff:fe00:abcc 3ffe:501:ffff:100:200:ff:fe00:abcd;
}
# dhcpd -6 -d -cf /etc/dhcp/dhcpd6.conf eth1
(client DHCPv4+DHCPv6)
# cat /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=dhcp
DHCPV6C=yes
# service network restart
...
Determining IP information for eth1... done.
...
# ip addr show eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
    link/ether 08:00:27:2d:c1:50 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.10/24 brd 192.168.0.255 scope global eth1
    inet6 3ffe:501:ffff:100:200:ff:fe00:abcd/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe2d:c150/64 scope link 
       valid_lft forever preferred_lft forever
# ps aux | grep dhclient
root      3738  0.0  0.1   2828   408 ?        Ss   10:44   0:00 /sbin/dhclient -1 -q -lf /var/lib/dhclient/dhclient-eth1.leases -pf /var/run/dhclient-eth1.pid eth1
root      3796  0.0  0.1   2828   408 ?        Ss   10:44   0:00 /sbin/dhclient -6 -1 -lf /var/lib/dhclient/dhclient6-eth1.leases -pf /var/run/dhclient6-eth1.pid eth1

As you can see, in my case there is 1 dhclient for DHCPv4 and 1 dhclient for DHCPv6 running. And the interface correctly gets address from DHCPv4 server and from DHCPv6 server.

> Yes. That is the logic behind it and a good idea. But then you need two
> instances of the ISC dhclient running to have DHCPv4 + DHCPv6.
Yes.
> Whoever made the scripts did not think of that.
Yes he did. See my example above - there ARE 2 instances of ISC dhclient running.

> > Then reopen the old bug or reassign this one to initscripts.
> 
> Would not that be something you should do?
You can do that by clicking on Component and selecting initscripts.

> Except for the fact that dhclient -4 isn't running then. So IPv4 does not work.
And why didn't say this earlier ?
I'm afraid we need to go back to 'basic newbie user level'.
Can you show me what's in the clients ifcfg-ethx ?
What shows 'cat /var/log/messages | grep dhclient' ?
Comment 12 Russ 2010-09-08 11:17:44 EDT
Hey Jiri,

First I must thank you for your fast responses. That is MUCH appreciated!

Thanks also for your patience. I believe we might be getting somewhere now.

> > Try what?
> (DHCPv4 server) 

Our DHCP server does not run on the host in question. But the config is similar to what you posted and is working fine.

> # dhcpd -d eth1
> (DHCPv6 server)
> # cat /etc/dhcp/dhcpd6.conf
> subnet6 3ffe:501:ffff:100:200:ff:fe00:0/112 {
>   range6 3ffe:501:ffff:100:200:ff:fe00:abcc 3ffe:501:ffff:100:200:ff:fe00:abcd;

Why do you have a 6Bone address range configured??? Is that just for this test? Global IPv6 is prefix is 2001. Anyway, comment is same as above:
Our DHCP server does not run on the host in question.  But the config is working fine. So no probs there.

> # dhcpd -6 -d -cf /etc/dhcp/dhcpd6.conf eth1
> (client DHCPv4+DHCPv6)
> # cat /etc/sysconfig/network-scripts/ifcfg-eth1
> DEVICE=eth1
> ONBOOT=yes
> BOOTPROTO=dhcp
> DHCPV6C=yes

Here we might be getting somewhere. Maybe. 

DHCPd is the daemon to ISSUE the addresses, is it not? It shouldn't be needed to be running on the client. I thought we were talking about dhclient here. Please correct me if that is a wrong assumption with current Fedora IPv6 config, and that DHCPd needs to run also for some reason.

DHCPV6C=yes is not in the ifcfg for our interfaces any more for some reason.
It was in their previously when dhcpv6_client was in the repositories. In all the config changes we did to get things running again in F13 somehow it that directive must have been removed. It did not seem to make a difference either way, however. But I will try to add it back and see if that solves the problem, as it may be the cause of the issue.

> # service network restart
> ...
> Determining IP information for eth1... done.
> ...
> # ip addr show eth1
> 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state
> UNKNOWN qlen 1000
>     link/ether 08:00:27:2d:c1:50 brd ff:ff:ff:ff:ff:ff
>     inet 192.168.0.10/24 brd 192.168.0.255 scope global eth1
>     inet6 3ffe:501:ffff:100:200:ff:fe00:abcd/64 scope global 
>        valid_lft forever preferred_lft forever
>     inet6 fe80::a00:27ff:fe2d:c150/64 scope link 
>        valid_lft forever preferred_lft forever

Yes. Ours is similar except for the 6bone address. But we had to add an extra script in F13 to start sbin/dhclient -6 to get the global address. Otherwise it was only link-local.

> # ps aux | grep dhclient
> As you can see, in my case there is 1 dhclient for DHCPv4 and 1 dhclient for
> DHCPv6 running. And the interface correctly gets address from DHCPv4 server and from DHCPv6 server.

Nice! I'm happy then to see that yours is working correctly. But why did that not occur on our clients w/o a special  sbin/dhclient -6 script? Hopefully it is just a misconfiguration problem then.

> > Whoever made the scripts did not think of that.
> Yes he did. See my example above - there ARE 2 instances of ISC dhclient
> running.

Good! I hope that you are correct and that I am wrong.

> > > Then reopen the old bug or reassign this one to initscripts.
> You can do that by clicking on Component and selecting initscripts.

Thank you for explaining how to do that.

> > Except for the fact that dhclient -4 isn't running then. So IPv4 does not work.
> And why didn't say this earlier ?


I did, actually. See my first post in bug report:
> "The ISC dhclient used in Fedora does not support dual instances of ipv4 and
ipv6."

But I'm afraid you misunderstood my comment above. My point was that two instances of ISC dhclient must be running, as it is either -4 or -6. We never could get that to happen w/o a special /sbin/dhclient -6 script. Either dhclient -4 would run, or dhclient -6 would run, depending on the config. But we could never get both to run at once like you had above.

Thank you for posting your output. That helps tremendously. I had assumed that you had only an IPv6 autoconfigured address on your system. That was all we could get on ours without a custom sbin/dhclient -6 script. Since your setup does indeed appear to be working the problem then is likely an issue with our configuration. We are running libvirt on most machines, and that requires an additional br0 bridge device. So that may be part of the issue since yours is working.

I will test a clean F13 install, and then an install with br0, and then report back with my findings.

Thanks for your help, but please don't close the bug until I can confirm. Some type of issue may still be present.
Comment 13 Jiri Popelka 2010-09-08 11:49:49 EDT
(In reply to comment #12)
> > (client DHCPv4+DHCPv6)
This should mean: and now to the client configuration

> DHCPd is the daemon to ISSUE the addresses, is it not? It shouldn't be needed
> to be running on the client. I thought we were talking about dhclient here.
Yes. see above

> DHCPV6C=yes is not in the ifcfg for our interfaces any more for some reason.
> It was in their previously when dhcpv6_client was in the repositories. In all
> the config changes we did to get things running again in F13 somehow it that
> directive must have been removed. It did not seem to make a difference either
> way, however. But I will try to add it back and see if that solves the
> problem, as it may be the cause of the issue.
Great. But you should have do that after my FIRST comment.

> Nice! I'm happy then to see that yours is working correctly. But why did that
> not occur on our clients w/o a special  sbin/dhclient -6 script? Hopefully it
> is just a misconfiguration problem then.
YES, one line.
DHCPV6C=yes
I'm talking about it in all of my comments.

> I did, actually. See my first post in bug report:
> > "The ISC dhclient used in Fedora does not support dual instances of ipv4 and
> ipv6."
That says *NOTHING*
 
> Thank you for posting your output. That helps tremendously.
'basic newbie user level' always helps.
Comment 14 Russ 2010-09-08 13:10:31 EDT
> > > (client DHCPv4+DHCPv6)
> This should mean: and now to the client configuration

Yeah. I figured that out eventually.

> DHCPV6C=yes is not in the ifcfg for our interfaces any more for some reason.
> Great. But you should have do that after my FIRST comment.

It was tried before. Didn't help. Then it was deleted in all the changes trying to get things working. I didn't see any point in rehashing what had already been tried previously.

> DHCPV6C=yes
> I'm talking about it in all of my comments.

Yeah. Yeah. I know it's needed. It should have been in there and was before. My bad. I admit I should have rechecked the ifcfg.

> > Thank you for posting your output. That helps tremendously.
> 'basic newbie user level' always helps.

I would not exactly call the output in your last post 'basic newbie user level'
but 
> Are you using NetworkManager or network service (ifup/ifdown) ?
certainly is. If it wasn't for that comment I probably would have rechecked the network configs then like you suggested. You are correct to have asked that, however. I was just a bit put off by it. Sorry.

Anyway, I found the cause of the problem finally. One thing we obviously didn't check enough was the logs. So here's what we have:

Tried ifcfg-eth0 both ways: BRIDGE=br0 and BRIDGE=. With br0 disabled we get this:
Sep  8 16:55:42 lp01 dhclient[6023]: XMT: Solicit on eth0, interval 25420ms.
Sep  8 16:56:07 lp01 dhclient[6023]: Max retransmission duration exceeded.

With br0 enabled we get this:
Sep  8 17:22:36 lp01 dhclient[6795]: XMT: Solicit on br0, interval 28960ms.
Sep  8 17:23:05 lp01 dhclient[6795]: Max retransmission duration exceeded.

grepping the processes for dhclient in both cases only gets you the -4 instance.

Then, if you run /sbin/dhclient -6 the IPv6 address comes up.

So what is happening with us is that /sbin/dhclient -6 in the ifup script times out before an address is received from the DHCPv6 daemon on the router. If that occurs (and it ALWAYS occurs) then no instance of /sbin/dhclient -6 stays running, and no global IPv6 address is ever configured.

Unfortunately, however, speeding up our router response times in issuing an IPv6 address is NOT an option. The Windows clients all receive an IPv6 address
with no issues, as do clients running other Linux distributions, such as mobile phones, tablets, etc. Since running /sbin/dhclient -6 manually or in a script ALWAYS works I would suspect there is a problem with /sbin/dhclient -6 timing out prematurely in the network scripts.
Comment 15 Russ 2010-09-08 13:15:49 EDT
So bug title should actually be:

> Fedora IPv6 dhclient times out in network script before receiving an address.

Please suggest proper course of action at this point.
Comment 16 Jiri Popelka 2010-09-08 13:29:54 EDT
Glad we finally have some more specific information.
I'll be offline for the rest of the week,
so let's pass this to initscripts for now.
Comment 17 Bill Nottingham 2010-09-08 13:39:30 EDT
You can set DHCPV6C_OPTIONS in your ifcfg file to up the timeout if you like. Right now, it's just using the dhclient defaults (which appear to be 30 seconds?)
Comment 18 Russ 2010-09-08 14:07:42 EDT
(In reply to comment #17)
> You can set DHCPV6C_OPTIONS in your ifcfg file to up the timeout if you like.
> Right now, it's just using the dhclient defaults (which appear to be 30
> seconds?)
Thanks again Jiri!

Thanks also for the timeout info Bill.

It appears the real issue was a problem with our slow DHCPv6 server daemon. I made some configuration adjustments there and global IPv6 is now working properly without any custom scripts on a few machines. I will also increase the timeout value slightly on the clients before I roll out the changes to the other machines. That should resolve any further issues.

I appreciate the assistance and am happy it's not a bug. Sorry to bother you guys with a non-issue.
Comment 19 Bill Nottingham 2010-09-08 14:23:04 EDT
Glad we could help.

Note You need to log in before you can comment on or make changes to this bug.