Configure o dnsmasq para passar o domínio de busca para o LXC guest? (Ubuntu 16.04)

1

Nossa rede depende de tags DHCP para rotear clientes para os hosts upstream corretos sem precisar conhecer o FQDN desses hosts. Usamos dnsmasq para definir tags para clientes por endereço MAC e, em seguida, enviamos diferentes domínios de pesquisa para os clientes com base na tag. Por exemplo, temos essas duas linhas em dnsmasq.conf :

dhcp-option=tag:foo,option:domain-search,foo.company.net
dhcp-host=00:11:22:33:44:55,foo-client,set:foo

Aqui, quando foo-client tentar acessar qualquer host não qualificado, ele tentará ver <unqualified-hostname>.foo.company.net .

Algumas das máquinas clientes também estão executando serviços dentro de um contêiner LXC. O contêiner obtém suas informações de rede atribuídas por uma instância local de dnsmasq em execução no host LXC, que é o método padrão para DNS / DHCP de convidados LXC. O convidado do LXC obtém um endereço IP em uma rede NAT local.

O problema vem do nosso esquema de marcação. Os convidados do LXC não recebem o domínio de pesquisa porque não estão recebendo o DCHP do nosso servidor DHCP principal em toda a rede. Os convidados do LXC podem fazer ping de endereços IP na rede mais ampla, mas a resolução de DNS com o domínio de pesquisa falha. Se eu definir manualmente o domínio de pesquisa correto, a resolução funcionará conforme o esperado.

Existe uma maneira de passar pelo domínio de pesquisa do host para o convidado?

Note que NÃO estamos executando lxd .

    
por sagargp 11.01.2018 / 19:40

1 resposta

0

Então, não encontrei uma solução exata para isso, mas encontrei uma solução alternativa. Basicamente, o LXC pode executar um script no convidado antes de colocar a rede em funcionamento. Esta opção de configuração é chamada lxc.network.script.up . Eu usei esse recurso para copiar informações de DNS do host:

#!/bin/bash

CONTAINER=$1
SECTION=$2
OPERATION=$3
NAMESERVER=$(grep nameserver /etc/resolv.conf  | sed 's/^nameserver //g')
SEARCHDOMAIN=$(grep search /etc/resolv.conf  | sed 's/^search //g')

cat > /var/lib/lxc/$CONTAINER/rootfs/etc/network/interfaces <<EOF

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual
dns-search $SEARCHDOMAIN
dns-nameservers $NAMESERVER
EOF

Eu coloquei este script em /var/lib/lxc/guest/setup-dns.sh e adicionei a seguinte linha a /var/lib/lxc/guest/config :

lxc.network.script.up = /var/lib/lxc/guest/setup-dns.sh

Depois de seguir essas etapas, o convidado aparece e as opções de DNS e de caminho de pesquisa estão definidas corretamente.

    
por 22.01.2018 / 22:10