Как я устанавливаю свой DNS, когда resolv.conf перезаписывается?

Это сообщение указывает, что ядро заметило носитель sdb. Это ни на что не указывает ни о какой файловой системе на этом носителе.

Посмотрите Автомонтируют Карты памяти без требования GUI (halevt замена) для способов автоматически смонтировать диск или сделать это вручную с утилитой, такой как pmount.

287
13.04.2017, 15:36
18 ответов

Я обнаружил, что вы можете изменить сервера имён, которые dnsmasq использует, добавив следующие строки в /etc/dnsmasq.conf:

server=8.8.8.8
server=8.8.4.4

У меня не было файла /etc/dnsmasq.conf, так как он установлен пакетом dnsmasq, но Ubuntu поставляется только с dnsmasq-базой. Я запустил sudo apt-get установил dnsmasq, затем отредактировал /etc/dnsmasq.conf, затем sudo service dnsmasq restart и sudo service network-manager restart.

Я запустил sudo tail -n 200 /var/log/syslog, чтобы проверить свой syslog и убедиться, что dnsmasq использовал серверы имен, которые я указал:

Oct 21 23:00:54 mylaptop dnsmasq[8611]: using nameserver 8.8.8.8#53
Oct 21 23:00:54 mylaptop dnsmasq[8611]: using nameserver 8.8.4.4#53
60
27.01.2020, 19:26

Я полагаю, что если вы хотите переопределить DNS-сервер имён, то просто добавьте строку, подобную этой, в вашем базовом файле под resolv.conf.d.

Пример

$ sudo vim /etc/resolvconf/resolv.conf.d/base

Затем поместите список серверов имен в следующем порядке:

nameserver 8.8.8.8
nameserver 8.8.4.4

Наконец, обновите resolvconf:

$ sudo resolvconf -u

Если посмотреть на man-страницу для resolvconf, она описывает различные файлы в папке /etc/resolvconf/resolv.conf.d/.

   /etc/resolvconf/resolv.conf.d/base
          File  containing  basic  resolver  information.  The lines in this 
          file are included in the resolver configuration file even when no
          interfaces are configured.

   /etc/resolvconf/resolv.conf.d/head
          File to be prepended to the dynamically generated resolver 
          configuration file.  Normally this is just a comment line.

   /etc/resolvconf/resolv.conf.d/tail
          File to be appended to the dynamically generated resolver 
          configuration file.  To append nothing, make this  an  empty  
          file.   This file is a good place to put a resolver options line 
          if one is needed, e.g.,

              options inet6

Несмотря на то, что в верхней части файла head имеется предупреждение:

$ cat /etc/resolvconf/resolv.conf.d/head
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN

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

Ссылки

257
27.01.2020, 19:26

Быстрый и грязный обходной путь, о котором еще не упоминалось, - установка флага неизменяемости в файле resolv.conf сразу после его редактирования.

$ sudo nano /etc/resolv.conf

Добавьте это и сохраните:

nameserver 8.8.8.8

Затем:

$ sudo chattr +i /etc/resolv.conf

Это должно помочь. Я тоже так делаю в своей системе.

14
27.01.2020, 19:26

Я также заинтересован в этом вопросе, и я попробовал решение предложить @Sim.

Чтобы проверить его, я ставлю

nameserver 8.8.8.8

в /etc/resolvConf/resolv.conf.d/base и

nameserver 8.8.4.4

в /etc/resolvconf/resolv.conf.d/ Голова

, затем я перезапустил сеть

sudo service network-manager restart

, в результате это то, что /etc/resolv.conf выглядит как

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 8.8.4.4
nameserver 127.0.1.1

, и NM-Tool утверждает, что DNSSSERVER

DNS:             208.67.222.222
DNS:             208.67.220.220

, которые являются теми, которые предоставляются моим маршрутизатором. С другой стороны, выкапывание адреса говорит, что

;; Query time: 28 msec
;; SERVER: 8.8.4.4#53(8.8.4.4)

Если я прав, я заключаю из всего этого, что

  1. только часть «голова» прочитана Resolvonf: часть «базы» как-то контролируется dnsmasq
  2. DNSSERVER на самом деле вынужден 8.8.4.4 Независимо от сервера, предоставленного DHCP, но вы потеряете кэширование, предоставляемые DNSMASQ, поскольку запрос всегда отправляется на 8,8,4,4
  3. DNSMAMSQ все еще использует только DNSServer, предоставляемый DHCP.

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

sudo vim /etc/dhcp/dhclient.conf

Затем добавьте

supersede domain-name-servers 8.8.8.8;

Результат следующий: resolv.conf содержит только 127.0.0.1, что означает, что кэш DNSMAMAQ вызывается, и NM-Tool говорит

DNS:             8.8.8.8

, что означает, что если имя искал не в Кэш, то его просят на 8.8.8.8, а не на сервере, предоставленном DHCP.

Другой (возможно, лучше) вариант состоит в том, чтобы использовать «Prefed» вместо «отменить»: таким образом, если имя не разрешено 8,8,8,8,8, то запрос обратно на другой сервер. На самом деле, NM-Tool говорит

DNS:             8.8.8.8    
DNS:             208.67.222.222
DNS:             208.67.220.220
80
27.01.2020, 19:26

Нет команды, которая дает «фактическое использование памяти процесса», поскольку нет такой вещи, как фактическое использование памяти процесса .

Каждая страница памяти процесса может быть (среди прочих отличий):

  • Переходные места хранения, используемые только этим процессом.
  • Совместно с другими процессами с использованием различных механизмов.
  • Резервная копия файла на диске.
  • В физической памяти или при замене.

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

Информация, отображаемая pmap , поступает из /proc/ PID /maps и /proc/ PID /smaps . Это реальное использование памяти процесса - его нельзя суммировать одним номером.

-121--22640-

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

Можно использовать Qemu для эмуляции процессора x86, установки системы x86, запущенной в Qemu, и настройки всей сети ВК. Это было бы большой работой, и это было бы медленно и с голодной памятью. Я говорю об этом для полноты, а не как о практическом решении.

Qemu также может использоваться для эмуляции другого процессора для прозрачного выполнения двоичного кода. Существует руководство для Debian . Я никогда этого не делал, не знаю, как легко это устроить. Обратите внимание, что большинство литературы на эту тему будет работать рука или mips или ppc на x86, вы делаете наоборот (x86 на руке).

Наиболее практичным решением является компиляция этого фильтра для вашей системы. Компиляцию можно выполнить на Pi или использовать кросс-компилятор на ПК. Существует несколько ABI для ARM, поэтому обязательно используйте кросс-компилятор для Raspbian.

Если у вас нет источника этого фильтра, спросите у производителя принтера подходящий двоичный файл или найдите альтернативный драйвер с открытым исходным кодом. В крайнем случае используйте ПК для печати.

-121--186803-

EDIT MAY 6 2016

Я написал сценарий для обновления всех настроек системных соединений в каталоге /etc/Network-Manager/system-connections/. Графический интерфейс пользователя, используемый для редактирования отдельных соединений, редактирует конкретный файл в этом каталоге. Сценарий обновляет все файлы - он просто ищет тех, у кого нет dns- набора с grep и задает его с awk.

Поскольку для доступа к этим файлам требуется доступ sudo , запустите этот сценарий с помощью sudo , а затем - перезапустите диспетчер сети

#!/bin/bash
# Author: Serg Kolo
# Date: May 6, 2015
# Description: this script checks all settings for connections in 
# /etc/NetworkManager/system-connections/ , and if there's no custom
# dns set , this script sets it;
# NOTE: run sudo service network-manager restart after running this script

set -x

for file in /etc/NetworkManager/system-connections/* ; do
        grep 'dns=208.67.220.220;' "$file"  || ( awk '{print;if ($1=="[ipv4]"){getline; print "method=auto\ndns=208.67.220.
220;\nignore-auto-dns=true"}}' "$file" > .tmpfile && ( cat .tmpfile > "$file") )
done

Сценарий в действии:

enter image description here

ORIGINAL POST Некоторые пользователи здесь указали, что DNS так или иначе управляется dnsmasq . Это действительно так. Я столкнулся с несколько меньшей проблемой, где независимо от того, как я изменил head или body в /etc/resolvconf/resolv.conf.d ,мой компьютер не мог получить доступ по имени домена - он работал только с IP-адресами.

То, что я сделал, это отредактировал файл /etc/StartManager/StartManager.conf . Первоначально он сказал dns = dnsmasq , но я изменил его на: dns = 208,67,222,222 . Хотя таким образом nm-tool не упоминает 208.67.222.222, я все же смог использовать доменные имена, а не только IP-адреса.

Вот как теперь выглядит мой файл («»),

[main]
plugins=ifupdown,keyfile,ofono
#dns=dnsmasq
dns=208.67.222.222

[ifupdown]
managed=false

ПРИМЕЧАНИЕ: Для получения более подробной информации о моей проблеме и этом решении см. мою публикацию на askubuntu.com .

UPDATE # 1

Вернувшись сегодня домой из университета, я обнаружил, что не могу подключиться к домашней сети WiFi. Я прочитал немного на man (Человек) "(Менеджер)" .conf , "и оказывается, что dns = в [main] на самом деле является строкой для плагинов, так что строка dns = dnsmasq на самом деле добавляет плагин dnsmasq, очевидно.

Так что мое решение все еще работает, так же, как я ожидал. Вот отрывок с мужской страницы:

 dns = plugin1, plugin2,... Список имен подключаемых модулей DNS, разделенных буквами,.

Подключаемые модули DNS используются для обеспечения функциональности локального сервера имен кэширования (что ускоряет DNS-запросы) и передает DNS-данные приложениям которые его используют.

Таким образом, устанавливая dns=208.67.222.222 я, возможно, в основном, препятствовал тому, чтобы NetworkManager использовал тот плагин, который был бы, иначе использовал местный сервер DNS (который, по-видимому, не работает).

1
27.01.2020, 19:26

Для статических IP ситуаций, Гид Сервера Ubuntu говорит, чтобы изменить файл/etc/network/interfaces, который может быть похожим на это:

iface eth0 inet static
address 192.168.3.3
netmask 255.255.255.0
gateway 192.168.3.1
dns-search example.com
dns-nameservers 192.168.3.45 192.168.8.10

Вы изменяете IPs 192.168.3.45 192.168.8.10 для тех, вы хотите, как 8.8.8.8

https://help.ubuntu.com/14.04/serverguide/serverguide.pdf Страница 38

22
27.01.2020, 19:26
  1. Найдите «Сетевое подключение»
  2. Откройте его

    enter image description here

  3. Затем выберите либо WiFi, либо Ethernet. , или что-то еще, что вы используете, и нажмите на редактировать. Вы получите следующее:

    enter image description here

  4. Выберите ipv4 на вкладках

  5. Выберите адреса только в методе
  6. Введите свое DNS-имя ниже и сохраните его

  7. Готово

16
27.01.2020, 19:26

Простой способ изменить DNS:

$ sudo nano /etc/network/interfaces

Если возникнут проблемы, установите nano :

$ sudo apt-get install nano -y

затем ..

  1. найдите это: dns-nameservers
  2. , если вы его не найдете, просто введите его там
  3. Я сделал это так: dns-nameservers 199.85.126.10 199.85.127.10

I Надеюсь, это лучший способ, кстати, я сделал это на VPS.

0
27.01.2020, 19:26

Моя проблема была немного другой, я хотел переопределить DNS-серверы моего маршрутизатора. Я нашел эту ссылку в Ubuntu: https://wiki.ubuntu.com/OverrideDNSServers

Там говорится: Если вы хотите переопределить настройки DNS, предоставленные вам DHCP-сервером, откройте

/etc/dhcp3/dhclient.conf

и добавьте следующую строку:

supersede domain-name-servers <dns_ip_address1>,<dns_ip_address2>;

заменив элементы на правильное содержание.

10
27.01.2020, 19:26

Попробуйте добавить DNS-серверов XXX.XXX.XXX.X в свой / etc / network / interfaces файл.

3
27.01.2020, 19:26

в корне:

  1. комментарий dns = dnsmasq на /etc/NetworkManager/NetworkManager.conf
  2. добавить заменить серверы доменных имен 4.2.2.1,4.2. 2.3,4.2.2.5,4.2.2.4,4.2.2.1,4.2.2.2; в конце /etc/dhcp/dhclient.conf
  3. sudo service network-manager restart

Следующие вносит изменения, указанные выше:

$ sudo sed -i 's/dns\x3Ddnsmasq/\x23dns\x3Ddnsmasq/' \
   /etc/NetworkManager/NetworkManager.conf

$ echo 'supersede domain-name-servers 4.2.2.1,4.2.2.3,4.2.2.5,4.2.2.4,4.2.2.1,4.2.2.2;' | \
   sudo tee --append /etc/dhcp/dhclient.conf

$ sudo service network-manager restart

Подождите 7/10 секунд, чтобы завершить процесс перезапуска, проверьте свою конфигурацию с помощью "nslookup nist.gov". Хорошо работает в Ubuntu LTS 14.04.

0
27.01.2020, 19:26

Возможно я что-то упускаю, но согласно инструкции по настройке на https://help.ubuntu.com/14.04/serverguide/network-configuration.html все, что вам нужно сделать, это обновить следующее. Я не использую прокси - просто машина за брандмауэром и локальным DNS (пример показывает Google, но настройте его на все, что вам нужно).

nano /etc/network/interfaces

По умолчанию:

# This file...
# and how to activate...

# The loopback...
auto local
iface lo inet loopback

# The primary network interface 
auto eth0
iface eth0 inet dhcp

ОБНОВЛЕНО:

# This file...
# and how to activate...

# The loopback...
auto local
iface lo inet loopback

# The primary network interface 
#iface eth0 inet dhcp
iface eth0 inet static
address x.x.x.x
netmask 255.255.255.0
gateway x.x.x.x

#nameservers
# you may not need dns-search
# I use it because I'm running this on a Windows network 
# so its useful to have
# dns-search x.y 
dns-nameservers 4.4.4.4 8.8.8.8

Перезагрузитесь, если можете.

4
20.08.2021, 12:52

Существует два метода

Метод 1

Используемый DNS-сервер можно изменить, обновив файл headв папке resolv.conf.d

.
$ echo 'nameserver 1.1.1.1' | sudo tee /etc/resolvconf/resolv.conf.d/base

, а затем запустите

$ sudo resolvconf -u

Вышеприведенное сгенерирует универсальный файл resolv.confв каталоге /etc. Все ваши запросы на разрешение будут отправлены на указанный выше сервер имен. Решено.

Однако у этого есть последствия. При использовании resolvconfдля прямого запроса 1.1.1.1для разрешения адресов мощность кэширования, предоставляемая dnsmasq, исчезает. Каждый запрос будет отправлен на1.1.1.1

Метод 2

Если вы не хотите, чтобы это произошло, и используете dnsmasq для разрешения DNS, обратитесь к этому ответу. Ответ просто описан здесь.

Добавьте следующее содержимое в файл /etc/dnsmasq.conf.

server=1.1.1.1

Затем перезапустите службу dnsmasq

$ sudo systemctl restart dnsmasq.service

Все будет хорошо. Решено.

2
20.08.2021, 12:52

NB  :Как и в большинстве ответов, здесь предполагается использование NetworkManager. Однако, в отличие от большинства других ответов, он не предполагает использования resolvconf, dhclientили чего-то еще — будьте осторожны, они могут взять верх, хотя (см. обновление ).

Учитывая количество просмотров этого вопроса, совершенно невероятно, что это 8 символов решение еще не было опубликовано :в соответствии с man NetworkManager.conf,

dns: […] none: NetworkManager will not modify resolv.conf. This implies rc-manager unmanaged

Поэтому добавьте

dns=none

в разделе [main]в /etc/NetworkManager/NetworkManager.conf, затем перезапустите NetworkManager, и он больше не будет изменять /etc/resolv.conf.

Обратите внимание, что настройка rc-manager=unmanagedдолжна быть эквивалентна dns=none, и что настройка rc-manager=symlinkвместе с /etc/resolv.confв качестве символической ссылки может быть лучшей идеей (читайте выше -упомянутую справочную страницу ).

Обновление :

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

nohook resolv.conf

в твоемdhcpcd.conf(моё находится в/etc/dhcpcd.conf).

2
20.08.2021, 12:52

Некоторые из ответов здесь работают просто отлично. Однако меня не устраивал тот факт, что мне приходится вручную просматривать файлы конфигурации только для того, чтобы установить «правильный» DNS, который я уже получаю вместо DHCPс NetworkManager.

Я немного покопался и заметил, что файл /etc/resolv.confна самом деле является ссылкой и указывает на /run/systemd/resolve/stub-resolv.conf. После некоторых экспериментов выяснилось, что в каталоге /run/systemd/resolve/находится еще один файл с именем resolv.conf, который уже содержит настройки, полученные вами через DHCP. Таким образом, вместо того, чтобы вручную перезаписывать/создавать файлы конфигурации в /etc/, вы можете просто повторно -связать /etc/resolv.conf, чтобы указать на файл /run/systemd/resolve/resolv.conf, и все должно быть в порядке :

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

Теперь вы сможете редактировать настройки даже из Network Manager в Gnome.:)

Не уверен, что это будет работать на старых версиях Ubuntu, но работает на Ubuntu 17.10.

2
20.08.2021, 12:52

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

В моем случае (Минимальный сервер Linux centos7 )с такой же ситуацией, когда я получал # Generated by NetworkManagerв верхней части файла resolv.conf, поэтому лучший способ изменить эту опцию — использовать команду

nmtui

. Вы можете редактировать серверы имен в этом инструменте, и когда вы меняете параметры networkmanager из этой утилиты, они будут автоматически применены к /etc/resolv.confпосле перезагрузки. Здесь вы можете найти дополнительную информацию .
0
20.08.2021, 12:52

Ничего в Интернете мне не помогло, потому что утилита CLI NordVPN перезаписывала /etc/resolv.confкаждый раз, когда я подключался и отключался от VPN. Он даже отменял chattr +i, что очень раздражало!!

Мне помогло полное отключение resolvconf !

Отредактируйте /etc/resolvconf.confи сделайте эту запись единственной:

resolv_conf=NO

Это специально отключает resolvconf, то есть ваш /etc/resolv.confникогда не будет изменен им. Тогда продолжайте и sudo chattr +i /etc/resolv.confдля полной меры.

Протестировано на Arch Linux.

0
20.08.2021, 12:52

В Centos 7 с помощью NetworkManager самое чистое, стабильное и работающее решение, которое мне удалось найти, — это создать сценарий NetworkManager, который использует nmcli для установки нужных мне значений.

напр.

Создать /etc/NetworkManager/dispatcher.d/mydns.shс правами 755 и следующим содержимым:

#!/usr/bin/sh

if [ $1 == "enp0s11" -a $2 == "up" ]
then
        echo "Setting my DNS ($1 is $2)" | logger

        # disable default DNS
        nmcli device mod enp0s11 ipv4.ignore-auto-dns yes

        # Substitute our own DNS, in the desired order
        nmcli device mod enp0s11 ipv4.dns "10.0.1.101 10.0.1.1"
fi

И протестировать, без перезагрузки:

systemctl restart NetworkManager.service
cat /etc/resolv.conf

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

0
20.08.2021, 12:52

Теги

Похожие вопросы