Как настроить настройки DNS на Debian 12?

Вопрос или проблема

Я пытаюсь изменить настройки DNS на своем Debian 12 VPS, и под этим я имею в виду, что хочу использовать публичный резолвер, например 1.1.1.1, вместо резолвера хоста моего VPS.

Я помню, в Debian 11 я мог просто отредактировать файл /etc/resolv.conf и перезапустить resolvconf.service, и все работало нормально.

Однако в Debian 12, когда я пытаюсь отредактировать /etc/resolv.conf, появляется большое предупреждение:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "resolvectl status" to see details about the actual nameservers.

Так что, если я не могу отредактировать этот файл, где я могу настроить мой резолвер?

Я пытался читать man resolvconf и man resolv.conf, но это еще больше меня запутало.

Есть идеи?

  1. Вам нужно установить resolvconf.

    sudo apt install resolvconf
    
  2. Включите и запустите службу resolvconf.

    systemctl start resolvconf
    systemctl enable resolvconf
    systemctl status resolvconf
    
  3. Обновите файл /etc/resolvconf/resolv.conf.d/head, чтобы он содержал строки наподобие:

    nameserver 8.8.8.8
    nameserver 8.8.4.4
    
  4. Выполните команду:

    resolvconf --enable-updates
    resolvconf -u
    

Источник: https://www.ionos.com/digitalguide/server/configuration/how-to-set-dns-on-debian/#:~:text=the%20DNS%20field.-,How%20to%20set%20your%20DNS%20server%20using%20the%20configuration%20file,-You%20can%20also

Используйте подстановочный резолвер systemd-resolved, упомянутый в вашем /etc/resolv.conf:

  1. Добавьте DNS-серверы в /etc/systemd/resolved.conf:
[Resolve]
DNS=1.1.1.1 8.8.8.8
  1. перезагрузите systemd-resolved
systemctl restart systemd-resolved

Проверьте ваши настройки с помощью resolvectl status:

$ resolvectl status
Global
         Protocols: -LLMNR +mDNS -DNSOverTLS DNSSEC=no/unsupported
  resolv.conf mode: stub
Current DNS Server: 1.1.1.1
       DNS Servers: 1.1.1.1 8.8.8.8
        DNS Domain: your.search.domain

Link 2 (ens3)
...

Читайте man systemd-resolved

Это подстановочный резолвер, упомянутый в вашем /etc/resolv.conf. На этой странице man можно прочитать, почему не стоит редактировать /etc/resolv.conf и почему это символическая ссылка и т.д.

Также существует страница man для конфигурационного файла этого подстановочного резолвера: man resolved.conf.

Сначала проверьте наличие файла /run/systemd/resolve/resolv.conf если он существует, создайте символическую ссылку на него вместо /etc/resolv.conf

#ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

Я бы предложил:

удалить пакет resolvconf

# apt-get purge resolvconf  

удалить /etc/resolv.conf

# rm /etc/resolv.conf

включить systemd-resolved

# systemctl enable systemd-resolved --now  

настроить systemd-resolved

# grep -v '#' /etc/systemd/resolved.conf 

[Resolve]

MulticastDNS=no
LLMNR=no

DNS=1.1.1.1  8.8.4.4
FallbackDNS=8.8.8.8
Domains=~.

перезагрузить systemd-resolved

# systemctl restart systemd-resolved  

создать правильную символическую ссылку для resolv.conf

# ln -s /run/systemd/resolve/stub-resolv.conf  /etc/resolv.conf  

правильный resolv.conf будет выглядеть так

# grep -v '#' /etc/resolv.conf 

nameserver 127.0.0.53
options edns0 trust-ad
search .

настройка

"Domains=~."   

очень важна. Я не хочу полностью объяснять, так как это длинная история. Скажу лишь, что разные программы могут влиять на настройки демона systemd-resolved, в основном это делается на уровне интерфейса, добавляются пользовательские DNS-серверы. Вы будете удивлены, узнав, что в таком случае systemd-resolved использует не тот DNS-сервер, который вы настроили, а нечто другое. Чтобы этого избежать, то есть если вы хотите быть уверены, что systemd-resolved использует только 1.1.1.1 8.8.4.4 для запросов и ничего другого, настройка “Domains=~.” обязательна. Вы можете проверить это следующим образом:
включить отладочный журнал и следить за журналом

# resolvectl log-level debug
# journalctl -f -u systemd-resolved | grep "Using DNS server"

вы должны видеть только 1.1.1.1 или 8.8.8.8

для отключения отладочного журнала просто перезапустите systemd-resolved

Ответ или решение

Конфигурация DNS-настроек на Debian 12 может показаться сложной задачей, особенно если вы привыкли к старой версии системы. В данной версии Debian используется системный сервис systemd-resolved для управления DNS-запросами, что требует изменений в подходе к настройке. Вот подробная инструкция по изменению настроек DNS для использования публичных резолверов, таких как 1.1.1.1 и 8.8.8.8.

Шаг 1: Удаление пакета resolvconf

Чтобы избежать конфликтов с systemd-resolved, рекомендуется удалить пакет resolvconf. Это можно сделать с помощью следующей команды:

sudo apt-get purge resolvconf

Шаг 2: Обновление конфигурации systemd-resolved

После удаления resolvconf необходимо настроить systemd-resolved для использования желаемых DNS-серверов.

  1. Откройте файл конфигурации /etc/systemd/resolved.conf в текстовом редакторе, например, nano:

    sudo nano /etc/systemd/resolved.conf
  2. Добавьте или измените параметры в разделе [Resolve]:

    [Resolve]
    DNS=1.1.1.1 8.8.8.8
    FallbackDNS=8.8.4.4
    Domains=~.
    MulticastDNS=no
    LLMNR=no
  3. Сохраните изменения и закройте редактор (например, в nanoCtrl+O, затем Enter и Ctrl+X).

Шаг 3: Перезапуск службы systemd-resolved

Для применения изменений выполните перезапуск службы:

sudo systemctl restart systemd-resolved

Шаг 4: Создание подходящей символической ссылки для resolv.conf

Для корректной работы DNS необходимо создать символьную ссылку на файл конфигурации systemd-resolved. Удалите текущий файл resolv.conf и создайте символьную ссылку следующим образом:

sudo rm /etc/resolv.conf
sudo ln -s /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf

Шаг 5: Проверка настроек

Убедитесь, что настройки были применены, с помощью команды:

resolvectl status

Вы должны увидеть, что текущие DNS-серверы указаны как 1.1.1.1 и 8.8.8.8.

Примечание

Очень важно использовать параметр Domains=~. в конфигурации. Это обеспечивает использование только указанных DNS-серверов, предотвращая возможное влияние других программ, добавляющих свои DNS на уровне интерфейсов.

Заключение

Выполнив данные шаги, вы настроите систему Debian 12 для работы с выбранными публичными DNS-серверами. Это не только улучшит вашу конфиденциальность, но и может повысить производительность сети. Использование systemd-resolved обеспечивает более гибкие и безопасные способы управления DNS в современных Linux-системах.

Оцените материал
Добавить комментарий

Капча загружается...