Bug 55404
Summary: | netcfg does not apend new network configuration | ||
---|---|---|---|
Product: | [Retired] Red Hat Linux | Reporter: | Phil Terrett <philt> |
Component: | netcfg | Assignee: | Nalin Dahyabhai <nalin> |
Status: | CLOSED CANTFIX | QA Contact: | David Lawrence <dkl> |
Severity: | medium | Docs Contact: | |
Priority: | medium | ||
Version: | 7.2 | CC: | earlt, isak, q, webmaster |
Target Milestone: | --- | ||
Target Release: | --- | ||
Hardware: | i386 | ||
OS: | Linux | ||
Whiteboard: | |||
Fixed In Version: | Doc Type: | Bug Fix | |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2006-10-18 17:13:30 UTC | Type: | --- |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: |
Description
Phil Terrett
2001-10-30 20:48:21 UTC
It looks like the new configuration does get added wether you use linuxconf netconfig or neat. The problem seems to be in ifdown because after changing an ip address on an interface the command: ip addr shows both the old and new addresses assigned to the interface. It appears that ifdown when called by network restart is using the new ip address and not the old, so therefore both the new and old addresses are assigned to the interface. A work around for this problem is to first issue ifdown on the interface before changing it. The old ip address will be removed. Then change it with whatever command and do a network restart. (no re-boot is then necessary). It appears that ifdown should look for the ifconfig??.old and down it first ?? Earl I attached a patch for this problem. But first I would like to explain what exactly happens here - the network can get messed up pretty bad when the server is suddenly responding to multiple IP addresses. I'm using eth0 as an example here: -- Comment: eth0 is up and running # ifconfig eth0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx inet addr:210.210.210.20 Bcast:210.210.210.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1285 errors:0 dropped:0 overruns:0 frame:0 TX packets:901 errors:0 dropped:0 overruns:0 carrier:0 collisions:6 RX bytes:121535 (118.6 Kb) TX bytes:81329 (79.4 Kb) # ip addr ls eth0 2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 100 link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff inet 210.210.210.20/24 brd 210.210.210.255 scope global eth0 # -- Comment: Now I change IPADDR in "ifcfg-eth0" to 210.210.210.99 # service network stop Shutting down interface eth0: [ OK ] # -- Comment: 210.210.210.20/24 is still showing up: # ip addr ls eth0 2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast qlen 100 link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff inet 210.210.210.20/24 brd 210.210.210.255 scope global eth0 # # service network start Setting network parameters: [ OK ] Bringing up interface lo: [ OK ] Bringing up interface eth0: [ OK ] # -- Comment: Now 210.210.210.20 is showing up again instead of 210.210.210.99 # ifconfig eth0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx inet addr:210.210.210.20 Bcast:210.210.210.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1285 errors:0 dropped:0 overruns:0 frame:0 TX packets:909 errors:0 dropped:0 overruns:0 carrier:0 collisions:6 RX bytes:121535 (118.6 Kb) TX bytes:81665 (79.7 Kb) -- Comment: 210.210.210.20 is showing up because inet 210.210.210.20/24 was not removed by "ifdown", and the server is now responding to *both* IP addresses! # ip addr ls eth0 2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 100 link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff inet 210.210.210.20/24 brd 210.210.210.255 scope global eth0 inet 210.210.210.99/24 brd 210.210.210.255 scope global secondary eth0 # Here is my suggested patch where "ifup" simply copies "ifcfg-eth0" to "ifcfg-eth0.current" which will be used later by "ifdown" to get always the current/correct IPADDR. ========================= --- ifup.old Thu Nov 22 02:09:05 2001 +++ ifup Thu Nov 22 02:11:40 2001 @@ -36,6 +36,9 @@ exit 1 } +echo "#Do NOT edit this file!" > ${CONFIG}.current +cat ${CONFIG} >> ${CONFIG}.current + if [ ${UID} != 0 ]; then if[ -x /usr/sbin/usernetctl ]; then if /usr/sbin/usernetctl ${CONFIG} report ; then ========================= --- ifdown.old Thu Nov 22 02:08:36 2001 +++ ifdown Thu Nov 22 02:08:54 2001 @@ -30,6 +30,10 @@ exit 1 fi +[ -f "$CONFIG".current ] && { + CONFIG=$CONFIG.current +} + source_config if [ -x /sbin/ifdown-pre-local ]; then ========================= Regards, Werner I forgot to provide one more detail. In line 86 in /etc/sysconfig/network-scripts/ifdown, the script executes the following command: ip addr del ${IPADDR}/${PREFIX} brd ${BROADCAST:-+} dev ${REALDEVICE} For eth0, the variable $IPADDR gets set through /etc/sysconfig/network-scripts/ifcfg-eth0 which means "ifdown" is trying to remove the wrong $IPADDR when "ifcfg-eth0" was changed before "ifdown" gets executed. This is exactly leading to our problem. It helps when "ifup" saves $IPADDR in "ifcfg-eth0.current" so that "if-down" can get later the current $IPADDR. I'm not sure if the approach of simply removing all eth0 entries instead of using a "current" file is a good idea when you do IP aliasing. Regards, Werner *** Bug 56445 has been marked as a duplicate of this bug. *** Red Hat Linux is no longer supported by Red Hat, Inc. If you are still running Red Hat Linux, you are strongly advised to upgrade to a current Fedora Core release or Red Hat Enterprise Linux or comparable. Some information on which option may be right for you is available at http://www.redhat.com/rhel/migrate/redhatlinux/. Red Hat apologizes that these issues have not been resolved yet. We do want to make sure that no important bugs slip through the cracks. Please check if this issue is still present in a current Fedora Core release. If so, please change the product and version to match, and check the box indicating that the requested information has been provided. Note that any bug still open against Red Hat Linux on will be closed as 'CANTFIX' on September 30, 2006. Thanks again for your help. Red Hat Linux is no longer supported by Red Hat, Inc. If you are still running Red Hat Linux, you are strongly advised to upgrade to a current Fedora Core release or Red Hat Enterprise Linux or comparable. Some information on which option may be right for you is available at http://www.redhat.com/rhel/migrate/redhatlinux/. Closing as CANTFIX. |