[pve-devel] [PATCH container v2 06/11] configure static IP in LXC config for custom entrypoint

Wolfgang Bumiller w.bumiller at proxmox.com
Wed Jun 25 10:26:18 CEST 2025


On Wed, Jun 11, 2025 at 04:48:58PM +0200, Filip Schauer wrote:
> When a container uses the default `/sbin/init` entrypoint, network

I'm not a fan of this logic, also because it does not support 'dhcp' (in
which case it should IMO fail instead).
But maybe we can figure out an IP if SDN is in use to support the dhcp
case if there are static/permanent leases? (@Stefan?)

I think this should be handled with a separate key in the containers
network configuration. Maybe a "setup" property which defaults to
"container" and can be set to "host" (not sure if we ever need more,
if we know we don't, it could be a boolean...)

> interface configuration is usually managed by processes within the
> container. However, containers with a different entrypoint might not
> have any internal network management process. Consequently, IP addresses
> might not be assigned.
> 
> This change ensures that a static IP address is explicitly set in the
> LXC config for the container.
> 
> Signed-off-by: Filip Schauer <f.schauer at proxmox.com>
> ---
>  src/PVE/LXC.pm | 12 ++++++++++++
>  1 file changed, 12 insertions(+)
> 
> diff --git a/src/PVE/LXC.pm b/src/PVE/LXC.pm
> index b2be27e..0131ac3 100644
> --- a/src/PVE/LXC.pm
> +++ b/src/PVE/LXC.pm
> @@ -818,6 +818,18 @@ sub update_lxc_config {
>  	if ($lxc_major >= 4) {
>  	    $raw .= "lxc.net.$ind.script.up = /usr/share/lxc/lxcnetaddbr\n";
>  	}
> +
> +	if (!defined($d->{link_down}) || $d->{link_down} != 1
> +	    && PVE::LXC::Config->get_entrypoint($conf) ne "/sbin/init"
> +	) {
> +	    $raw .= "lxc.net.$ind.ipv4.address = $d->{ip}\n"
> +		if defined($d->{ip}) && $d->{ip} !~ /^(dhcp|manual)$/;
> +	    $raw .= "lxc.net.$ind.ipv4.gateway = $d->{gw}\n" if defined($d->{gw});
> +	    $raw .= "lxc.net.$ind.ipv6.address = $d->{ip6}\n"
> +		if defined($d->{ip6}) && $d->{ip6} !~ /^(auto|dhcp|manual)$/;
> +	    $raw .= "lxc.net.$ind.ipv6.gateway = $d->{gw6}\n" if defined($d->{gw6});
> +	    $raw .= "lxc.net.$ind.flags = up\n";
> +	}
>      }
>  
>      my $had_cpuset = 0;
> -- 
> 2.39.5




More information about the pve-devel mailing list