Package: ifupdown
Version: 0.8.41
Severity: normal
Tags: ipv6

Dear Maintainer,

I was trying to use dhcpcd(-base) as replacement for the deprecated ISC
dhclient DHCP client on interface eth0 in a network which uses DHCPv4
and stateful DHCPv6. The result was a failed interface configuration.

Interface eth0 is configured as follows (in /etc/network/interfaces):

auto eth0
iface eth0 inet dhcp
iface eth0 inet6 dhcp

* What exactly did you do (or not do) that was effective (or
  ineffective)?

Remove package isc-dhcp-client, install dhcpcd-base and reboot (or just
do a manual ifdown/ifup for eth0).

* What was the outcome of this action?

- eth0 reported as down
- ifup/dhcpcd errors in /var/log/syslog:

  2024-02-29T13:39:41.353735+01:00 proxy ifup[248]: No DHCPv6 client software 
found!
  2024-02-29T13:39:41.354868+01:00 proxy ifup[71]: ifup: failed to bring up eth0
  2024-02-29T13:39:41.371856+01:00 proxy dhcpcd[150]: received SIGTERM, stopping
  2024-02-29T13:39:41.372135+01:00 proxy dhcpcd[150]: eth0: removing interface

- no IPv4 address assigned to eth0
- IPv6 addresses assigned to eth0 (using autoconf and DHCPv6, already
  configured by dhcpcd when started in inet mode)
- dhcpcd DHCP client not running

* What outcome did you expect instead?

- interface status of eth0: up
- running dhcpcd DHCP client on eth0
- valid IPv4 address on eth0
- valid IPv6 address obtained via stateful DHCPv6 (that actually works,
  but the address does not get renewed)

* Full set of messages from ifup/dhcpcd in /var/log/syslog:

2024-02-29T13:39:36.367994+01:00 proxy ifup[147]: dhcpcd-10.0.6 starting
2024-02-29T13:39:36.368548+01:00 proxy ifup[147]: sandbox unavailable: seccomp
2024-02-29T13:39:36.368804+01:00 proxy dhcpcd[147]: dhcpcd-10.0.6 starting
2024-02-29T13:39:36.371607+01:00 proxy ifup[150]: DUID 
00:01:00:01:2c:4f:27:17:42:9d:df:42:75:ca
2024-02-29T13:39:36.371853+01:00 proxy dhcpcd[150]: DUID 
00:01:00:01:2c:4f:27:17:42:9d:df:42:75:ca
2024-02-29T13:39:36.372491+01:00 proxy ifup[150]: sandbox unavailable: seccomp
2024-02-29T13:39:36.372673+01:00 proxy dhcpcd[150]: sandbox unavailable: seccomp
2024-02-29T13:39:36.395973+01:00 proxy ifup[150]: eth0: IAID df:42:75:ca
2024-02-29T13:39:36.396292+01:00 proxy dhcpcd[150]: eth0: IAID df:42:75:ca
2024-02-29T13:39:36.448694+01:00 proxy ifup[150]: eth0: soliciting a DHCP lease
2024-02-29T13:39:36.448976+01:00 proxy dhcpcd[150]: eth0: soliciting a DHCP 
lease
2024-02-29T13:39:36.488032+01:00 proxy ifup[150]: eth0: offered 172.30.42.6 
from 172.30.42.1
2024-02-29T13:39:36.488311+01:00 proxy dhcpcd[150]: eth0: offered 172.30.42.6 
from 172.30.42.1
2024-02-29T13:39:36.492391+01:00 proxy ifup[150]: eth0: probing address 
172.30.42.6/24
2024-02-29T13:39:36.492682+01:00 proxy dhcpcd[150]: eth0: probing address 
172.30.42.6/24
2024-02-29T13:39:37.353015+01:00 proxy ifup[150]: eth0: soliciting an IPv6 
router
2024-02-29T13:39:37.353319+01:00 proxy dhcpcd[150]: eth0: soliciting an IPv6 
router
2024-02-29T13:39:37.356886+01:00 proxy ifup[150]: eth0: Router Advertisement 
from fe80::da58:d7ff:fe00:5b74
2024-02-29T13:39:37.357083+01:00 proxy dhcpcd[150]: eth0: Router Advertisement 
from fe80::da58:d7ff:fe00:5b74
2024-02-29T13:39:37.357545+01:00 proxy ifup[150]: eth0: adding address 
2a02:810d:1680:1f42:ccf0:6a0:a412:49fd/64
2024-02-29T13:39:37.357675+01:00 proxy dhcpcd[150]: eth0: adding address 
2a02:810d:1680:1f42:ccf0:6a0:a412:49fd/6
4
2024-02-29T13:39:37.358653+01:00 proxy ifup[150]: eth0: adding route to 
2a02:810d:1680:1f42::/64
2024-02-29T13:39:37.358802+01:00 proxy dhcpcd[150]: eth0: adding route to 
2a02:810d:1680:1f42::/64
2024-02-29T13:39:37.360136+01:00 proxy ifup[150]: eth0: adding default route 
via fe80::da58:d7ff:fe00:5b74
2024-02-29T13:39:37.360305+01:00 proxy dhcpcd[150]: eth0: adding default route 
via fe80::da58:d7ff:fe00:5b74
2024-02-29T13:39:37.362546+01:00 proxy ifup[150]: eth0: soliciting a DHCPv6 
lease
2024-02-29T13:39:37.362795+01:00 proxy dhcpcd[150]: eth0: soliciting a DHCPv6 
lease
2024-02-29T13:39:38.366362+01:00 proxy ifup[150]: eth0: REPLY6 received from 
fe80::da58:d7ff:fe00:5b74
2024-02-29T13:39:38.366656+01:00 proxy ifup[150]: eth0: adding address 
2a02:810d:1680:1f42::6/128
2024-02-29T13:39:38.366808+01:00 proxy ifup[150]: eth0: renew in 16541, rebind 
in 26466, expire in 43200 seconds
2024-02-29T13:39:38.366969+01:00 proxy dhcpcd[150]: eth0: REPLY6 received from 
fe80::da58:d7ff:fe00:5b74
2024-02-29T13:39:38.367152+01:00 proxy dhcpcd[150]: eth0: adding address 
2a02:810d:1680:1f42::6/128
2024-02-29T13:39:38.367296+01:00 proxy dhcpcd[150]: eth0: renew in 16541, 
rebind in 26466, expire in 43200 seconds
2024-02-29T13:39:41.353735+01:00 proxy ifup[248]: No DHCPv6 client software 
found!
2024-02-29T13:39:41.354868+01:00 proxy ifup[71]: ifup: failed to bring up eth0
2024-02-29T13:39:41.371856+01:00 proxy dhcpcd[150]: received SIGTERM, stopping
2024-02-29T13:39:41.372135+01:00 proxy dhcpcd[150]: eth0: removing interface

* Workaround

The attached patch (for current
https://salsa.debian.org/debian/ifupdown.git) avoids the issue and
results in a properly configured eth0 interface. The patch just avoids
the DHCPv6 related error(s) with installed dhcpcd (from the dhcpcd-base
package). This works because with dhcpcd as configured by ifupdown in
inet/IPv4 mode already configures both inet/IPv4 and inet6/IPv6 domains
(which might be another bug).

-- Package-specific info:
--- /etc/network/interfaces:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp
iface eth0 inet6 dhcp

--- /etc/network/interfaces.d/*:
cat: '/etc/network/interfaces.d/*': No such file or directory

--- up and down scripts installed:
/etc/network/if-down.d:
total 12
-rwxr-xr-x 1 root root 802 Jan 24  2023 postfix
-rwxr-xr-x 1 root root 323 Jan  5  2022 resolvconf
-rwxr-xr-x 1 root root 759 Sep 27  2022 resolved

/etc/network/if-post-down.d:
total 0

/etc/network/if-pre-up.d:
total 0

/etc/network/if-up.d:
total 16
-rwxr-xr-x 1 root root  965 Jan  5  2022 000resolvconf
-rwxr-xr-x 1 root root 1185 Jan 24  2023 postfix
-rwxr-xr-x 1 root root 4663 Sep 27  2022 resolved


-- System Information:
Debian Release: trixie/sid
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: armhf (armv7l)

Kernel: Linux 5.15.147 (SMP w/2 CPU threads)
Locale: LANG=C.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages ifupdown depends on:
ii  adduser   3.137
ii  iproute2  6.7.0-2
ii  libc6     2.37-15

Versions of packages ifupdown recommends:
ii  dhcpcd-base [dhcp-client]      1:10.0.6-1

Versions of packages ifupdown suggests:
pn  ppp     <none>
pn  rdnssd  <none>

-- Configuration Files:
/etc/default/networking changed:


-- no debconf information
diff --git a/inet6.defn b/inet6.defn
index d62123b..f820cb6 100644
--- a/inet6.defn
+++ b/inet6.defn
@@ -33,12 +33,16 @@ method auto
         if (var_true("dhcp", ifd) && execable("dhclient") && 
var_true("request_prefix", ifd))
     dhclient -6 -1 -v -S -pf /run/dhclient6.%iface%.pid -lf 
/var/lib/dhcp/dhclient6.%iface%.leases -I -df 
/var/lib/dhcp/dhclient.%iface%.leases %iface% \
         elsif (var_true("dhcp", ifd) && execable("dhclient"))
+    echo 'up/auto (dhcpcd) ...' \
+        elsif (var_true("dhcp", ifd) && execable("dhcpcd"))
     echo 'No DHCPv6 client software found!' >&2; false \
         elsif (var_true("dhcp", ifd))
 
   down
     dhclient -6 -v -r -pf /run/dhclient6.%iface%.pid -lf 
/var/lib/dhcp/dhclient6.%iface%.leases -I -df 
/var/lib/dhcp/dhclient.%iface%.leases %iface% \
         if (var_true("dhcp", ifd) && execable("dhclient"))
+    echo 'down/auto (dhcpcd) ...' \
+        elsif (var_true("dhcp", ifd) && execable("dhcpcd"))
     echo 'No DHCPv6 client software found!' >&2; false \
         elsif (var_true("dhcp", ifd))
     ip -6 addr flush dev %iface% scope global
@@ -162,12 +166,16 @@ method dhcp
         if (execable("dhclient") && var_true("request_prefix", ifd))
     dhclient -6 -v -pf /run/dhclient6.%iface%.pid -lf 
/var/lib/dhcp/dhclient6.%iface%.leases -I -df 
/var/lib/dhcp/dhclient.%iface%.leases %iface% \
         elsif (execable("dhclient"))
+    echo 'up/dhcp (dhcpcd) ...' \
+        elsif (execable("dhcpcd"))
     echo 'No DHCPv6 client software found!' >&2; false \
         elsif (1)
 
   down
     dhclient -6 -v -r -pf /run/dhclient6.%iface%.pid -lf 
/var/lib/dhcp/dhclient6.%iface%.leases -I -df 
/var/lib/dhcp/dhclient.%iface%.leases %iface% \
         if (execable("dhclient"))
+    echo 'down/dhcp (dhcpcd) ...' \
+        elsif (execable("dhcpcd"))
     echo 'No DHCPv6 client software found!' >&2; false \
         elsif (1)
 

Reply via email to