Назад | Перейти на главную страницу

Настроить dnsmasq для сквозной пересылки домена поиска гостю LXC? (Ubuntu 16.04)

Наша сеть полагается на теги DHCP для маршрутизации клиентов на правильные вышестоящие хосты без необходимости знать FQDN этих хостов. Мы используем dnsmasq чтобы установить теги для клиентов по MAC-адресу, а затем мы проталкиваем клиентам разные поисковые домены на основе тега. Например, у нас есть эти две строки в dnsmasq.conf:

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

Здесь, когда foo-client пытается получить доступ к любым неквалифицированным хостам, он попытается посмотреть на <unqualified-hostname>.foo.company.net.

На некоторых клиентских машинах также выполняются службы внутри контейнера LXC. Контейнер получает свою сетевую информацию, назначенную локальным экземпляром dnsmasq выполняется на хосте LXC, который является методом по умолчанию для DNS / DHCP гостевых систем LXC. Затем гость LXC получает IP-адрес в локальной сети NAT.

Проблема заключается в нашей схеме тегов. Гости LXC не получают домен поиска, потому что они не получают DCHP от нашего основного общесетевого DHCP-сервера. Гости LXC могут пинговать IP-адреса в более широкой сети, но разрешение DNS с поисковым доменом не удается. Если я вручную установил правильный домен поиска, разрешение будет работать должным образом.

Есть ли способ пройти через этот поисковый домен от хоста к гостю?

Обратите внимание, мы НЕ запускаем lxd.

Поэтому я не нашел точного решения для этого, но нашел обходной путь. Обычно LXC может запустить сценарий на гостевой машине перед подключением сети. Этот вариант конфигурации называется lxc.network.script.up. Я использовал эту функцию для копирования информации DNS с хоста:

#!/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

Я поместил этот скрипт в /var/lib/lxc/guest/setup-dns.sh и добавил следующую строку в /var/lib/lxc/guest/config:

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

После выполнения этих шагов появляется гость и правильно настроены параметры DNS и пути поиска.