DNS установлен на systemd 127.0.0.53 - как изменить постоянно?


38

Я недавно обновился до 17.10. Когда я пытаюсь перейти на веб-сайт или пропинговать домен, происходит сбой, говоря, что сайт не может быть разрешен.

network-adminпоказывает содержание /etc/resolv.confбытьnameserver: 127.0.0.53

Если я изменю это на 8.8.8.8 или 208.67.222.222, то все работает. Пока я не перезагружаюсь.

После перезагрузки или возобновления, сервер имен сбрасывается до 127.0.0.53.

Как мне постоянно установить на сервере имен что-то, что работает?


Для поклонников systemd, если я бегу, systemd-resolve --statusя получаю

Link 3 (wlo1)
      Current Scopes: LLMNR/IPv4 LLMNR/IPv6
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no

Если я последую совету по этому вопросу - DNS перезагрузится после перезагрузки. Ubuntu 17.10 - DNS по-прежнему не удается разрешить.


systemctl stop systemd-resolvedи systemctl mask systemd-resolvedдолжен сделать свое дело :)
Шаян

Ответы:


28

Вы можете установить пакет resolvconf, который изменит способ сборки /etc/resolv.confпри загрузке системы.

sudo apt install resolvconf

Затем вы можете создать или изменить файл /etc/resolvconf/resolv.conf.d/tail. Если вы nameserver 8.8.8.8добавите в этот файл строку , эта строка будет добавлена ​​в конце /run/resolvconf/resolv.confзагрузки. /etc/resolv.confтеперь будет символическая ссылка на этот файл.


4
Это работает - спасибо! Знаете ли вы, есть ли способ заставить 127.0.0.53 работать самостоятельно?
Теренс Иден

1
Я довольно новичок в этом вопросе. Просто пытался избавиться от проблем с днс при включении / выключении vpn за последние недели. Вы могли бы попробовать sudo dpkg-reconfigure resolvconf. Я попробовал это в последнее время, очистил файл хвоста, и сначала это, кажется, работает.
oscar1919

@TerenceEden, если вы хотите, чтобы 127.0.0.53 работало само по себе (как и должно быть), взгляните на мой ответ: askubuntu.com/a/1083843/281191
intelfx

10

Правильное решение было бы исправить Systemd-разрешенными вместо того , чтобы пытаться вылечить мигрень с гильотиной.

Это действительно хороший инструмент, если его правильно использовать.

Судя по твоему systemd-resolve --statusвыводу ...

Link 3 (wlo1)
      Current Scopes: LLMNR/IPv4 LLMNR/IPv6
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no

... ваш менеджер сети не передает конфигурацию DNS для каждого интерфейса в systemd-resolved.

Например, последние версии NetworkManager будут делать это автоматически, если /etc/resolv.confесть символическая ссылка, указывающая внутрь /run/systemd/resolveили на /usr/lib/systemd/resolv.conf. В качестве альтернативы, последние версии systemd-resolved пытаются быть совместимыми с историческим интерфейсом resolvconf, устанавливая resolvconfдвоичный файл, который обращается к systemd-resolved.

Хотя использование любого из этих двух решений будет предпочтительным, если вы ищете быстрое и грязное решение, вы можете просто настроить systemd-resolved для глобального использования ваших DNS-серверов:

$ cat /etc/systemd/resolved.conf
<...>
[Resolve]
DNS=8.8.8.8 8.8.4.4
<...>

Затем перезагрузите systemd-resolved.serviceили перезагрузите компьютер.


По крайней мере, для меня этот ответ не работает, используя Ubuntu 18.04, после изменения записи «DNS» он сохраняет значение 127.0.0.53
Андре М. Фариа

1
@ AndréM.Faria узнать, как работает решена. 127.0.0.53адрес локального решателя кэширующих заглушек. Он пересылает DNS-запросы на любые указанные выше DNS-серверы.
intelfx

Иногда вы что-то знаете и просто игнорируете это, да, вы правы.
Андре М. Фариа

1
Также стоит отметить, что по умолчанию systemd-resolvedкешируются ответы DNS. Хотя иногда это может быть полезно, в некоторых ситуациях это может вызвать проблемы. Раскомментируйте cache=yesстроку в файле конфигурации в ответе и установите для нее значение no.
Квентин Скоусен

что на самом деле вызывает /etc/resolve.conf(или действительно, на /run/resolvconf/resolv.confчто указывает первое) обновление? было бы неплохо узнать для тестирования, без предполагаемой перезагрузки. все, что я могу сказать, это то, что перезапуск systemd-resolved.service, похоже, не
сработал

8

Я использую Lubuntu & Kubuntu 18.04. Мне удалось преодолеть проблему DNS в 2 этапа:

Первый шаг: Установить unboundи настроить его заменить , systemd-resolvedкак Грегуар C показывает здесь .

sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved
sudo systemctl enable unbound-resolvconf
sudo systemctl enable unbound

перезагружать

Откройте как root файл /etc/NetworkManager/NetworkManager.conf

( sudo leafpad /etc/NetworkManager/NetworkManager.confв Lubuntu 18.04 или в Kubuntu 18.04 SUDO_EDITOR=kate sudoedit /etc/NetworkManager/NetworkManager.conf)

и ниже [main]поставьте эту строку:

dns=unbound

перезагрузить снова

Второй шаг: если после перезагрузки проблема все еще не решена, как это было в моем случае, запустите файловый менеджер от имени root, перейдите /etc, удалите resolv.confи создайте новый resolv.conf. Оставьте это пустым и перезагрузите ОС. В моем случае после этой перезагрузки проблема исчезла.

В Kubuntu 18.04 вы не можете запустить Dolphin как root, поэтому вы можете сначала зайти /etcи открыть терминал оттуда, затем набрать sudo suи нажать Enter, чтобы использовать его как root, а затем удалить resolv.confс помощью команды rm resolv.conf. Затем вы можете создать новый пустой файл на рабочем столе, назвать его resolv.confи открыть терминал оттуда. Используйте sudo suкоманду, чтобы войти в корневой режим терминала, а затем скопируйте новый resolv.confс рабочего стола /etcс помощью команды cp resolv.conf /etc.

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


Почему бы просто не отредактировать его как root и удалить содержимое?
Балли

@Ballie Я попробовал это сначала, но это не помогло. Кроме того, оригинал resolv.confиз /etcбыл показан в виде ярлыка, что, я думаю, ненормально. Вот почему я решил удалить его и воссоздать, создав новый пустой файл и назвав его resolv.conf. И это сработало. По этой причине я писал выше, что в следующий раз, когда мне придется переустанавливать ОС, я постараюсь сделать это сначала, не выполняя «первый шаг» - чтобы убедиться, что этого будет достаточно. Но оригинал resolv.confв /etcлюбом случае нужно удалить и воссоздать - в этом я уверен.
Калоян Грънчаров

Я просто отключил systemd-resolved.service и удалил ссылку resolv.conf, создал его вручную, и это сработало!
Андре М. Фариа

8

работая в рамках systemdпарадигмы, добавьте DNS к ссылке / устройству

с помощью Ubuntu 17.10+ добавьте *.networkфайл:

sudo nano /lib/systemd/network/100-somecustom.network:

100-somecustom.network (100 может быть любым числом для приоритета, для него требуется .networkрасширение файла):

[Match]
Name=wlo1 # the device name here

[Network] # add multiple DNS 
DNS=8.8.8.8
DNS=208.67.222.222

Затем перезапустите:

sudo service systemd-networkd restart

Также посмотрите на:

netplan apply

Затем проверьте:

systemd-resolve --status wlo1

Со страницы информации info systemd.network:

Кроме того /etc/systemd/network, в каталоги / lib / systemd / network или / run / systemd / network можно помещать вставные каталоги ".d" . Добавленные в / etc файлы имеют приоритет над файлами в / run, которые, в свою очередь, имеют приоритет над файлами в / lib. Вставные файлы в любом из этих каталогов имеют приоритет над основным файлом netdev, где бы он ни находился. (Конечно, поскольку / run является временным, а / usr / lib для поставщиков, маловероятно, чтобы в любом из этих мест использовались вставки.)

Другой подход отключить DNSStubListenerдля использования с dnsmasq:

sudo nano /etc/systemd/resolved.conf:

#
DNSStubListener=false

Связанный:


Странно, что вы заявили, что DNSStubListener = false, но фактическая закомментированная конфигурация - это DNSStubListener = yes, обычно обратное значение «yes» равно «no», а не «false», которое в случае «false» обычно было « правда".
Андре М. Фариа

Ваш ответ на создание файла с расширением .network не сработал.
Андре М. Фариа

2

Вот как я изменяю свою запись DNS в конфигурации интерфейса.

$ vi /etc/netplan/50-cloud-init.yaml

Измените адреса серверов имен, ранее это было .4, затем я изменил его на .3:

...
            nameservers:
                addresses:
                - 192.168.1.3
...

Сохраните конфигурацию и затем примените конфигурацию:

$ sudo netplan apply

После этого перезапустите сервис resolctl.

$ sudo systemctl restart systemd-resolved.service

Для заметок: я перезагрузил сервер и внесенные изменения остались нетронутыми. Я использую resolvctl dnsкоманду для проверки записи DNS.


Это на самом деле правильный ответ. Я удивлен, что это не принято.
Томал

0

Были некоторые проблемы с NordVPN, поэтому решил добавить к этому.

Выводы:
NordVPN устанавливает /run/systemd/resolve/resolv.confнастройки DNS при подключении.
NordVPN удаляет все настройки DNS /run/systemd/resolve/resolv.confпри отключении.
Это приводит к тому, что DNS-сервер больше не работает (так как нет одного набора).

Система нуждается в перезагрузке, чтобы восстановить ее вообще. Стандартный перезапуск службы ( sudo systemctl restart systemd-resolved.service) не работает.

Решение обойти это:

sudo apt install resolvconf

Перейдите на /etc/resolvconf/resolv.conf.d/

cd /etc/resolvconf/resolv.conf.d/
sudo nano tail

Добавить серверы имен

nameserver 1.1.1.1
nameserver 1.0.0.1

Проверьте следующие места для серверов имен, которые могли быть установлены:

/run/resolvconf/interface/original.resolvconf
/run/resolvconf/interface/systemd-resolved
/etc/resolvconf/resolv.conf.d/tail
/etc/resolvconf/resolv.conf.d/head
/etc/systemd/resolved.conf
/run/systemd/resolve/resolv.conf
/run/systemd/resolve/stub-resolv.conf

Проверьте, какие DNS-серверы используются с:

nslookup google.com

Server:         1.1.1.1
Address:        1.1.1.1#53

0

Может быть, немного поздно, но я столкнулся с этой проблемой. Я должен признать, что я вручную настраивал свои сетевые параметры через cli, а не через встроенный сетевой менеджер. Я запускаю Ubuntu 18.04.

Поэтому после того, как я отключил, а затем снова включил systemd.resolved.service, это ошибочное поведение случайной потери моей конфигурации DNS было решено для меня.

systemctl disable systemd.resolved.service
reboot

после перезагрузки:

systemctl enable systemd.resolved.service
reboot

Я относительно молодой пользователь Linux, поэтому должен быть кто-то, кто может объяснить, как и почему, почему это сработало бы для меня, но, казалось, стоит упомянуть, может ли это помочь другим.


Извините, что разочаровал, но между вами должно быть что-то, что на самом деле решило проблему. Операции, которые вы предлагаете здесь, могут оставить систему только такой, какой она была.
Тишма

-1

При использовании разрешения имен dhcp работает как положено в Ubuntu. Проблемы начинаются, когда вы хотите стать статичным. cat /etc/resolv.confпокажет, что ваш dns это 127.0.0.53, а не те, которые у вас есть в /etc/netplan/.yamlфайле. Чтобы это исправить, вам нужно удалить /etc/resolve.confссылку и создать новую, указывающую на/run/resolve/resolve.conf


Пожалуйста, отредактируйте свой ответ и исправьте форматирование ...
Yufenyuy Veyeh Dider

-2

Это потребовало некоторой тренировки с. После того как я обновил настройки, я перезагрузился. Использование:

ln -s /run/resolvconf/resolv.conf /etc/resolv.conf

/etc/systemd/resolved.conf
DNS=8.8.8.8
Cache=no

System resolved failed
systemctl stop systemd-resolved
systemctl disable systemd-resolved

Когда закомментируйте «запрос» для

# domain-name, domain-name-servers, domain-search, host-name,

Добавьте эту строку в ваш /etc/dhcp/dhclient.conf:

 supersede domain-name "cwillenterprise.com";

Отредактируйте файл конфигурации и добавьте запись. Дополнительный не заменит.

Добавить записи в /etc/resolvconf/resolv.conf.d/tail

nameserver 8.8.8.8
search "cwillenterprise.com"

Запустите для внесения изменений

resolvconf -u

1
Добро пожаловать в Спросите Ubuntu ! Пожалуйста, измените свой ответ, чтобы использовать форматирование кода для кода, который должен быть введен в файлы или терминал. Не пытайтесь #«комментировать» код - это означает заголовок в Markdown. Пожалуйста, всегда проверяйте предварительный просмотр вашего сообщения перед отправкой.
Мелебиус
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.