LINUX.ORG.RU
ФорумAdmin

Как в Debian 11 изменить DNS?

 , , ,


1

3

Меняю здесь:

sudo nano  /etc/resolv.conf

Оно при перезагрузке слетает.

Погуглил, нашел информацию, что менять надо вроде как здесь:

sudo nano /etc/systemd/resolved.conf

Раскомментировал и поставил:

DNS=1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001
FallbackDNS=8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:4860::8844

Остальные строки не трогал. Перезагрузил и все равно конфиги не сменились.

Что делать? Подскажите, как все сделать правильно. Заранее спасибо.

Перемещено hobbit из general



Последнее исправление: nadim (всего исправлений: 2)

Видишь ли, это зависит от того, чем именно у тебя настраивается сеть, в Debian есть как минимум 3 разных варианта.

Покажи вывод systemctl list-units --type service | grep -i -e net -e resolv

Vsevolod-linuxoid ★★★★★
()
Ответ на: комментарий от Vsevolod-linuxoid
~$ systemctl list-units --type service | grep -i -e net -e resolv

● networking.service                                    loaded failed failed  Raise network interfaces
  NetworkManager-wait-online.service                    loaded active exited  Network Manager Wait Online
  NetworkManager.service                                loaded active running Network Manager

У меня дист на KDE, если это имеет значение.

nadim
() автор топика
Последнее исправление: nadim (всего исправлений: 1)
Ответ на: комментарий от Vsevolod-linuxoid

В GUI я не могу прописать общие DNS, там только отдельно для каждого Wi-Fi соединения можно, а мне хотелось бы общее сделать. Чтобы если я сменил сеть Wi-Fi мне не пришлось перепрописывать DNS заново.

https://ibb.co/zZYwz2w

nadim
() автор топика
Ответ на: комментарий от nadim

Если NetworkManager использует dhclient для получения настроек соединений, то можно добавить в /etc/dhcp/dhclient.conf строки типа:

prepend domain-name-servers 1.1.1.1;
raspopov
()
ls -l /etc/resolv.conf

Что выдает?

damix9 ★★★
()
Ответ на: комментарий от d00fy
~$ ls -l /etc/resolv.conf

-rw-r--r-- 1 root root 79 ноя 20 08:14 /etc/resolv.conf

~$ nmcli dev show | grep DNS

IP4.DNS[1]:                             192.168.0.1
IP6.DNS[1]:                             fe80::1
nadim
() автор топика
Ответ на: комментарий от raspopov

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

nadim
() автор топика
Ответ на: комментарий от nadim

Что-то перезаписывает /etc/resolv.conf при каждой перезагрузке

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

raspopov
()
Ответ на: комментарий от nadim

Я пробовал менять конфиги NetworkManager

Это не то место. В общем случае в папке /run Linux хранит временные рабочие файлы, часто этот каталог даже не на диске находится, а в памяти, и пересоздаётся при каждом перезапуске системы.

Вы поняли, что NetworkManager использует и регистрирует в системе настройки получаемые от какого-то сервиса который настраивает ip-адреса и всё остальное при создании подключения (типа /dev/eth0)? Обычно это разновидность DHCP-клиента, а обычный для Debian - это dhclient (см. выше).

Если вам кажется это сложным, то альтернативы в виде, например, systemd-сервисов ещё хуже, особенно если нужно мигрировать с ноутбуком по WiFi-сетям.

raspopov
()
Ответ на: комментарий от raspopov

Блин, как же сложно. Эх, ладно, всем спасибо за помощь, но наверное оставлю все как есть. Поясню зачем вообще во все это полез. Хотелось попробовать AdGuard DNS, а именно их новый DNS-over-QUIC. Любопытство заело, стало интересно каково оно будет пользоваться самыми современными технологиями =) По идее он и быстрее должен быть, чем все что было до него и безопаснее.

Но если уж с обычной сменной DNS не могу разобраться, про DNS-over-QUIC лучше наверное забыть.

nadim
() автор топика
Последнее исправление: nadim (всего исправлений: 2)
Ответ на: комментарий от nadim

Блин, как же сложно.

Будьте мужественны, это же линукс!

Конфигурация NetworkManager находится в главном файле /etc/NetworkManager/NetworkManager.conf и каталоге /etc/NetworkManager/conf.d/, заглянув туда можно понять каким клиентом он пользуется: если dhclient, то там будет файл /etc/NetworkManager/conf.d/dhcp-client.conf.

P.S. В списке каталогов «N» идет раньше «a», ищите в самом начале списка.

raspopov
()
Ответ на: комментарий от raspopov

Есть, но там все закомментировано, не похоже что DNS оттуда берутся:

# Configuration file for /sbin/dhclient.
#
# This is a sample configuration file for dhclient. See dhclient.conf's
#	man page for more information about the syntax of this file
#	and a more comprehensive list of the parameters understood by
#	dhclient.
#
# Normally, if the DHCP server provides reasonable information and does
#	not leave anything out (like the domain name, for example), then
#	few changes must be made to this file, if any.
#

option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;

send host-name = gethostname();
request subnet-mask, broadcast-address, time-offset, routers,
	domain-name, domain-name-servers, domain-search, host-name,
	dhcp6.name-servers, dhcp6.domain-search, dhcp6.fqdn, dhcp6.sntp-servers,
	netbios-name-servers, netbios-scope, interface-mtu,
	rfc3442-classless-static-routes, ntp-servers;

#send dhcp-client-identifier 1:0:a0:24:ab:fb:9c;
#send dhcp-lease-time 3600;
#supersede domain-name "fugue.com home.vix.com";
#prepend domain-name-servers 127.0.0.1;
#require subnet-mask, domain-name-servers;
#timeout 60;
#retry 60;
#reboot 10;
#select-timeout 5;
#initial-interval 2;
#script "/sbin/dhclient-script";
#media "-link0 -link1 -link2", "link0 link1";
#reject 192.33.137.209;

#alias {
#  interface "eth0";
#  fixed-address 192.5.5.213;
#  option subnet-mask 255.255.255.255;
#}

#lease {
#  interface "eth0";
#  fixed-address 192.33.137.200;
#  medium "link0 link1";
#  option host-name "andare.swiftmedia.com";
#  option subnet-mask 255.255.255.0;
#  option broadcast-address 192.33.137.255;
#  option routers 192.33.137.250;
#  option domain-name-servers 127.0.0.1;
#  renew 2 2000/1/12 00:00:01;
#  rebind 2 2000/1/12 00:00:01;
#  expire 2 2000/1/12 00:00:01;
#}

nadim
() автор топика
Ответ на: комментарий от nadim

В этом файле раскомментируйте строчку prepend domain-name-servers 127.0.0.1;, это позволит, после переподключения сети, заиметь в файле resolv.conf ещё одну запись про DNS, адрес вместо 127.0.0.1 укажите желаемый.

Кстати, если вы хотели попробовать кеширующий DNS-сервер, то менять адрес конечно не надо. Но, возможно, у вас уже есть кеширующий сервер, типа, dnsmasq который по умолчанию часто используется NetworkManagerом, именно он может мешать запуску AdGuard DNS.

raspopov
()
Ответ на: комментарий от nadim
  1. В указанном GUI network manager'а в настройках каждого соединения (неважно, Wi-Fi, проводное, VPN ...) на вкладке IPv4 из выпадающего списка Метод выбрать «Автоматически (только адреса)».
  2. Прописать в /etc/resolv.conf нужные DNSы согласно его обычному синтаксису.
damix9 ★★★
()
Ответ на: комментарий от raspopov

Раскомментировал prepend domain-name-servers 127.0.0.1;

Указал для теста сервер Cloudflare, перегрузился… не помогло.

resolv.conf остается без изменений и после перезагрузки и после переподключения.

nadim
() автор топика
Последнее исправление: nadim (всего исправлений: 2)
Ответ на: комментарий от damix9

Выставил везде «Автоматически (только адреса)»

Прописал в /etc/resolv.conf то, что мне надо. Перегрузился…

Включаю ноут, смотрю /etc/resolv.conf - он пуст, интернет не работает. Пришлось вертать все обратно.

nadim
() автор топика
Последнее исправление: nadim (всего исправлений: 1)
Ответ на: комментарий от damix9

Завтра постараюсь посмотреть и отписаться.

nadim
() автор топика
Ответ на: комментарий от nadim

Если это не поменялось, пропишите в /etc/NetworkManager/conf.d/nodns.conf

# Do not edit /etc/resolv.conf https://www.linux.org.ru/forum/general/17033933
[main]
dns=none

damix9 ★★★
()

Не знаю поможет ли, но у меня выключен NetworkManager вообще, и написан скрипт, который вызываю каждый раз после загрузки, который копирует нужное мне содержимое в /var/run/NetworkManager/resolv.conf не забывает chmod +r на него сделать и ставит симлинк ln -s в /etc/resolf.conf

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

praseodim ★★★★★
()
Ответ на: комментарий от damix9

Нет, это не симлинк, всегда текстовый файл, не важно что я там выставил в GUI.

Попробовал для интереса прописать DNS-ки прямо в GUI: https://i.ibb.co/qyzB5w9/Screenshot-20221121-054822.png

Результат /etc/resolv.conf

# Generated by NetworkManager
nameserver 192.168.0.1
nameserver 1.1.1.1
nameserver 1.0.0.1
# NOTE: the libc resolver may not support more than 3 nameservers.
# The nameservers listed below may not be recognized.
nameserver fe80::1%wlp1s0

Как видно, даже при ручном указании адресов эта тварь дописывает DNS от себя.

При этом указанные мной DNS идут вторым и третьим приоритетом! Фактически они не будут работать =(

nadim
() автор топика
Последнее исправление: nadim (всего исправлений: 3)
Ответ на: комментарий от nadim

Как видно, даже при ручном указании адресов эта тварь дописывает DNS от себя.

Поменяй в GUI «метод» с «автоматически» на «только адреса» или как-то так. Кастомные DNS-сервера оставь.

Или то же самое через CLI: nmcli con modify <имя профиля> ipv4.ignore-auto-dns yes, nmcli con modify <имя профиля> ipv6.ignore-auto-dns yes.

Это minimal-effort решение. Параллельно рекомендую переехать на systemd-resolved. Если нужно сделать глобально для всех сетей, тоже могу расписать, но тут systemd-resolved будет уже обязателен.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 2)
Ответ на: комментарий от intelfx

Я уже так делал! Когда стоит «только адреса» файл /etc/resolv.conf становится пустым!

Да, именно файл, не симлинк. Если туда при этом что-то записать, то записанное после перезагрузки тоже удаляется!

P. S. Наверное мне надо попробовать написать на форум дебианщиков…

nadim
() автор топика
Последнее исправление: nadim (всего исправлений: 2)
Ответ на: комментарий от nadim

Я уже так делал! Когда стоит «только адреса» файл /etc/resolv.conf становится пустым!

Естественно. А теперь сделай так ещё раз и впиши в профиль свои кастомные DNS-адреса.

Да, именно файл, не симлинк. Если туда при этом что-то записать, то записанное после перезагрузки тоже удаляется!

Разумеется, им же управляет NetworkManager.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 2)
Ответ на: комментарий от intelfx

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

nadim
() автор топика
Ответ на: комментарий от nadim

Попробуй ещё раз перечитать и понять то, что я тебе написал. Они слетают не просто так, а потому что NM перезаписывает этот файл согласно своим настройкам и настройкам текущего активного профиля.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от nadim

Не совсем понимаю.

Я заметил.

Предлагаешь удалить NM?

Нет, предлагаю сделать ровно то, что я написал выше.

Ещё раз: они слетают не просто так по велению зубной феи, а потому что NM перезаписывает этот файл согласно своим глобальным настройкам и настройкам текущего активного профиля (которые, сюрприз, я и предлагаю тебе поменять так, чтобы они устанавливали интересующее тебя поведение).

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

Так я поменял! Стоит только адреса! И перезапись и слет все равно остаются!!! Даже с настройкой только адреса!!!

nadim
() автор топика
Ответ на: комментарий от nadim

Давай ты успокоишься, перестанешь писать 10 восклицательных знаков после каждого предложения и просто сделаешь оба действия из моего сообщения по ссылке выше. Оба, не одно из них на свой вкус, а оба сразу: 1 — включаешь режим конфигурации «только адреса», 2 — вписываешь желаемые адреса DNS-серверов в поле ниже.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 3)
Ответ на: комментарий от intelfx

В поле ниже? Так ты изначально говорил вписывать в /etc/resolv.conf

Если именно в поле ниже вписывать в самом GUI и там же ставить ТОЛЬКО АДРЕСА, тогда да, конечно работает.

Но в обсуждении выше я также упоминал, что я НЕ хочу вписывать настройки для каждого соединения отдельно. Хотелось бы общесистемно все сделать, чтобы если я в какой-нибудь кафешке подцепился к новой сети, мне не пришлось каждый раз все по новой настраивать.

Вотъ: Как в Debian 11 изменить DNS? (комментарий)

nadim
() автор топика
Последнее исправление: nadim (всего исправлений: 1)
Ответ на: комментарий от nadim

Так ты изначально говорил вписывать в /etc/resolv.conf

Нет, ни разу.

Но в обсуждении выше я также упоминал, что я НЕ хочу вписывать настройки для каждого соединения отдельно. Хотелось бы общесистемно все сделать, чтобы если я в какой-нибудь кафешке подцепился к новой сети, мне не пришлось каждый раз все по новой настраивать.

Не вопрос.

  1. Включаешь systemd-resolved:
systemctl enable systemd-networkd systemd-resolved
systemctl stop NetworkManager
ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
  1. Вписываешь интересующие тебя сервера в /etc/systemd/resolved.conf:
[Resolve]
DNS=<интересующие тебя DNS-сервера>
  1. Выключаешь управление DNS из NM в /etc/NetworkManager/NetworkManager.conf:
[main]
dns=none
  1. Запускаешь всё:
systemctl start systemd-networkd systemd-resolved NetworkManager

Это чуть более кривое решение, потому что так NM вообще исключается из управления DNS, даже для VPN-подключений. Как сделать так, чтобы NM исключался из управления DNS только для обычных подключений, но не для VPN — ещё думаю.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

Я VPN использую исключительно через браузерное расширение, в систему VPN ставить не планирую. Там же ничего не поломается? Если все норм. меня в принципе устроит такое решение.

Потому что я позже планирую поднять в докер контейнере прокси для DNS-over-QUIC от AdGuard и в уже системным DNS пропишу 127.0.0.1, чтобы сервис из докера проксировал обычные DNS запросы в запросы DNS-over-QUIC.

nadim
() автор топика
Последнее исправление: nadim (всего исправлений: 1)
Ответ на: комментарий от nadim

Браузерное расширение — это не VPN, а прокси. Совершенно другой класс технологий и путать одно с другим я не рекомендую. Я говорю про те VPN, которые для подключения к локальным сетям (рабочие, личные etc.).

Потому что я позже планирую поднять в докер контейнере прокси для DNS-over-QUIC от AdGuard и в уже системным DNS пропишу 127.0.0.1, чтобы сервис из докера проксировал обычные DNS запросы в запросы DNS-over-QUIC.

Рекомендую в таком случае использовать нестандартный порт, т. к. сам systemd-resolved тоже представляет собой локальный кэширующий ресолвер, который слушает на локальных адресах на порту 53. Он, конечно, слушает на 127.0.0.53, а не 127.0.0.1, как раз чтобы не конфликтовать, но мало ли.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 2)
Ответ на: комментарий от intelfx

Как обещал, вариант 2. К сожалению, глобальная конфигурация NetworkManager недостаточно гибкая для вышеописанной задачи (управление DNS в ней настраивается исключительно в режиме «всё или ничего»), поэтому представляю вашему вниманию небольшой хак.

  1. Включаешь systemd-resolved и systemd-networkd:
systemctl enable systemd-networkd systemd-resolved
systemctl stop NetworkManager
ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
  1. Для каждого интерфейса, который ты хочешь перевести на кастомные DNS-сервера, создаёшь конфигурацию systemd-networkd следующего вида в файле /etc/systemd/network/10-<имя интерфейса>.network:
[Match]
Name=<имя интерфейса>

[Link]
RequiredForOnline=no
ActivationPolicy=manual

[Network]
KeepConfiguration=yes
ConfigureWithoutCarrier=yes
IgnoreCarrierLoss=yes
DNS=<интересующие тебя DNS-сервера>
Domains=
DNSDefaultRoute=yes
  1. Запускаешь всё:
systemctl start systemd-networkd systemd-resolved NetworkManager

В результате адреса на этом интерфейсе будут настраиваться штатно через NM, а список DNS-серверов на интерфейсе (кастомный) будет принудительно задаваться из конфига systemd-networkd.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от nadim

Наверное мне надо попробовать написать на форум дебианщиков…

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

damix9 ★★★
()
Ответ на: комментарий от damix9

Я его проверил на виртуалке, оно работает. Если так сделать, что происходит?

Оно - НЕ работает, буквально, эта настройка запрещает NetworkManager перезаписывать /etc/resolv.conf, просто отключает функциональность по передаче адресов DNS-серверов из соединения в системный ресольвер.

raspopov
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.