No, its because something is responding to an ARP solicitation for that address on the parent network (which suggests there is another device on the network that has that IP).
You can set ipv4.neighbor_probe=false on the routed NIC, see:
However if there is another device also claiming that IP, then when LXD adds a proxy ARP entry onto the parent it may cause connectivity problems for that device and your container as they will be competing over that address.
devices:
eth0:
ipv4.neighbor_probe: “false”
nictype: routed
parent: enp34s0
type: nic
lxc start c1
Error: Failed to start device “eth0”: IP address “1.2.3.177” in use on parent network “enp34s0”
$ ip a
2: enp34s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 2c:f0:5d:a6:99:8a brd ff:ff:ff:ff:ff:ff
inet 1.2.3.174/24 brd 1.2.3.255 scope global enp34s0
Would you have any other suggestions on how to get routed working?
Ah OK, I think I know what is happening, but to confirm can you show lxc config show c1 (without the --expanded bit).
I expect thats happened is that you’ve defined the routed eth0 on the profile with ipv4.neighbor_probe: “false” but your actual container has its own routed eth0 with different settings (it needs to because it needs to have ipv4.address: 1.2.3.177 set).
So you need to apply the ipv4.neighbor_probe directly to the instance using:
lxc config device set c1 eth0 ipv4.neighbor_probe=false
Effectively the eth0 in the profile isn’t being used and could be removed entirely.