Я выполнил ожидаемую конфигурацию, и эта функция работала в прошлом. Изменения, которые я сделал, чтобы это работало ранее, были:

  • Раскомментирование строки LXC_DOMAIN = "lxc" в /etc /default /lxc-net
  • Добавлена строка server = /lxc /10.0.3.1 в /etc/NetworkManager/dnsmasq.d/lxc.conf

Я дополнительно добавил IP для экземпляра dnsmasq в resolv.conf на моем хост-компьютере.

Ранее это позволяло мне пинговать свои контейнеры, используя суффикс .lxc к имени контейнера (например, test-container.lxc) или просто используя само имя контейнера.

Теперь я все еще могу пропинговать свои контейнеры, просто используя имя контейнера, но версия адресации доменов .lxc, кажется, перестала работать, и я понятия не имею, почему.

Я также попытался добавить строку server =/lxc/10.0.3.1 в /etc/dnsmasq.d/lxc, так как в другом месте читал, что кто-то работает с использованием этого подхода, но мне не повезло.

Все, что я получаю, когда пытаюсь пропинговать test-container.lxc, это ошибка:

ping: неизвестный хост test-container.lxc

Кто-нибудь еще видел эту проблему и знает, почему это поведение изменилось или что я могу сделать, чтобы эта функция снова заработала?

2 ответа2

0

У меня та же проблема с работой DNS-разрешения LXC в Ubuntu 16.04 Server LTS (хост). Я следовал нескольким руководствам и добавил необходимые записи в эти файлы конфигурации, но контейнеры по-прежнему не разрешают .lxc -domain. но работало только наименование на основе IP-адреса.

Поскольку моя хост-среда является серверной средой, это может быть проблемой, связанной с брандмауэром, и DNS-трафик каким-то образом блокируется поставщиком услуг в его настройках брандмауэра или сети. Сначала проверьте настройки iptables.

Затем, чтобы разрешить эту проверку, проверьте, что содержимое /etc/resolv.conf и /etc/network/interfaces чтобы убедиться, что nameserver 127.0.0.1 является одним из серверов, разрешающих эти имена LXC/DNS, и закомментируйте любой "поиск" - записи, потому что по умолчанию некоторые провайдеры хостов серверов заменяют или добавляют Google 8.8.8.8, который явно не может разрешить локальные / хосты с запущенными DNS-именами LXC.

Чтобы добавить сервер имен по умолчанию обратно, вы можете добавить файл /etc/resolvconf/resolv.conf/tail с содержимым сервера имен 127.0.0.1 и запустить sudo resolvconf -u чтобы перестроить конфигурацию resolver, а затем снова попытаться пропинговать контейнеры: ping mycont.lxc (используйте LXC_DOMAIN из /etc/default/lxc-net в качестве суффикса для LXC-hostname).

Вышеуказанное решило проблему в моем случае.

0

Это работает 16.04:

echo 'LXC_DOMAIN="lxc"' >> /etc/default/lxc-net
echo 'server=/lxc/10.0.3.1' >> /etc/dnsmasq.d/lxc
sed -i '1s;^;nameserver 127.0.0.1\n;' /etc/resolv.conf
apt-get install -y dnsmasq
sudo service lxc-net restart

Чтобы убедиться, что /etc/resolv.conf пережил перезагрузку:

echo 'nameserver 127.0.0.1' >> /etc/resolvconf/resolv.conf.d/head
sudo resolvconf -u

Обратите внимание, что при этом запускается открытый DNS-сервер, вы должны закрыть его брандмауэром или другим способом:

echo 'interface=lo' >> /etc/dnsmasq.conf
service dnsmasq restart

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .