- Вопрос или проблема
- Ответ или решение
- Отключение systemd-resolved для освобождения порта 53 и использование DNS-серверов, предоставленных DHCP
- Шаг 1: Отключение systemd-resolved
- Шаг 2: Проверка текущего состояния DNS
- Шаг 3: Изменение /etc/resolv.conf
- Шаг 4: Автоматизация настройки DNS
- Шаг 5: Перезагрузка сети
- Заключение
Вопрос или проблема
Я буду запускать сервер Pi-hole в контейнере Docker, поэтому я освободил порт 53, установив DNSStubListener=no
в /etc/systemd/resolved.conf
и перезапустив systemd-resolved
.
Это освободило порт 53, но теперь DNS не работает. Я получаю ;; connection timed out; no servers could be reached
Смотрев в настройки сети с рабочего стола, я вижу 1.1.1.1 и 8.8.8.8 как DNS-серверы, назначенные через DHCP в текущей конфигурации, но как заставить мою систему использовать их?
ОБНОВЛЕНИЕ1:
В /etc/resolv.conf
написано:
nameserver 127.0.0.53
options edns0 trust-ad
search domain.local
DNS-серверы, назначенные через DHCP, будут использоваться для настройки resolved
. Остальная часть системы использует то, что настроено в /etc/resolv.conf
для разрешения адресов. resolv.conf
ссылается на 127.0.0.53
, который больше не работает, потому что вы отключили resolved
.
Измените /etc/resolv.conf
, чтобы указать на активные DNS-серверы:
domain domain.local
nameserver 8.8.8.8
nameserver 8.8.4.4
Редактирование: о том, как использовать DNS-серверы, назначенные через DHCP, вместо того чтобы устанавливать их вручную, смотрите https://unix.stackexchange.com/a/453122/52365
Ответ или решение
Отключение systemd-resolved для освобождения порта 53 и использование DNS-серверов, предоставленных DHCP
Для успешного запуска сервера Pi-hole в контейнере Docker необходимо отключить систему DNS, управляемую systemd-resolved
, так как она по умолчанию использует порт 53, который вам требовался для Pi-hole. Однако, после выполнения конфигурации, возникла проблема с разрешением DNS. В этом руководстве мы подробно рассмотрим, как правильно освободить порт 53 и обеспечить использование DNS-серверов, предоставленных вашим DHCP, без нарушения работы системы.
Шаг 1: Отключение systemd-resolved
Вы уже на правильном пути, установив параметр DNSStubListener=no
в файле /etc/systemd/resolved.conf
. Это отключает локальный DNS-слушатель на порту 53. После внесения изменений не забудьте перезапустить службу:
sudo systemctl restart systemd-resolved
Шаг 2: Проверка текущего состояния DNS
После отключения системного разрешателя, выполните команду:
systemctl status systemd-resolved
Это покажет статус службы и убеждает вас, что она не активна. Также проверьте, какие DNS-серверы у вас настроены через DHCP в настройках сети.
Шаг 3: Изменение /etc/resolv.conf
Проблема с разрешением DNS может заключаться в том, что ваш файл /etc/resolv.conf
по-прежнему указывает на локальный DNS-слушатель. Чтобы это исправить, вам необходимо вручную изменить настройки.
-
Откройте файл для редактирования:
sudo nano /etc/resolv.conf
-
Измените его содержимое следующим образом, подставив ваши актуальные DNS-серверы, которые предоставляет DHCP. Например, если ваш DHCP-сервер выдает IP-адреса на уровне Google DNS:
domain domain.local nameserver 1.1.1.1 nameserver 8.8.8.8
Эти строки указывают на DNS-серверы, которые используются для разрешения имени.
Шаг 4: Автоматизация настройки DNS
Если вы хотите автоматически получать DNS-серверы от DHCP вместо их ручного задания, убедитесь, что ваша система настроена правильно:
-
В случае использования NetworkManager, проверьте настройки подключения:
nmcli connection show
-
Измените настройки для вашего сетевого интерфейса, чтобы он получал DNS-адреса автоматически:
nmcli connection modify <имя_подключения> ipv4.dns "auto"
Шаг 5: Перезагрузка сети
После изменения настроек перезагрузите сеть или перезапустите ваш компьютер, чтобы изменения вступили в силу.
sudo systemctl restart NetworkManager
Заключение
Теперь ваш Pi-hole сервер в контейнере Docker должен успешно работать с освобожденным портом 53 и корректно использовать DNS-серверы, предоставленные DHCP. Всегда проверяйте состояние DNS через команду nslookup
или dig
, чтобы убедиться, что все работает правильно.
Следуя данным шагам, вы гарантируете, что конфигурация сети соответствует вашим требованиям, и, что важно, вы избегаете потенциальных конфликтов с другими службами.