Подробный гайд: Как настроить DNS на компьютере с Linux

Подробный гайд по настройке DNS в Linux: NetworkManager, systemd-resolved и Netplan. Узнайте, как задать DNS-серверы навсегда и проверить их работу.

2026.08.08                  


Подробный гайд: Как настроить DNS на компьютере с LinuxПодробный гайд: Как настроить DNS на компьютере с Linux Гайд по настройке DNS в Linux. Я разберу несколько вариантов, потому что в разных дистрибутивах DNS может управляться по-разному: NetworkManager, systemd-resolved, systemd-networkd, Netplan, классический /etc/resolv.conf и т.д.


Как настроить DNS на компьютере с Linux

1. Что такое DNS и почему важно понимать, кто им управляет

DNS — это система, которая преобразует доменные имена, например example.com, в IP-адреса, например 93.184.216.34.

В Linux DNS-настройки обычно находятся в файле:

/etc/resolv.conf

Пример содержимого:



nameserver 1.1.1.1
nameserver 8.8.8.8
search home.local

Но в современных системах этот файл часто не редактируют вручную, потому что он автоматически перезаписывается одним из сервисов:

  • NetworkManager;
  • systemd-resolved;
  • systemd-networkd;
  • dhclient;
  • resolvconf;
  • Netplan. Поэтому перед настройкой важно определить, какой компонент управляет сетью.

2. Как узнать, кто управляет DNS

2.1. Посмотрите содержимое /etc/resolv.conf

cat /etc/resolv.conf

Пример вывода:

# Generated by NetworkManager
nameserver 192.168.1.1

Если есть строка вроде Generated by NetworkManager, значит DNS управляет NetworkManager.


2.2. Проверьте, является ли /etc/resolv.conf символической ссылкой

ls -l /etc/resolv.conf

Если видите что-то вроде:

/etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf

или:

/etc/resolv.conf -> /run/systemd/resolve/stub-resolv.conf

значит используется systemd-resolved.


2.3. Проверьте активные сетевые сервисы

systemctl is-active NetworkManager
systemctl is-active systemd-networkd
systemctl is-active systemd-resolved

Вывод может быть, например:

active
inactive
active

2.4. Посмотрите список сетевых интерфейсов

ip -br addr

Пример вывода:

lo               UNKNOWN        127.0.0.1/8
eth0             UP             192.168.1.20/24
wlan0            UP             192.168.1.35/24

Запомните имя интерфейса: eth0, enp3s0, wlan0, ens33 и т.п.


3. Быстрая временная настройка DNS

Эти настройки обычно действуют до перезагрузки или до переподключения сети.


3.1. Временно задать DNS через resolvectl

Если используется systemd-resolved, можно временно задать DNS для конкретного интерфейса.

Например, интерфейс называется eth0:

sudo resolvectl dns eth0 1.1.1.1 8.8.8.8

Или только один DNS:

sudo resolvectl dns eth0 1.1.1.1

Можно указать IPv6-DNS:

sudo resolvectl dns eth0 1.1.1.1 2606:4700:4700::1111

Проверить:

resolvectl status eth0

3.2. Временно задать домен поиска

sudo resolvectl domain eth0 home.local

Или задать глобальный домен поиска:

sudo resolvectl domain eth0 "~."

Символ ~. означает, что этот интерфейс используется для разрешения всех доменов.


3.3. Временно отредактировать /etc/resolv.conf

Этот способ можно использовать, если вы точно знаете, что файл не перезаписывается автоматически.

Сначала сделайте резервную копию:

sudo cp /etc/resolv.conf /etc/resolv.conf.bak

Затем отредактируйте файл:

sudo nano /etc/resolv.conf

Пример содержимого:

nameserver 1.1.1.1
nameserver 8.8.8.8
search home.local

Сохраните файл:

  • в nano: Ctrl + O;
  • затем Enter;
  • выход: Ctrl + X.

Проверьте:

cat /etc/resolv.conf

Но на современных системах этот файл часто перезаписывается, поэтому для постоянной настройки лучше использовать соответствующий сетевой менеджер.




4. Постоянная настройка DNS через NetworkManager

NetworkManager часто используется в:

  • Ubuntu Desktop;
  • Fedora Workstation;
  • Linux Mint;
  • openSUSE;
  • Arch Linux с GNOME/KDE;
  • Debian с графическим окружением.

4.1. Посмотреть список подключений NetworkManager

nmcli connection show

Пример вывода:

NAME                UUID                                  TYPE      DEVICE
Wired connection 1  6f1a2b3c-1111-2222-3333-444455556666  ethernet  eth0
MyWiFi              a1b2c3d4-5555-6666-7777-888899990000  wifi      wlan0

Вам нужно имя подключения из колонки NAME.

Например:

Wired connection 1

4.2. Назначить DNS вручную через nmcli

Для IPv4:

sudo nmcli connection modify "Wired connection 1" ipv4.dns "1.1.1.1 8.8.8.8"

Если хотите игнорировать DNS, полученный от DHCP:

sudo nmcli connection modify "Wired connection 1" ipv4.ignore-auto-dns yes

Для IPv6:

sudo nmcli connection modify "Wired connection 1" ipv6.dns "2606:4700:4700::1111 2001:4860:4860::8888"

Игнорировать DNS от DHCPv6 или Router Advertisement:

sudo nmcli connection modify "Wired connection 1" ipv6.ignore-auto-dns yes

После этого перезапустите подключение:

sudo nmcli connection down "Wired connection 1"
sudo nmcli connection up "Wired connection 1"

4.3. Пример полной настройки IPv4-DNS

sudo nmcli connection modify "Wired connection 1" \
ipv4.dns "1.1.1.1 8.8.8.8" \
ipv4.ignore-auto-dns yes

Применить:

sudo nmcli connection down "Wired connection 1"
sudo nmcli connection up "Wired connection 1"

4.4. Проверить DNS после NetworkManager

cat /etc/resolv.conf

или:

resolvectl status

Также можно проверить конкретное подключение:

nmcli connection show "Wired connection 1" | grep dns

4.5. Настройка DNS через графический интерфейс

Если у вас GNOME:

  1. Откройте «Настройки».
  2. Перейдите в «Сеть» или «Wi-Fi».
  3. Нажмите на шестерёнку рядом с подключением.
  4. Откройте вкладку «IPv4».
  5. Отключите автоматическое получение DNS.
6. Введите DNS-серверы, например:
1.1.1.1, 8.8.8.8
7. Сохраните и переподключитесь.

Для IPv6 аналогично во вкладке «IPv6».


4.6. Как вернуть автоматический DNS в NetworkManager

sudo nmcli connection modify "Wired connection 1" ipv4.dns ""
sudo nmcli connection modify "Wired connection 1" ipv4.ignore-auto-dns no

Для IPv6:

sudo nmcli connection modify "Wired connection 1" ipv6.dns ""
sudo nmcli connection modify "Wired connection 1" ipv6.ignore-auto-dns no

Перезапустите подключение:

sudo nmcli connection down "Wired connection 1"
sudo nmcli connection up "Wired connection 1"

5. Постоянная настройка DNS через systemd-resolved

systemd-resolved — это системный сервис разрешения DNS.

Он часто используется в:

  • Ubuntu;
  • Fedora;
  • Arch Linux;
  • Debian с systemd-networkd;
  • многих серверных системах.

Обычно приложения обращаются к локальному резолверу:

127.0.0.53

а уже systemd-resolved отправляет запросы вышестоящим DNS-серверам.


5.1. Проверить статус systemd-resolved

systemctl status systemd-resolved

Проверить текущие DNS:

resolvectl status

5.2. Глобальная настройка DNS через /etc/systemd/resolved.conf



Откройте файл:

sudo nano /etc/systemd/resolved.conf

Раскомментируйте или добавьте строки:

[Resolve]
DNS=1.1.1.1 8.8.8.8
FallbackDNS=9.9.9.9
Domains=home.local

Пример более полного файла:

[Resolve]
DNS=1.1.1.1 8.8.8.8
FallbackDNS=9.9.9.9 149.112.112.112
# DNSSEC=allow-downgrade
# DNSOverTLS=opportunistic

Если нужно использовать только указанные DNS и не использовать резервные:

FallbackDNS=

Сохраните файл и перезапустите сервис:

sudo systemctl restart systemd-resolved

Проверка:

resolvectl status

5.3. Настройка DNS для конкретного сетевого интерфейса в systemd-networkd

Если сеть управляется через systemd-networkd, конфигурация может находиться в:

/etc/systemd/network/

Например, файл:

sudo nano /etc/systemd/network/10-eth0.network

Пример:

[Match]
Name=eth0

[Network]
DHCP=yes
DNS=1.1.1.1
DNS=8.8.8.8
Domains=home.local

Если хотите игнорировать DNS, полученный по DHCP:

[DHCP]
UseDNS=false

Полный пример:

[Match]
Name=eth0

[Network]
DHCP=yes
DNS=1.1.1.1
DNS=8.8.8.8
Domains=home.local

[DHCP]
UseDNS=false

Примените настройки:

sudo systemctl restart systemd-networkd
sudo systemctl restart systemd-resolved

Проверка:

resolvectl status eth0

6. Настройка DNS через Netplan

Netplan часто используется в Ubuntu Server, начиная с Ubuntu 18.04.

Конфигурации находятся в:

/etc/netplan/

Посмотреть файлы:

ls -l /etc/netplan/

Пример файлов:

/etc/netplan/00-installer-config.yaml
/etc/netplan/01-netcfg.yaml

6.1. Сделать резервную копию

sudo cp /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml.bak

6.2. Открыть конфигурацию

Например:

sudo nano /etc/netplan/00-installer-config.yaml

6.3. Пример настройки DHCP и ручных DNS

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: true
      nameservers:
        addresses:
          - 1.1.1.1
          - 8.8.8.8
        search:
          - home.local

Важно соблюдать отступы. В YAML они имеют значение. Используйте пробелы, не табы.


6.4. Пример со статическим IP и DNS

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: false
      addresses:
        - 192.168.1.20/24
      routes:
        - to: default
          via: 192.168.1.1
      nameservers:
        addresses:
          - 1.1.1.1
          - 8.8.8.8
        search:
          - home.local

6.5. Проверить и применить Netplan

Проверить синтаксис:

sudo netplan try

Если всё работает, можно применить окончательно:

sudo netplan apply

Если используется старая схема:

sudo netplan generate
sudo netplan apply

Проверка:

resolvectl status

или:

cat /etc/resolv.conf

7. Настройка DNS в классическом Debian через /etc/network/interfaces

Этот способ актуален для старых серверных Debian-систем или систем с ifupdown.

Файл:

sudo nano /etc/network/interfaces

Пример для DHCP:

auto eth0
iface eth0 inet dhcp
    dns-nameservers 1.1.1.1 8.8.8.8
    dns-search home.local

Пример для статического IP:

auto eth0
iface eth0 inet static
    address 192.168.1.20/24
    gateway 192.168.1.1
    dns-nameservers 1.1.1.1 8.8.8.8
    dns-search home.local

После изменения можно перезапустить сеть:

sudo systemctl restart networking

или перезагрузить компьютер.


8. Настройка DNS через DHCP-клиент dhclient

Если система получает сеть по DHCP и использует dhclient, можно настроить DNS в:

/etc/dhcp/dhclient.conf

Откройте файл:

sudo nano /etc/dhcp/dhclient.conf

Чтобы добавить DNS перед полученными от DHCP:

prepend domain-name-servers 1.1.1.1, 8.8.8.8;

Чтобы полностью задать свои DNS и игнорировать DNS от DHCP:

supersede domain-name-servers 1.1.1.1, 8.8.8.8;

Также можно задать домен поиска:

supersede domain-search "home.local";

После этого перезапустите сеть или DHCP-клиент. Способ зависит от дистрибутива:

sudo systemctl restart NetworkManager

или:

sudo systemctl restart networking

или:

sudo dhclient -r && sudo dhclient

9. Ручная настройка /etc/resolv.conf

Этот способ простой, но на современных системах файл может перезаписываться.


9.1. Резервная копия

sudo cp /etc/resolv.conf /etc/resolv.conf.bak

9.2. Редактирование

sudo nano /etc/resolv.conf

Пример:

nameserver 1.1.1.1
nameserver 8.8.8.8
search home.local
options edns0 trust-ad

Сохраните файл.


9.3. Ограничения

В resolv.conf обычно активно учитываются только первые три строки nameserver:

nameserver 1.1.1.1
nameserver 8.8.8.8
nameserver 9.9.9.9

Больше трёх DNS-серверов указывать можно, но большинство систем используют только первые три.


9.4. Защита файла от перезаписи

Не рекомендуется делать это на обычных рабочих системах, но иногда используется на серверах или в специфичных сценариях.

Запретить изменение файла:

sudo chattr +i /etc/resolv.conf

Снять защиту:

sudo chattr -i /etc/resolv.conf

Если /etc/resolv.conf является символической ссылкой, такой способ может работать некорректно или сломать сетевую конфигурацию.


10. Если используется символическая ссылка на systemd-resolved

Часто /etc/resolv.conf выглядит так:

ls -l /etc/resolv.conf

Вывод:

/etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf

Внутри может быть:

nameserver 127.0.0.53

Это нормально. Это означает, что приложения отправляют DNS-запросы локальному сервису systemd-resolved, а он уже использует настроенные upstream-DNS.

В таком случае лучше настраивать DNS через:

  • NetworkManager;
  • resolvectl;
  • /etc/systemd/resolved.conf;
  • systemd-networkd;
  • Netplan.

10.1. Можно ли заменить ссылку на прямой файл?

Технически можно:

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

Но обычно это не рекомендуется, потому что вы теряете часть возможностей systemd-resolved: локальное кэширование, маршрутизацию DNS по интерфейсам, DNSSEC и т.д.


11. Проверка работы DNS

11.1. Проверить содержимое резолвера

cat /etc/resolv.conf

11.2. Проверить статус systemd-resolved

resolvectl status

Для конкретного интерфейса:

resolvectl status eth0

11.3. Проверить разрешение имени

getent hosts example.com

Пример вывода:

93.184.216.34     example.com

11.4. Проверить с помощью ping

ping -c 4 example.com

11.5. Проверить с помощью dig

Если dig не установлен:

Для Debian/Ubuntu:

sudo apt update
sudo apt install dnsutils

Для Fedora/RHEL:

sudo dnf install bind-utils

Для Arch Linux:

sudo pacman -S bind

Проверка:

dig example.com

Короткий вывод:

dig +short example.com

Проверка конкретного DNS-сервера:

dig @1.1.1.1 example.com

или:

dig @8.8.8.8 example.com

11.6. Проверка с помощью host

host example.com

Или через конкретный DNS:

host example.com 1.1.1.1

12. Популярные публичные DNS-серверы

Cloudflare

1.1.1.1
1.0.0.1

IPv6:

2606:4700:4700::1111
2606:4700:4700::1001

Google Public DNS

8.8.8.8
8.8.4.4

IPv6:

2001:4860:4860::8888
2001:4860:4860::8844

Quad9

9.9.9.9
149.112.112.112

IPv6:

2620:fe::fe
2620:fe::9

13. Настройка DNS over TLS в systemd-resolved

Опционально можно использовать зашифрованный DNS over TLS, если ваш DNS-провайдер это поддерживает.

Пример для Cloudflare в /etc/systemd/resolved.conf:

[Resolve]
DNS=1.1.1.1#cloudflare-dns.com
DNSOverTLS=only

или более мягкий режим:

[Resolve]
DNS=1.1.1.1#cloudflare-dns.com
DNSOverTLS=opportunistic

После этого:

sudo systemctl restart systemd-resolved

Проверка:

resolvectl status

Если после настройки сеть или DNS перестали работать, верните конфиг назад:

sudo nano /etc/systemd/resolved.conf
sudo systemctl restart systemd-resolved

14. Очистка кэша DNS

Если используется systemd-resolved, очистить кэш можно так:

sudo resolvectl flush-caches

Проверить статистику:

resolvectl statistics

15. Частые проблемы и их решение

Проблема 1: cat /etc/resolv.conf показывает старые DNS

Причина: файл перезаписывается сетевым менеджером.

Решение: настраивайте DNS через активный менеджер:

  • NetworkManager;
  • Netplan;
  • systemd-resolved;
  • systemd-networkd;
  • dhclient.

Проблема 2: DNS меняется после перезагрузки

Причина: настройки были внесены временно.

Решение: используйте постоянную конфигурацию:

sudo nmcli connection modify ...

или Netplan:

nameservers:
  addresses:
    - 1.1.1.1

или resolved.conf.


Проблема 3: Сайты открываются по IP, но не открываются по имени

Проверьте:

ping -c 2 1.1.1.1
ping -c 2 example.com

Если IP пингуется, а домен нет — проблема в DNS.

Проверьте DNS вручную:

dig @1.1.1.1 example.com

Если dig @1.1.1.1 работает, а обычный запрос нет — проблема в локальной настройке DNS.


Проблема 4: В /etc/resolv.conf только 127.0.0.53

Это нормально для systemd-resolved.

Проверьте реальные DNS:

resolvectl status

Настраивать DNS нужно через systemd-resolved, NetworkManager, Netplan или systemd-networkd.


Проблема 5: DNS не работает только в V

Иногда V меняет DNS или добавляет свой домен поиска.

Посмотрите:

resolvectl status

Обратите внимание на строки:

DNS Servers
DNS Domain

Проблема 6: Ошибка Temporary failure in name resolution

Обычно означает, что система не может разрешить доменное имя.

Проверьте:

cat /etc/resolv.conf
resolvectl status
ip route
ping -c 2 8.8.8.8

Если нет маршрута по умолчанию, проблема может быть не в DNS, а в сети:

ip route

Должна быть строка вроде:

default via 192.168.1.1 dev eth0

16. Рекомендуемый порядок действий

Если вы не уверены, какой способ использовать, рекомендую такой порядок.


Вариант A: У вас обычный домашний или рабочий Linux с графическим интерфейсом

Используйте NetworkManager.

1. Узнайте имя соединения:

nmcli connection show

2. Задайте DNS:

sudo nmcli connection modify "Имя соединения" ipv4.dns "1.1.1.1 8.8.8.8"
sudo nmcli connection modify "Имя соединения" ipv4.ignore-auto-dns yes

3. Перезапустите соединение:

sudo nmcli connection down "Имя соединения"
sudo nmcli connection up "Имя соединения"

4. Проверьте:

cat /etc/resolv.conf
resolvectl status

Вариант B: У вас Ubuntu Server

Скорее всего используется Netplan.

1. Найдите файл:

ls -l /etc/netplan/

2. Откройте его:

sudo nano /etc/netplan/00-installer-config.yaml

3. Добавьте:

      nameservers:
        addresses:
          - 1.1.1.1
          - 8.8.8.8

4. Примените:

sudo netplan apply

5. Проверьте:

resolvectl status

Вариант C: У вас сервер с systemd-networkd

Используйте файлы в:

/etc/systemd/network/

Пример:

[Match]
Name=eth0

[Network]
DHCP=yes
DNS=1.1.1.1
DNS=8.8.8.8

[DHCP]
UseDNS=false

Затем:

sudo systemctl restart systemd-networkd
sudo systemctl restart systemd-resolved

17. Краткая шпаргалка

Посмотреть текущие DNS

cat /etc/resolv.conf
resolvectl status

Временно задать DNS

sudo resolvectl dns eth0 1.1.1.1 8.8.8.8

Постоянно задать DNS через NetworkManager

sudo nmcli connection modify "Имя соединения" ipv4.dns "1.1.1.1 8.8.8.8"
sudo nmcli connection modify "Имя соединения" ipv4.ignore-auto-dns yes
sudo nmcli connection down "Имя соединения"
sudo nmcli connection up "Имя соединения"

Постоянно задать DNS через Netplan

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: true
      nameservers:
        addresses:
          - 1.1.1.1
          - 8.8.8.8

Применить:

sudo netplan apply

Постоянно задать DNS через systemd-resolved

sudo nano /etc/systemd/resolved.conf

Содержимое:

[Resolve]
DNS=1.1.1.1 8.8.8.8
FallbackDNS=

Применить:

sudo systemctl restart systemd-resolved

Проверить DNS

resolvectl status
getent hosts example.com
dig +short example.com

18. Итог

Самое главное — не просто редактировать /etc/resolv.conf, а понять, какой компонент управляет сетью.

В большинстве случаев:

  • для домашнего Linux с графикой используйте NetworkManager;
  • для Ubuntu Server используйте Netplan;
  • для серверов с systemd-networkd используйте systemd-networkd + systemd-resolved;
  • для старых Debian-систем можно использовать /etc/network/interfaces;
  • ручное редактирование /etc/resolv.conf подходит только как временное или аварийное решение.

Мы делимся этой технической информацией, чтобы помочь вам в решении задач — используйте её с пониманием. Статья носит рекомендательный характер, поэтому, пожалуйста, применяйте описанные методы осмотрительно.


Статью подготовил: Аверко Денис Сергеевич @Nymexis г. Омск (5)(· · · — — — · · ·)(30)

Комментарии

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