From: Gabriel Goller <g.goller@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: [PATCH container] lxc: debian: avoid 'inet6 auto' with debian's ifupdown2
Date: Fri, 11 Sep 2026 11:56:21 +0200 [thread overview]
Message-ID: <20260911095623.429947-1-g.goller@proxmox.com> (raw)
Debian's ifupdown2 (3.0.0-1.3 in bookworm and trixie) does not support
SLAAC and errors on the 'inet6 auto' stanza (Our ifupdown2 version has
SLAAC support though).
Fall back to 'manual' if the container has an ifupdown2 version without
the 'auto' addon. SLAAC still works there, because the kernel manages
everything on its own with the default accept_ra and autoconf sysctls.
This is the same workaround we already use for Alpine, whose busybox
ifupdown has no 'auto' method either.
Reported-by: https://forum.proxmox.com/threads/debian-13-lxc-template-ipv4-dhcp-ipv6-slaac-launches-dhcpv6-and-breaks-backups.186269/
Signed-off-by: Gabriel Goller <g.goller@proxmox.com>
---
src/PVE/LXC/Setup/Debian.pm | 24 +++++++++++++++++++++++-
1 file changed, 23 insertions(+), 1 deletion(-)
diff --git a/src/PVE/LXC/Setup/Debian.pm b/src/PVE/LXC/Setup/Debian.pm
index 837397bb3ecd..eafca59cfefe 100644
--- a/src/PVE/LXC/Setup/Debian.pm
+++ b/src/PVE/LXC/Setup/Debian.pm
@@ -172,6 +172,21 @@ sub snakeoil_fixup {
}
}
+=head3 ifupdown2_has_slaac($self)
+
+Checks if the ifupdown2 installation has SLAAC support. Debian's version of
+ifupdown2 currently doesn't, our version does.
+
+=cut
+
+sub ifupdown2_has_slaac {
+ my ($self) = @_;
+
+ my $addon_dir = '/usr/share/ifupdown2/addons';
+
+ return $self->ct_is_directory($addon_dir) && $self->ct_file_exists("$addon_dir/auto.py");
+}
+
sub remove_gateway_scripts {
my ($attr) = @_;
my $length = scalar(@$attr);
@@ -300,6 +315,7 @@ sub setup_network {
my $done_v6_hash = {};
my ($os, $version) = ($conf->{ostype}, $self->{version});
+ my $slaac = ifupdown2_has_slaac($self);
my $print_section = sub {
return if !$section;
@@ -348,7 +364,13 @@ sub setup_network {
if (!defined($net->{address6})) {
# no address => no iface line
} elsif ($net->{address6} =~ /^(auto|dhcp|manual)$/) {
- $interfaces .= "iface $ifname inet6 $1\n\n";
+ my $method = $1;
+ # the kernel does SLAAC on its own with the default sysctls, so
+ # 'manual' is the closest we can get without a working 'auto'
+ if ($method eq 'auto' && !$slaac) {
+ $method = 'manual';
+ }
+ $interfaces .= "iface $ifname inet6 $method\n\n";
} else {
$interfaces .= "iface $ifname inet6 static\n";
if (
--
2.47.3
next reply other threads:[~2026-09-11 9:56 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-11 9:56 Gabriel Goller [this message]
2026-09-11 11:13 ` [PATCH container] lxc: debian: avoid 'inet6 auto' with debian's ifupdown2 Hannes Laimer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260911095623.429947-1-g.goller@proxmox.com \
--to=g.goller@proxmox.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.