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

Недавно я обновился до версии 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: yesMulticastDNS setting: no      DNSSEC setting: no    DNSSEC supported: no

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

Вы можете установить пакет 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 теперь будет символическая ссылка на этот файл.

после написанного:

Почти через два года после публикации моего ответа я наткнулся https://bugs .launchpad.net/ubuntu /+источник/ppp/+ошибка/1778946 что именно объясняет, почему простая установка resolvconf решил проблему с dns, которая у меня была в то время. Я чувствую, что должен поделиться этим здесь.

Хотя мой ответ отвечает на вопрос надлежащим образом, действительно, следует добавить предупреждение о том, что, если вы хотите / должны это сделать, вероятно, что-то еще не так. Это уже было заявлено @intelfx в то время, 127.0.0.53 должно работать само по себе.

Согласно этому сообщению об ошибке, после сбоя pptp VPN, resolv.conf восстанавливается с неправильными правами доступа. ping ubuntu.com не работает, sudo ping ubuntu.com делает. Установка resolvconf решил ее, потому что она берет верх resolv.conf, восстановив его с правильными правами. Меняющийся systemd-resolve настройки в данном случае не являются решением, поскольку ошибка находится в ppp. Но альтернативным, возможно, более простым решением является sudo chmod a+r /etc/resolv.conf после отключения VPN. И это можно автоматизировать, поместив исполняемый скрипт в /etc/NetworkManager/dispatcher.d с содержимым:

#!/bin/shif [[ "$1"="ppp0" && "$2"="vpn-down" ]]; then      /bin/chmod a+r /etc/resolv.conffi

Во всех случаях содержание resolv.conf не меняйся. И, да, я знаю, что pptp следует избегать из-за проблем с безопасностью, но в то время я думал об этом как о хорошем упражнении для новичка ubuntu. Я предполагал, что это сработает "из коробки". Я и не подозревал, что это вызовет у меня головную боль, как это так хорошо диагностировал @intelfx.

То правильный решением было бы исправить systemd-resolved вместо того, чтобы пытаться вылечить мигрень с помощью гильотины.

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

Судя по вашему systemd-resolve --status выход...

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

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

Последние версии NetworkManager обнаружат, если /etc/resolv.conf является символической ссылкой на сгенерированный пользователем файл (/run/systemd/resolve/*.conf или /usr/lib/systemd/resolv.conf) и если это так, свяжитесь с нами напрямую.

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

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

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

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

работая в рамках 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.8DNS=208.67.222.222

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

sudo service systemd-networkd restart

Также изучите:

netplan apply

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

systemd-resolve --status wlo1

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

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

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

sudo nano /etc/systemd/resolved.conf:

#DNSStubListener=false

связанный:

Я использую Lubuntu и Kubuntu 18.04. Я смог преодолеть проблему DNS за 2 шага:

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

sudo systemctl disable systemd-resolvedsudo systemctl stop systemd-resolvedsudo systemctl enable unbound-resolvconfsudo 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 и нажмите Входить чтобы использовать его как root, а затем удалить resolv.conf с помощью команды rm resolv.conf. Затем вы можете создать новый пустой файл на своем рабочем столе, назовите его resolv.conf и откройте оттуда терминал. Используйте sudo su команда для входа в корневой режим терминала, а затем скопируйте новый resolv.conf с вашего рабочего стола на /etc с помощью команды cp resolv.conf /etc.

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

Я использую Ubuntu 18.04 LTS.Я не знаю, как моя операционная система внезапно столкнулась с этой проблемой, в то время как мой DNS работал хорошо в течение нескольких месяцев.Вот мое решение:

Установить resolvconf

$ sudo apt install resolvconf

Найдите источник /etc/resolv.conf.

$ ls -al /etc/resolv.confпоказывает, что /etc/resolv.conf является символической ссылкой на /run/resolvconf/resolv.conf

И я обнаружил, что: Этот файл /run/resolvconf/resolv.conf состоит из:

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

$ cat /run/resolvconf/interface/systemd-resolved показывать nameserver 127.0.0.53, который будет сброшен после перезагрузки.

Добавить DNS

Кажется, что nameserver <my DNS> должен быть перед nameserver 127.0.0.53 чтобы это могло сработать.

Поэтому я добавляю nameserver <my DNS> в конце /etc/resolvconf/resolv.conf.d/head.

Обновить resolvconf

$ sudo resolvconf -u

У меня были некоторые проблемы с 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.1nameserver 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.comServer:         1.1.1.1Address:        1.1.1.1#53

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

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

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

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

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

$ sudo netplan apply

После этого перезапустите службу resolvectl.

$ sudo systemctl restart systemd-resolved.service

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

В случае, если вы хотите управлять файлом /etc/resolv.conf вручную, "man NetworkManager.conf" предоставляет ответ.

В /etc/NetworkManager/NetworkManager.conf, раздел [main] добавить:dns=нет

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

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

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

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

systemctl disable systemd.resolved.servicereboot

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

systemctl enable systemd.resolved.servicereboot

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

Я думаю, ты только что пропустил что-то очень серьезное.

установите nmap, а затем запустите nmap 127.0.0.1, затем 127.0.0.53 У них другой список служб, что-то определенно прослушивается и скрывается на другом ip, пытаясь выглядеть как localhost. Тогда компьютер указывает на этот адрес, а не на фактический dns-сервер... и решающий... но я не устанавливал никакого dns-сервера...

Я выясняю, что это такое ... подсеть localhost должна иметь только 127.0.0.1, если я правильно помню.

Это звучит как возможный взлом, чтобы обойти брандмауэры.Мой брандмауэр был включен и отклонял входящие и исходящие сообщения, но мои исходящие сообщения должны были поступать на один ip-адрес. Мой фактический dns должен работать...

systemctl stop systemd-resolved и
systemctl mask systemd-resolved
должны сделать свое дело :slight_smile: