Failed pre-start check for device "eth0": Network "lxdbr0" unavailable on this server

Hi, I’m using lxd in Arch Linux in wsl. I can start the container alpine/3.24 and access Internet in the container shell, until today, lxc start mycontainer failes with Failed pre-start check for device "eth0": Network "lxdbr0" unavailable on this server

Content of /var/log/lxd/lxd.log is

time=“2026-09-04T09:39:33+08:00” level=warning msg=“Dqlite last entry” index=0 term=0
time=“2026-09-04T09:41:13+08:00” level=warning msg=“AppArmor support has been disabled because of lack of kernel support”
time=“2026-09-04T09:41:13+08:00” level=warning msg=" - AppArmor support has been disabled, Disabled because of lack of kernel support"
time=“2026-09-04T09:41:13+08:00” level=warning msg=" - Could not find the CGroup hugetlb controller, hugepage limits will be ignored"
time=“2026-09-04T09:41:15+08:00” level=error msg=“Failed initializing network” err=“Failed starting network: The DNS and DHCP service exited prematurely: exit status 2 (“dnsmasq: failed to bind DHCP server socket: Address already in use”)” network=lxdbr0 project=default
time=“2026-09-04T09:41:20+08:00” level=error msg=“Failed initializing network” err=“Failed starting network: The DNS and DHCP service exited prematurely: exit status 2 (“dnsmasq: failed to bind DHCP server socket: Address already in use”)” network=lxdbr0 project=default

The error shows dnsmasq failed to bind DHCP server socket because Address already in use.

netstat -tulpn | grep -E ':53 |:67 ' shows

tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      84/systemd-resolved
tcp        0      0 10.255.255.254:53       0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.54:53           0.0.0.0:*               LISTEN      84/systemd-resolved
udp        0      0 127.0.0.54:53           0.0.0.0:*                           84/systemd-resolved
udp        0      0 127.0.0.53:53           0.0.0.0:*                           84/systemd-resolved
udp        0      0 10.255.255.254:53       0.0.0.0:*                           -

I assume these DNS servers are launched by the system and would like to keep them.

lxc network list shows

+-----------+----------+---------+----------------+---------------------------+-------------+---------+-------------+
|   NAME    |   TYPE   | MANAGED |      IPV4      |           IPV6            | DESCRIPTION | USED BY |    STATE    |
+-----------+----------+---------+----------------+---------------------------+-------------+---------+-------------+
| eth0      | physical | NO      |                |                           |             | 0       |             |
+-----------+----------+---------+----------------+---------------------------+-------------+---------+-------------+
| eth1      | physical | NO      |                |                           |             | 0       |             |
+-----------+----------+---------+----------------+---------------------------+-------------+---------+-------------+
| eth2      | physical | NO      |                |                           |             | 0       |             |
+-----------+----------+---------+----------------+---------------------------+-------------+---------+-------------+
| eth3      | physical | NO      |                |                           |             | 0       |             |
+-----------+----------+---------+----------------+---------------------------+-------------+---------+-------------+
| loopback0 | physical | NO      |                |                           |             | 0       |             |
+-----------+----------+---------+----------------+---------------------------+-------------+---------+-------------+
| lxdbr0    | bridge   | YES     | 10.85.190.1/24 | fd42:5ee6:eec9:ab79::1/64 |             | 2       | UNAVAILABLE |
+-----------+----------+---------+----------------+---------------------------+-------------+---------+-------------+

If relevant, ifconfig shows 3 interfaces: eth1, lo, loopback0

To fix the problem, I’m thinking about disabling dnsmasq’s DNS server. I tried lxc network set lxdbr0 raw.dnsmasq="port=0" but it failed with Error: The DNS and DHCP service exited prematurely: exit status 2 ("dnsmasq: failed to bind DHCP server socket: Address already in use")

How to fix the problem? Thanks very much!

This forum no longer provides support for lxd - that’s now Canonical’s project with their own support forum.

However, it’s straightforward to migrate your system from lxd to incus, and then you can get support here.

Thanks, I have moved to incus. Weird thing is when I decided to uninstall lxd and tried starting it the last time, lxc start mycontainer succeeded.

After moving to incus, the same problem happens again. At first incus launch images:alpine/3.24 mycontainer succeds and I can run commands in the container’s shell. The next day incus start mycontainer fails with Error: Failed pre-start check for device "eth0": Network "incusbr0" unavailable on this server.

/var/log/incus/incusd.log has:

time=“2026-09-17T21:06:08+08:00” level=warning msg=“AppArmor support has been disabled because of lack of kernel support”
time=“2026-09-17T21:06:09+08:00” level=warning msg=" - AppArmor support has been disabled, Disabled because of lack of kernel support"
time=“2026-09-17T21:06:09+08:00” level=error msg=“Failed initializing network” err=“Failed starting: The DNS and DHCP service exited prematurely: exit status 2 (“dnsmasq: failed to bind DHCP server socket: Address already in use”)” network=incusbr0 project=default
time=“2026-09-17T21:07:10+08:00” level=error msg=“Failed initializing network” err=“Failed starting: The DNS and DHCP service exited prematurely: exit status 2 (“dnsmasq: failed to bind DHCP server socket: Address already in use”)” network=incusbr0 project=default

/var/log/incus/dnsmasq.incusbr0.log has:

dnsmasq: failed to bind DHCP server socket: Address already in use

incus network list shows:

┌───────────┬──────────┬─────────┬────────────────┬───────────────────────────┬─────────────┬─────────┬─────────────┐
│   NAME    │   TYPE   │ MANAGED │      IPV4      │           IPV6            │ DESCRIPTION │ USED BY │    STATE    │
├───────────┼──────────┼─────────┼────────────────┼───────────────────────────┼─────────────┼─────────┼─────────────┤
│ eth0      │ physical │ NO      │                │                           │             │ 0       │             │
├───────────┼──────────┼─────────┼────────────────┼───────────────────────────┼─────────────┼─────────┼─────────────┤
│ eth1      │ physical │ NO      │                │                           │             │ 0       │             │
├───────────┼──────────┼─────────┼────────────────┼───────────────────────────┼─────────────┼─────────┼─────────────┤
│ eth2      │ physical │ NO      │                │                           │             │ 0       │             │
├───────────┼──────────┼─────────┼────────────────┼───────────────────────────┼─────────────┼─────────┼─────────────┤
│ eth3      │ physical │ NO      │                │                           │             │ 0       │             │
├───────────┼──────────┼─────────┼────────────────┼───────────────────────────┼─────────────┼─────────┼─────────────┤
│ incusbr0  │ bridge   │ YES     │ 10.105.72.1/24 │ fd42:a7a4:ef70:ad1d::1/64 │             │ 3       │ UNAVAILABLE │
├───────────┼──────────┼─────────┼────────────────┼───────────────────────────┼─────────────┼─────────┼─────────────┤
│ lo        │ loopback │ NO      │                │                           │             │ 0       │             │
├───────────┼──────────┼─────────┼────────────────┼───────────────────────────┼─────────────┼─────────┼─────────────┤
│ loopback0 │ physical │ NO      │                │                           │             │ 0       │             │
└───────────┴──────────┴─────────┴────────────────┴───────────────────────────┴─────────────┴─────────┴─────────────┘

Seems like maybe lxd is still there. Did you install it from a snap?

What does “which lxc” show? And “lxc version”?

Is it possible that you aliased lxc to incus?

So you have a port conflict on either the DHCP or DNS port.
Can you show a full netstat -lnp on the system?

Chances are you have a DNS server of some kind binding tcp/53 or udp/53 on all addresses, if Incus starts before that server, things work, if it starts after, it fails to bring up dnsmasq which causes the failure you’re seeing.

For newer systems (which don’t have the legacy ‘netstat’ installed by default), you can do:

ss -lnp sport 53

@candlerb

Thanks for the reply. I installed lxd using pacman so I uninstalled it by pacman -R lxd. There is no lxc and lxd.service left.

Result of netstat -lnp is:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.54:53 0.0.0.0:* LISTEN 84/systemd-resolved
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 84/systemd-resolved
tcp 0 0 10.255.255.254:53 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:5355 0.0.0.0:* LISTEN 84/systemd-resolved
tcp6 0 0 :::5355 :::* LISTEN 84/systemd-resolved
udp 0 0 0.0.0.0:5353 0.0.0.0:* 84/systemd-resolved
udp 0 0 0.0.0.0:5355 0.0.0.0:* 84/systemd-resolved
udp 0 0 127.0.0.54:53 0.0.0.0:* 84/systemd-resolved
udp 0 0 127.0.0.53:53 0.0.0.0:* 84/systemd-resolved
udp 0 0 10.255.255.254:53 0.0.0.0:* -
udp 0 0 127.0.0.1:323 0.0.0.0:* -
udp6 0 0 :::5353 :::* 84/systemd-resolved
udp6 0 0 :::5355 :::* 84/systemd-resolved
udp6 0 0 ::1:323 :::* -

I’ve tried disabling systemd-resolved and reboot. There are no more systemd-resolved lines in netstat -lnp result. But incus start mycontainer still failes with the same error

dnsmasq says “failed to bind DHCP server socket: Address already in use” which implies something listening on port 67. Here’s my system, with incus’ dnsmasq successfully running on the incusbr0 bridge:

# ss -nlp sport 67
Netid          State           Recv-Q           Send-Q                        Local Address:Port                     Peer Address:Port          Process
udp            UNCONN          0                0                          0.0.0.0%incusbr0:67                            0.0.0.0:*              users:(("dnsmasq",pid=2843694,fd=4))

I am still concerned about you saying that “lxc start mycontainer” works. As I asked before, what do the following two commands show?

which lxc
lxc version

Result of which lxc:which: no lxc in (PATH)

Result of lxc version: -bash: lxc: command not found