Containers assigned an SDN won't start

despens

New Member
Oct 9, 2025
10
0
1
Dear Proxmox people,

My apologies if the topic was already discussed… I'm not so vell-versed in networking questions and might not know what to search for.

I have configured an SDN, exactly as described here: https://pve.proxmox.com/wiki/Setup_Simple_Zone_With_SNAT_and_DHCP — the setup describes my desired use-case exactly.

These instructions were used to set up two PVEs in different networks, identical fresh install of version 9.1.6 on both. One is located in a basic lab network behind a consumer router. Everything works wonderfully as expected: containers assigned the self-made VNet as a bridge get internal IP addresses in the range 10.0.0.2-10.0.0.253, assigned via DHCP. The other PVE host is run in a DMZ. When I assign the VNet to a container as a bridge there, the container won't start at all. The error message is not very enlightening:

Code:
run_buffer: 571 Script exited with status 11
lxc_init: 845 Failed to run lxc.hook.pre-start for container "102"
__lxc_start: 2046 Failed to initialize container "102"
TASK ERROR: startup for container '102' failed

When assigned the standard vmbr0, the containers start just fine.

As said, the exact same config in the lab network works just fine. I'm a bit lost about what to do or where to search for more information.

The host's /etc/network/interfaces.d/sdn looks like this on both PVE hosts (public IP address replaced with 999.999.999.999):

Code:
#version:2

auto internal
iface internal
    address 10.0.0.1/24
    post-up iptables -t nat -A POSTROUTING -s '10.0.0.0/24' -o vmbr0 -j SNAT --to-source 999.999.999.999
    post-down iptables -t nat -D POSTROUTING -s '10.0.0.0/24' -o vmbr0 -j SNAT --to-source 999.999.999.999
    post-up iptables -t raw -I PREROUTING -i fwbr+ -j CT --zone 1
    post-down iptables -t raw -D PREROUTING -i fwbr+ -j CT --zone 1
    bridge_ports none
    bridge_stp off
    bridge_fd 0
    ip-forward on

Both hosts run tailscale, and logging in and accessing the web interface via the tailscale VPN service are no issue at all.

I'd be grateful for any help…
 
Hi,

can you please post the outputs of
- pveversion -v
- pct config 102
- pct start 102 -debug

This will provide more information and details about your setup.
 
Certainly! Thanks cheiss for letting me know about the -debug option!

roxmox-ve: 9.1.0 (running kernel: 6.17.13-2-pve)
pve-manager: 9.1.6 (running version: 9.1.6/71482d1833ded40a)
proxmox-kernel-helper: 9.0.4
proxmox-kernel-6.17: 6.17.13-2
proxmox-kernel-6.17.13-2-pve-signed: 6.17.13-2
proxmox-kernel-6.17.13-1-pve-signed: 6.17.13-1
proxmox-kernel-6.17.2-1-pve-signed: 6.17.2-1
ceph-fuse: 19.2.3-pve2
corosync: 3.1.10-pve1
criu: 4.1.1-1
dnsmasq: 2.91-1+deb13u1
frr-pythontools: 10.4.1-1+pve1
ifupdown2: 3.3.0-1+pmx12
intel-microcode: 3.20251111.1~deb13u1
ksm-control-daemon: 1.5-1
libjs-extjs: 7.0.0-5
libproxmox-acme-perl: 1.7.0
libproxmox-backup-qemu0: 2.0.2
libproxmox-rs-perl: 0.4.1
libpve-access-control: 9.0.5
libpve-apiclient-perl: 3.4.2
libpve-cluster-api-perl: 9.1.1
libpve-cluster-perl: 9.1.1
libpve-common-perl: 9.1.8
libpve-guest-common-perl: 6.0.2
libpve-http-server-perl: 6.0.5
libpve-network-perl: 1.2.5
libpve-rs-perl: 0.11.4
libpve-storage-perl: 9.1.1
libspice-server1: 0.15.2-1+b1
lvm2: 2.03.31-2+pmx1
lxc-pve: 6.0.5-4
lxcfs: 6.0.4-pve1
novnc-pve: 1.6.0-3
proxmox-backup-client: 4.1.5-1
proxmox-backup-file-restore: 4.1.5-1
proxmox-backup-restore-image: 1.0.0
proxmox-firewall: 1.2.1
proxmox-kernel-helper: 9.0.4
proxmox-mail-forward: 1.0.2
proxmox-mini-journalreader: 1.6
proxmox-offline-mirror-helper: 0.7.3
proxmox-widget-toolkit: 5.1.8
pve-cluster: 9.1.1
pve-container: 6.1.2
pve-docs: 9.1.2
pve-edk2-firmware: 4.2025.05-2
pve-esxi-import-tools: 1.0.1
pve-firewall: 6.0.4
pve-firmware: 3.18-1
pve-ha-manager: 5.1.1
pve-i18n: 3.6.6
pve-qemu-kvm: 10.1.2-7
pve-xtermjs: 5.5.0-3
qemu-server: 9.1.4.1
smartmontools: 7.4-pve1
spiceterm: 3.4.1
swtpm: 0.8.0+pve3
vncterm: 1.9.1
zfsutils-linux: 2.4.1-pve1

arch: amd64
cores: 1
features: nesting=1
hostname: nettest-3
memory: 512
net0: name=eth0,bridge=internal,firewall=1,hwaddr=BC:24:11:87:49:6E,ip=dhcp,ip6=dhcp,type=veth
ostype: debian
rootfs: stor1:subvol-102-disk-0,size=8G
swap: 512
unprivileged: 1

run_buffer: 571 Script exited with status 11
lxc_init: 845 Failed to run lxc.hook.pre-start for container "102"
__lxc_start: 2046 Failed to initialize container "102"
0 hostid 100000 range 65536
INFO lsm - ../src/lxc/lsm/lsm.c:lsm_init_static:38 - Initialized LSM security driver AppArmor
INFO utils - ../src/lxc/utils.c:run_script_argv:587 - Executing script "/usr/share/lxc/hooks/lxc-pve-prestart-hook" for container "102", config section "lxc"
DEBUG utils - ../src/lxc/utils.c:run_buffer:560 - Script exec /usr/share/lxc/hooks/lxc-pve-prestart-hook 102 lxc pre-start produced output: org.freedesktop.DBus.Error.ServiceUnknown: The name uk.org.thekelleys.dnsmasq.internal was not provided by any .service files

ERROR utils - ../src/lxc/utils.c:run_buffer:571 - Script exited with status 11
ERROR start - ../src/lxc/start.c:lxc_init:845 - Failed to run lxc.hook.pre-start for container "102"
ERROR start - ../src/lxc/start.c:__lxc_start:2046 - Failed to initialize container "102"
INFO utils - ../src/lxc/utils.c:run_script_argv:587 - Executing script "/usr/share/lxcfs/lxc.reboot.hook" for container "102", config section "lxc"
startup for container '102' failed

It looks like dnsmasq is not active in the way pve expects it. I did follow the manual at the wiki and pve-docs which both suggest to

Bash:
apt update
apt install dnsmasq
# disable default instance
systemctl disable --now dnsmasq

Since dnsmasq is not supposed to run with systemd, how can I check if it is available?
 
Did you run the dnsmasq commands on both of your servers?
Because common issues are:
  • dnsmasq isn't deployed on both of the nodes
  • default dnsmasq instance still running
  • DHCP-Range not configured for the subnet (configurable at SDN => VNets => <your VNet> => <Subnet>)
The systemctl command for the dnsmasq of a zone would be systemctl status dnsmasq@internal(internal being the name of the zone). But this won't provide any useful output, if the dnsmasq isn't deployed for that zone.

If you would like to share the output of command cat /etc/pve/sdn/{zones,vnets,subnets}.cfg, it would be quick to rule out a misconfiguration on SDN level. Just to be on the safe side: did you apply the final SDN configuration?