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


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-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

Ви можете встановити пакет resolutionvconf, який змінить спосіб /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
Я досить новачок у цьому питанні. Просто намагалися позбутися проблем з dns при вмиканні / вимкненні 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 на один інтерфейс до системного рішення.

Наприклад, останні версії NetworkManager роблять це автоматично, якщо /etc/resolv.confце посилання, що вказує всередину /run/systemd/resolveабо на /usr/lib/systemd/resolv.conf. Крім того, останні версії системного рішення намагаються бути сумісними з історичним інтерфейсом resolconcon, встановивши resolvconfдвійковий файл, який спілкується з системним рішенням .

Хоча використання будь-якого з цих двох рішень було б кращим, якщо ви шукаєте швидке і брудне рішення, ви можете просто налаштувати системний режим для використання своїх серверів DNS у всьому світі:

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

Потім перезавантажте systemd-resolved.serviceабо перезавантажте.


Принаймні для мене ця відповідь не працює, використовуючи ubuntu 18.04, після зміни запису "DNS" він зберігає usint 127.0.0.53
André M. Faria

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, здається, не робив трюку
bbarker

8

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

Перший крок: Встановити unboundі налаштувати його замінити , systemd-resolvedяк Грегуар C показує тут .

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

перезавантажити

Відкрити як кореневий файл /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-resolution.service і видалив посилання на reslav.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, що випадають, ".d" можна розміщувати в / lib / systemd / network або / run / systemd / network каталогах. Файли, що завантажуються в / etc, мають перевагу над файлами в / run, які в свою чергу мають перевагу над файлами в / lib. Файли, що завантажуються в будь-який із цих каталогів, мають перевагу над головним файлом netdev, де б вони не знаходились. (Звичайно, оскільки / run є тимчасовим і / usr / lib призначений для постачальників, навряд чи плагіни повинні використовуватися в будь-якому з цих місць.)

Інший підхід відключить DNSStubListenerвикористання за допомогою dnsmasq:

sudo nano /etc/systemd/resolved.conf:

#
DNSStubListener=false

пов'язані:


Дивно, що ви заявили, що DNSStubListener = false, але фактична коментована конфігурація - DNSStubListener = так, як правило, зворотне значення "так" - це "ні", а не "false", який у випадку "false" зазвичай був " правда ».
Андре М. Фарія

Ваша відповідь створити файл із розширенням .network не працював.
Андре М. Фарія

2

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

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

Змініть адреси серверів імен, раніше це було .4, потім я змінив його на .3:

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

Збережіть конфігурацію та застосуйте конфігурацію:

$ sudo netplan apply

Після цього перезапустіть службу рішення.

$ 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. разрешил.сервис, ця помилкова поведінка випадково втрачала конфігурацію DNS для мене була вирішена.

systemctl disable systemd.resolved.service
reboot

після перезавантаження:

systemctl enable systemd.resolved.service
reboot

Я відносно свіжий користувач Linux, тому повинен бути хтось, хто може пояснити, як і чому це спрацювало б для мене, але, здавалося, варто згадати, чи може це допомогти іншим.


Вибачте, щоб розчарувати, але між цим насправді виправили щось, що ви зробили. Операції, які ви пропонуєте тут, можуть залишити систему лише такою, якою вона була.
тишма

-1

Під час використання dhcp роздільна здатність імені працює так, як очікувалося в Ubuntu. Проблеми починаються, коли потрібно стати статичним. cat /etc/resolv.confпокаже, що yor dns - це 127.0.0.53, а не ті, які у вас є у /etc/netplan/.yamlфайлі. Щоб виправити це, потрібно видалити /etc/resolve.confпосилання та створити нове, що вказує на/run/resolve/resolve.conf


Будь ласка, відредагуйте свою відповідь та виправте деякі формати ...
Юфенюй Вейдер Дайдер

-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
Ласкаво просимо до Ask Ubuntu ! Будь ласка , змініть свій відповідь на використання коду форматування для коду , який необхідно ввести в файлах або термінал. Не додавайте #до коментарів до коду - це означає заголовок у Markdown. Будь ласка, завжди перевіряйте попередній перегляд своєї публікації, перш ніж надсилати її.
Мелебій
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.