Red Hat Bugzilla – Bug 825794
On (immediately) reconnecting to network, all my existing TCP connections are dead.
Last modified: 2013-02-13 08:55:48 EST
Something seems to be enabling the wildly misguided and paranoid Privacy Addressing, so every time I fall off the network and reconnect (which unfortunately happens quite a lot), I seem to get *new* random addresses and all my existing connections are dead.
Please, make sure this idiocy is *never* turned on unless one of the tinfoil hat brigade explicitly enables it on their machine.
I removed the three gratuitous 'ifcfg-Auto_Baythorne_Wavelan-' files from /etc/sysconfig/network-scripts that probably should have been the subject of another bug, and I reconnected to the network. Now I can be fairly sure that the configuration file it's using is the newly-created 'ifcfg-Auto_Baythorne_Wavelan-1' (and not ifcfg-Auto_Baythorne_Wavelan which presumably ti should have used). The file it's using contains the line:
I have no idea where it got the idea it should create a new config with that silly default, instead of using the *existing* config for this network.
Just because we're paranoid doesn't mean they<tm> are not out to get us. ;)
Still, even with privacy addresses on, connections should be preserved. So since NM resets the interface when reconnecting, maybe it needs to help the kernel out and restore the older addresses that would otherwise get lost?
We've got a supplicant reconnect timeout (15 seconds or so) that handles reconnection to a WiFi network, and if the supplicant is able to reconnect during that time then the connection won't be torn down and the address should still exist on the interface. However, if the supplicant can't reconnect, then we have to tear things down and see if another connection would be better. In that case, obviously addresses are deleted.
It appears that the address regen gets called whenever the interface goes up: addrconf_notify() (I assume) gets called for netdev events and in the block for NETDEV_UP/NETDEV_CHANGE addrconf_dev_config() gets called, which regenerates the address. This means that if we *ever* take the device down, we'll get a new address. We take the device down to ensure that it's configuration is completely cleared and it's ready to be reactivated with completely new configuration.
We also have to take bond devices down (and maybe bridges too) and their slaves since various bonding/bridging operations cannot be done unless the device is down.
One approach is to deactivate the device, but not take it down until we reconnect to a *different* network. This would involve adding an argument to nm_device_deactivate() for "take device down" which would be FALSE when deactivating the device in response to a failure or manual deactivation, and upon reconnecting to a different network (*or if the connection has been modified*) then we call nm_device_deactivate(TRUE). In the future we could extend this to even keep IP addresses up (and dhclient) for a short period of time, even though the L2 link is gone, so that we reconnect more quickly. Basically, we decouple the L2 link state from the L3+ states somewhat.
there's also a proposal in the works for making privacy addresses be stable-per-network (http://tools.ietf.org/html/draft-ietf-6man-stable-privacy-addresses-00)
This message is a reminder that Fedora 16 is nearing its end of life.
Approximately 4 (four) weeks from now Fedora will stop maintaining
and issuing updates for Fedora 16. It is Fedora's policy to close all
bug reports from releases that are no longer maintained. At that time
this bug will be closed as WONTFIX if it remains open with a Fedora
'version' of '16'.
Package Maintainer: If you wish for this bug to remain open because you
plan to fix it in a currently maintained version, simply change the 'version'
to a later Fedora version prior to Fedora 16's end of life.
Bug Reporter: Thank you for reporting this issue and we are sorry that
we may not be able to fix it before Fedora 16 is end of life. If you
would still like to see this bug fixed and are able to reproduce it
against a later version of Fedora, you are encouraged to click on
"Clone This Bug" and open it against that version of Fedora.
Although we aim to fix as many bugs as possible during every release's
lifetime, sometimes those efforts are overtaken by events. Often a
more recent Fedora release includes newer upstream software that fixes
bugs or makes them obsolete.
The process we are following is described here:
Fedora 16 changed to end-of-life (EOL) status on 2013-02-12. Fedora 16 is
no longer maintained, which means that it will not receive any further
security or bug fix updates. As a result we are closing this bug.
If you can reproduce this bug against a currently maintained version of
Fedora please feel free to reopen this bug against that version.
Thank you for reporting this bug and we are sorry it could not be fixed.