Package: ifupdown
Version: 0.7.47.2
Severity: normal

Dear Maintainer,

When an interface fails to come up completely using ifup, the IP address is
left on the interface and the default route is left in the routing table (the
route only appears to cause problems for ipv6, as ipv4 routes seem to be
removed along with the ipv4 address).  This puts the interface into an
inconsistent state which will prevent the interface from being brought up after
resolving the script issue.  This is especially problematic with the new IPv6
duplicate address detection, since if an 'inet6 static' interface comes up with
no link the DAD script will fail.

To reproduce:

Example snippet from /etc/network/interfaces:

iface eth5 inet static
        address 192.0.0.2
        netmask 255.255.255.0
        gateway 192.0.0.1
        up /bin/false


Next, bring up the interface:

kibbles:~# ifup eth5
Failed to bring up eth5.
kibbles:~# 

This is the expected behavior, since the 'up' script fails.  Now, after
commenting out the failing line, we get:

kibbles:~# ifup eth5
RTNETLINK answers: File exists
Failed to bring up eth5.
kibbles:~# ifdown eth5
ifdown: interface eth5 not configured
kibbles:~# 

This is not expected.  Looking more closely, we see that the IP address is
already configured on the interface and iproute is refusing to add it again
(ipconfig was much more forgiving in this instance):

kibbles:~# ifup -v eth5
Configuring interface eth5=eth5 (inet)
run-parts --verbose /etc/network/if-pre-up.d
run-parts: executing /etc/network/if-pre-up.d/bridge
run-parts: executing /etc/network/if-pre-up.d/ethtool
run-parts: executing /etc/network/if-pre-up.d/uml-utilities
run-parts: executing /etc/network/if-pre-up.d/vde2
run-parts: executing /etc/network/if-pre-up.d/vlan
run-parts: executing /etc/network/if-pre-up.d/wpasupplicant
ip addr add 192.0.0.2/255.255.255.0 broadcast 192.0.0.255         dev eth5 
label eth5
RTNETLINK answers: File exists
Failed to bring up eth5.
kibbles:~# ip addr show dev eth5
4: eth5: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group 
default qlen 1000
    link/ether 00:1b:21:6b:fa:29 brd ff:ff:ff:ff:ff:ff
    inet 192.0.0.2/24 brd 192.0.0.255 scope global eth5
       valid_lft forever preferred_lft forever
kibbles:~# 

Manually removing the address allows us to bring up the interface:

kibbles:~# ip addr del 192.0.0.2/24 dev eth5
kibbles:~# ifup eth5
kibbles:~# 

The IPv6 case is similar, except you must also delete the default route.

-- System Information:
Debian Release: jessie/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (500, 'testing'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 3.13-1-amd64 (SMP w/8 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages ifupdown depends on:
ii  adduser      3.113+nmu3
ii  initscripts  2.88dsf-51
ii  iproute2     3.12.0-2
ii  libc6        2.18-4
ii  lsb-base     4.1+Debian12

Versions of packages ifupdown recommends:
ii  isc-dhcp-client [dhcp-client]  4.2.4-7

Versions of packages ifupdown suggests:
ii  net-tools  1.60-25
ii  ppp        2.4.5+git20130610-4
pn  rdnssd     <none>

-- no debconf information


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to