Criando uma rede com lxd em xenial-backports

0

Eu quero começar a usar o contêiner lxc em uma máquina Xenial Ubuntu 16.04. Eu estou usando o lxd 2.21 do repositório xenial-backports. Funciona bem até o ponto em que desejo dar acesso à rede de contêineres.

Eu quero criar um novo dispositivo de ponte que deve NAT todas as conexões com a Internet usando o comando lxc network create lxdnatbr0 . Este comando gera a mensagem de erro

error: Failed to run: dnsmasq --strict-order --bind-interfaces --pid-file=/var/lib/lxd/networks/lxdnatbr0/dnsmasq.pid --except-interface=lo --interface=lxdnatbr0 --quiet-dhcp --quiet-dhcp6 --quiet-ra --listen-address=10.95.139.1 --dhcp-no-override --dhcp-authoritative --dhcp-leasefile=/var/lib/lxd/networks/lxdnatbr0/dnsmasq.leases --dhcp-hostsfile=/var/lib/lxd/networks/lxdnatbr0/dnsmasq.hosts --dhcp-range 10.95.139.2,10.95.139.254,1h --listen-address=fd42:2c73:3326:bbb7::1 --enable-ra --dhcp-range ::,constructor:lxdnatbr0,ra-stateless,ra-names -s lxd -S /lxd/ --conf-file=/var/lib/lxd/networks/lxdnatbr0/dnsmasq.raw -u lxd: dnsmasq: failed to create listening socket for 10.95.139.1: Address already in use

Neste ponto, tenho outros três processos dnsmasq em execução. Dois estão vindo do libvirt, um do NetworkManager:

$ ps ax|grep dnsmasq
3576 ? S 0:00 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvirt_leaseshelper 3577 ? S 0:00 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvirt_leaseshelper 5525 ? S 0:00 /usr/sbin/dnsmasq --no-resolv --keep-in-foreground --no-hosts --bind-interfaces --pid-file=/var/run/NetworkManager/dnsmasq.pid --listen-address=127.0.1.1 --cache-size=0 --conf-file=/dev/null --proxy-dnssec --enable-dbus=org.freedesktop.NetworkManager.dnsmasq --conf-dir=/etc/NetworkManager/dnsmasq.d 11318 pts/1 S+ 0:00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn dnsmasq

No começo eu assumi que era culpa do libvirt, que tinha outro processo dnsmasq em execução. Mas mesmo quando parei, outro processo do dnsmasq iniciado pelo NetworkManager permaneceu.

Alguém sabe como posso fazer isso funcionar?

    
por mat 25.01.2018 / 19:01

1 resposta

0

A mensagem de erro diz:

failed to create listening socket for 10.95.139.1: Address already in use

Quando você cria uma nova rede com lxc network create , o LXD gera um novo processo dnsmasq , um processo que se liga à nova interface e apenas isso.

É estranho reclamar que o endereço já está em uso, porque o novo dnsmasq está em uma interface independente separada. Para garantir que não haja condições de corrida, tente

lxc network delete lxdnatbr0

e, em seguida, crie-o novamente.

Se isso não funcionar, execute

ps ax | grep dnsmasq

para obter uma lista de todos os processos dnsmasq .

    
por user4124 26.01.2018 / 23:05