Как избежать конфликтов между dnsmasq и systemd-разрешенными?

Недавно я установил dnsmasq для работы в качестве DNS-сервера для своей локальной сети. dnsmasq прослушивает порт 53, который уже используется локальным узлом прослушивателя DNS из

28 голосов | спросил vic 17 PM000000100000003131 2016, 22:37:31

7 ответов


21

Как systemd 232 (выпущено в 2017 году) вы можно отредактировать /etc/systemd/resolved.conf и добавить эту строку:

DNSStubListener=no

Это приведет к отключению привязки к порту 53.

Эта опция более подробно описана в resol.conf manpage .

Вы можете найти версию systemd, с которой работает ваша система:

systemctl --version
ответил Malvineous 12 AMpWed, 12 Apr 2017 10:34:29 +030034Wednesday 2017, 10:34:29
11

Вы можете отключить systemd-resolved от загрузки при загрузке с помощью sudo systemctl disable systemd-resolved

Если вы хотите запустить оба вместе, вы можете перенаправить systemd-resolved, чтобы использовать localhost в качестве основного сервера имен. Это позволит убедиться, что все запросы направлены на dnsmasq для разрешения перед удалением внешнего DNS-сервера. Это можно сделать, добавив строку nameserver 127.0.0.1 вверху вашего /etc/resolv.conf. Это также отключит локальное кэширование systemd.

Подробнее о Arch Linux wiki . Я скопировал это оттуда, и он довольно хорошо его охватывает.

После этого, если хотите, вы можете создать отдельный файл /etc/dnsmasq-resolv.conf для восходящих серверов имен и передать его с помощью -r или --resolv-file или добавить восходящие серверы имен в файл конфигурации dnsmasq и используйте -R или --no-resolv. Таким образом, у вас есть только локальный хост в вашем /etc/resolv.conf, и все проходит через dnsmasq.

ответил Munir 18 AM000000120000002131 2016, 00:31:21
5

Судя по файлам systemd, он не предназначен для ручного отключения DNS-сервера-заглушки. Интересно, что я заметил только описанную проблему после обновления systemd от 230 до 231.

Отключение systemd-разрешено не было для меня, потому что мне нужно, чтобы он обрабатывал полученные DNS-серверы вверх по DHCP.

Мое решение делало dnsmasq stop systemd-resolved перед запуском и запуском после этого снова.

Я создал конфигурацию выпадающего меню в /etc/systemd/system/dnsmasq.service.d/resolved-fix.conf:

[Unit]
After=systemd-resolved.service

[Service]
ExecStartPre=/usr/bin/systemctl stop systemd-resolved.service
ExecStartPost=/usr/bin/systemctl start systemd-resolved.service

Это кажется довольно хакерским решением, но оно работает.

ответил freaker 21 PM00000040000004931 2016, 16:34:49
4

В systemd будет указан вариант 232, чтобы отключить прослушиватель. См. https://github.com/systemd/systemd/pull/4061 .

ответил Christoph 19 +03002016-10-19T19:30:31+03:00312016bEurope/MoscowWed, 19 Oct 2016 19:30:31 +0300 2016, 19:30:31
2

Я просто включил опцию «bind-interfaces», удалив «#» в начале строки в файле /etc/dnsmasq.conf.

Я снова смог запустить dnsmasq:

  • dnsmasq связывает порт DNS на всех интерфейсах (включая 127.0.0.1) порт 53,
  • systemd-resolv продолжает прослушивать 127.0.0. 53 : 53

В этом обсуждении было указано на это решение разрешено: добавьте параметр, чтобы отключить распознаватель заглушки

ответил tomtom 28 +03002016-10-28T12:44:24+03:00312016bEurope/MoscowFri, 28 Oct 2016 12:44:24 +0300 2016, 12:44:24
0

Я решил это так:

Добавьте или раскомментируйте следующую строку в /etc /default /dnsmasq :

IGNORE_RESOLVCONF=yes

Создайте свой собственный файл resolv (/etc/resolv.personal), чтобы определить серверы имен. Здесь вы можете использовать любой сервер имен. Я взял два из https://www.opennic.org

nameserver 5.132.191.104
nameserver 103.236.162.119

В /etc/dnsmasq.conf добавьте или раскомментируйте следующую строку:

resolv-file=/etc/resolv.personal

Затем перезапустите dnsmasq и отключите распознаватель по умолчанию: systemd-resolved.

sudo service dnsmasq restart

sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved
ответил Daniel Pernold 22 PM000000110000002731 2018, 23:36:27
0

Если вы используете настройку Ubuntu 18.04 по умолчанию, это может быть вызвано конфликтом между systemd-resolved (DNS-сервер по умолчанию) и dnsmasq. Если вы специально установили dnsmasq, потому что вы явно хотели этого, тогда один из других ответов на этот вопрос, объясняющий, как отключить systemd-resolved, вероятно, будет хорошо для вас. Если вы не указали явно установить dnsmasq, то это скорее всего на месте, потому что вы используете lxd. Возможно, это связано с тем, что вы используете lxd для управления контейнерами, но скорее всего это связано с тем, что snaps использует lxd, чтобы защитить вас, когда приложения установлены. С моей точки зрения, я хочу сохранить dnsmasq (потому что lxd хочет его), но я также хочу сохранить systemd-resolved как DNS-сервер (потому что это то, что выбрала команда Ubuntu, и я доверяю их больше, чем я).

Итак, это похоже на проблему lxd. Если да, то как я его исправил, согласно lxd- список рассылки для пользователей , это:

$ lxc network edit lxdbr0

Это отредактирует вашу конфигурацию в редакторе терминала. Он будет выглядеть примерно так:

config:
  ipv4.address: 10.216.134.1/24
  ipv4.nat: "true"
  ipv6.address: none
  ipv6.nat: "true"
name: lxdbr0
type: bridge

Добавьте к нему три строки:

config:
  ipv4.address: 10.216.134.1/24
  ipv4.nat: "true"
  ipv6.address: none
  ipv6.nat: "true"
  raw.dnsmasq: |
    auth-zone=lxd
    dns-loop-detect
name: lxdbr0
type: bridge

, и это должно вызывать dnsmasq, который выполняется lxd, чтобы обнаружить циклы DNS. Это, по крайней мере для меня, решило проблему и остановило systemd-resolved и dnsmasq, используя 100% CPU.

ответил sil 4 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 04 Sep 2018 14:25:51 +0300 2018, 14:25:51

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132