If not explicitly stated, the virsh binary uses the 'qemu:///session' URI (at least under debian).
Portanto, não apenas virsh net-list , mas praticamente qualquer comando, incluindo virsh list , se comportou de maneira diferente ao executar com sudo . Em outras palavras, virsh net-list estava usando o escopo do usuário em vez do global.
Isso faz sentido; tentar criar a conexão padrão e, em seguida, iniciá-la levou ao erro "A rede já está em uso pela interface virbr0" - sem saber, eu estava iniciando uma conexão segundo chamada "padrão", enquanto uma já estava correndo.
A solução é direta:
virsh --connect qemu:///system net-list
faz o que eu esperava, enquanto:
virsh net-list
não.
Por que a máquina Ubuntu não está tendo o problema?
De acordo com a documentação :
If virsh finds the environment variable
VIRSH_DEFAULT_CONNECT_URIset, it will try this URI by default. Use of this environment variable is, however, deprecated now that libvirt supportsLIBVIRT_DEFAULT_URIitself.
Aparentemente, na máquina Ubuntu, a segunda variável foi definida:
ubuntu:~$ echo $VIRSH_DEFAULT_CONNECT_URI ubuntu:~$ echo $LIBVIRT_DEFAULT_URI qemu:///system
Na máquina Debian, por outro lado, nenhuma dessas variáveis está definida:
debian:~$ echo $VIRSH_DEFAULT_CONNECT_URI debian:~$ echo $LIBVIRT_DEFAULT_URI
A configuração de uma dessas variáveis para qemu:///system provavelmente funcionaria, mas, bem, é mais fácil especificar a string de conexão diretamente no comando virsh (pelo menos ao escrever um script).