Как отключить systemd-resolve в linux

Содержание:

LinuxPPC и MkLinux

Следующая секция была написана R. Shapiro

С выпуска «1999» (R5) release, Linuxppc почти полностью совместим с Redhat 6, с одной оговоркой (смотрите ниже). В общем, инструкции точно такие же, как и для текущего выпуска .

Остается та проблема, что Redhat 6 по умолчанию использует ‘pump’ клиент для dhcp, а ‘pump’ не надежно работает на Linuxppc. Чтобы это обойти, вам следует установить последнюю версию dhcpcd от Sergei Viznyuk, и отредактировать /sbin/ifup для использования dhcpcd вместо pump.

Измените

if ; then
     PUMP=true
 fi

 if ; then

на

 if ; then
       echo " done."
     else
       echo " failed."
       exit 1
     fi
 elif ; then
     echo -n "Determining IP information for $DEVICE..."
     if /sbin/dhcpcd -d $DEVICE ; then
       if [ -f /etc/dhcpc/dhcpcd-${DEVICE}.exe ]; then
           /etc/dhcpc/dhcpcd-${DEVICE}.exe
       fi

и внесите соответствующие изменения для ifdown. Измените

if ; then
....
fi

на

if ; then
fi

if ; then
      if [ -f /var/run/dhcpcd-${DEVICE}.pid ]; then
              kill `cat /var/run/dhcpcd-${DEVICE}.pid`
              rm -f /var/run/dhcpcd-${DEVICE}.pid
      fi
fi

Пытаемся все совместить

После перезагрузки вашей машины ваш сетевой интерфейс должен быть настроен.
Наберите: ifconfig.

Вы должны получить нечто подобное:

          lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Bcast:127.255.255.255  Mask:255.0.0.0
          UP BROADCAST LOOPBACK RUNNING  MTU:3584  Metric:1
          RX packets:302 errors:0 dropped:0 overruns:0 frame:0
          TX packets:302 errors:0 dropped:0 overruns:0 carrier:0 coll:0

eth0      Link encap:Ethernet  HWaddr 00:20:AF:EE:05:45
          inet addr:24.128.53.102  Bcast:24.128.53.255  Mask:255.255.254.0
          ^^^^^^^^^^^^^^^^^^^^^^^
          UP BROADCAST NOTRAILERS RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:24783 errors:1 dropped:1 overruns:0 frame:1
          TX packets:11598 errors:0 dropped:0 overruns:0 carrier:0 coll:96
          Interrupt:10 Base address:0x300 

Если у вас разумные числа в поле inet addr, вы уже настроились. Если вы видите 0.0.0.0 ‐ не отчаивайтесь, это временные настройки, перед тем как dhcpcd получит IP адрес. Если через несколько минут, вы все равно видите 0.0.0.0, то загляните в . DHCPcd ‐ демон, и должен быть запущен все время, пока работает ваша машина. Каждые три часа он связывается с DHCP сервером и пытается продлить аренду используемого IP адреса. Он регистрирует все сообщения в syslog (в Slackware /var/adm/syslog, в RedHat/OpenLinux /var/log/syslog).

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

Я решаю использовать DHCPcd resolv.conf и выполняю следующее:

Сохраните ваш старый /etc/resolv.conf: mv /etc/resolv.conf /etc/resolv.conf.OLD

Если каталог /etc/dhcpc не существует — создайте его: mkdir /etc/dhcpc

Создайте ссылку с /etc/dhcpc/resolv.conf на /etc/resolv.conf: ln -s /etc/dhcpc/resolv.conf /etc/resolv.conf

Если это не помогает, попробуйте это (решение предоставлено <nothing@cc.gatech.edu> с небольшими поправками от Henrik Stoerner):

Этот последний шаг я выполнил только из-за того, что мой dhcpcd не создает /etc/dhcpc/resolv.conf. Я сделал следующие изменения в /etc/sysconfig/network-scripts/ifup (это очень грубый взлом, но так у меня все работает):

elif ; then
    echo -n "Using DHCP for ${DEVICE}... "
    /sbin/dhcpcd -c /etc/sysconfig/network-scripts/ifdhcpc-done ${DEVICE}
    echo "echo \$$ > /var/run/dhcp-wait-${DEVICE}.pid; exec sleep 30" | sh

    if [ -f /var/run/dhcp-wait-${DEVICE}.pid ]; then
	^^^^
        echo "failed."
        exit 1

Я изменил на:

elif ; then
    echo -n "Using DHCP for ${DEVICE}... "
    /sbin/dhcpcd
    echo "echo \$$ > /var/run/dhcp-wait-${DEVICE}.pid; exec sleep 30" | sh

    if [ ! -f /var/run/dhcp-wait-${DEVICE}.pid ]; then
	^^^^^^
       echo "failed."
       exit 1
   

COLOPHON top

       This page is part of release 5.08 of the Linux man-pages project.  A
       description of the project, information about reporting bugs, and the
       latest version of this page, can be found at
       https://www.kernel.org/doc/man-pages/.

4th Berkeley Distribution        2020-08-13                   RESOLV.CONF(5)

Pages that refer to this page:
pmdanetcheck(1), 
pmhostname(1), 
dn_comp(3), 
dn_expand(3), 
res_init(3), 
res_mkquery(3), 
res_nclose(3), 
res_ninit(3), 
res_nmkquery(3), 
res_nquery(3), 
res_nquerydomain(3), 
res_nsearch(3), 
res_nsend(3), 
resolver(3), 
res_query(3), 
res_querydomain(3), 
res_search(3), 
res_send(3), 
hosts(5), 
hostname(7)

systemd-resolved[править]

systemd-resolved — это по сути маленький локальный кэширующий dns-сервер, принимающий запросы на 127.0.0.53:53. Его можно с натяжкой сравнить с dnsmasq, unbound, knot-reolver (конечно, они гораздо мощнее и гибче), но он умеет, например, DNSSEC и DNS-Over-TLS.

Кроме этого, он предоставляет API для взаимодействия напрямую через вызовы библиотеки, а не через запросы по UDP.

Добавив в nsswitch.conf

hosts: resolve

(пакет libnss-resolve),
мы сможем резолвить имена без (/lib{,64}/libnss_dns.so) и без обращения к /etc/resolv.conf. /etc/resolv.conf он тоже умеет читать, но никак его не модифицирует.

Скажем так, у systemd-resolved свой resolv.conf, который находится в /run/systemd/resolve. И не один.

Чтобы glibc продолжал работать с nss-модулем dns, systemd-resolved может предоставить для него resolv.conf

а) статический /lib/systemd/resolv.conf в котором указан nameserver 127.0.0.53.

сделав симлинк /etc/resolv.conf → /lib/systemd/resolv.conf, мы укажем нашей системе использовать systemd-resloved как локальный сервер DNS.

б) сгенерированный /run/systemd/resolve/stub-resolv.conf

Вот на него более правильно делать симлинк /etc/resolv.conf. В нём также указан nameserver 127.0.0.53, но еще могут быть указаны домены поиска:

search example.com
в) сгенерированный /run/systemd/resolve/resolv.conf

В нём указаны реальные серверы DNS. Т. е., скопировав в /etc/resolv.conf (или симлинк), приложения (glibc nss-dns) перестанут использовать локальный кэширующий dns-сервер systemd-resolved и начнут напрямую использовать указанные серверы.

Информация в этот сгенерированный файл попадает из файлов /etc/systemd/network/*.network и /etc/systemd/resolved.conf (DNS=…, Domains=…)

Эти же данные используются и для работы самого systemd-resolved.

Troubleshooting

systemd-resolved not searching the local domain

systemd-resolved may not search the local domain when given just the hostname, even when or is present in the appropriate systemd-networkd’s .network file, and that file produces the expected in . You can run or to check if the search domains are actually being picked up.

Possible workarounds:

  • Disable to let systemd-resolved immediately continue with appending the DNS suffixes
  • Trim ‘s database (e.g., by removing option after service)
  • Switch to using fully-qualified domain names
  • Use to resolve hostnames
  • Fall back to using glibc’s instead of using systemd’s

Glibc resolver

The glibc resolver reads for every resolution to determine the nameservers and options to use.

lists nameservers together with some configuration options.
Nameservers listed first are tried first, up to three nameservers may be listed. Lines starting with a number sign () are ignored.

Note: The glibc resolver does not cache queries. To improve query lookup time you can set up a caching resolver. Glibc resolver also can not validate DNSSEC. A DNSSEC capable validator resolver is required for that one. See for more information.

Overwriting of /etc/resolv.conf

Network managers tend to overwrite , for specifics see the corresponding section:

To prevent programs from overwriting , it is also possible to write-protect it by setting the immutable file attribute:

# chattr +i /etc/resolv.conf

Tip: If you want multiple processes to write to , you can use resolvconf.

Limit lookup time

If you are confronted with a very long hostname lookup (may it be in pacman or while browsing), it often helps to define a small timeout after which an alternative nameserver is used. To do so, put the following in .

options timeout:1

Local domain names

To be able to use the hostname of local machine names without the fully qualified domain name, add a line to with the local domain such as:

domain example.org

That way you can refer to local hosts such as as simply when using the ssh command, but the command still requires the fully qualified domain names in order to perform lookups.

Privacy and security

The DNS protocol is unencrypted and does not account for confidentiality, integrity or authentication, so if you use an untrusted network or a malicious ISP, your DNS queries can be eavesdropped and the responses manipulated. Furthermore, DNS servers can conduct DNS hijacking.

You need to trust your DNS server to treat your queries confidentially. DNS servers are provided by ISPs and . Alternatively you can run your own , which however takes more effort. If you use a DHCP client in untrusted networks, be sure to set static name servers to avoid using and being subject to arbitrary DNS servers. To secure your communication with a remote DNS server you can use an encrypted protocol, like DNS over TLS (RFC 7858), DNS over HTTPS (RFC 8484), or DNSCrypt, provided that both the upstream server and your support the protocol. An alternative can be a dedicated software to encrypt and decrypt the communication, such as stunnel. To verify that responses are actually from authoritative name servers, you can validate DNSSEC, provided that both the upstream server(s) and your support it.

Настройка DNS в Debian

Сперва мы ознакомимся с файлом /etc/resolv.conf. Это — это основной файл настройки библиотеки распознавателя имен DNS. Распознаватель — это библиотека на языке Cи, именно она обеспечивает доступ к DNS для программ в системе.

Его функции настроены на следующее:

  • На проверку записей в файле /etc/hosts или на нескольких серверах DNS;
  • На использование базы данных хостов NIS (Информационная служба сети);

В современных Linux-системах, которые используют systemd, локальные приложения получают доступ к DNS через демон system-resolved. По умолчанию эта служба имеет четыре различных режима и использует по умолчанию файл-заглушку. Его путь: /run/systemd/resolve/stub-resolv.conf.

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

К сожалению, из-за того, что /etc/resolv.conf не прямо управляется службой systemd-resolved, а иногда с помощью использования initscripts или NetworkManager, любые пользовательские изменения НЕ будут сохранены. С учетом всех сложностей, описанных выше, я хочу поделиться с вами информацией о том, как настроить DNS на Debian в этом злополучном файле /etc/resolv.conf.

Шаг 1. Содержимое /etc/resolv.conf

Чтобы это сделать мы откроем терминал и напишем команду:

В нем мы видим имя сервера nameserver 192.168.1.1 и больше ничего. Это пока что, но мы к нему вернемся.

Шаг 2. Установка resolvconf

Обязательно обновим систему с помощью команды:

После обновления устанавливаем resolvconf. Для этого пишем команду:

После установки система должна автоматически запустить службу resolvconf.service. Чтобы проверить так ли это вам надо будет использовать команду:

Здесь мы видим, что служба не запущена, но бывает, что триггер срабатывает автоматически. Так или иначе, нам надо запустить эту службу. Используем следующие команды:

Как вы поняли, с помощью sudo systemctl start resolvconf.service и sudo systemctl enable resolvconf.service мы запускаем службу, а sudo systemctl status resolvconf.service отобразит состояние активности этой службы.

Шаг 3. Настройка DNS

Теперь откройте файл /etc/resolvconf/resolv.conf.d/head. Делается это с помощью команды:

Прекрасно, следующим шагом будет внесение данных в этот файл. Вписываем в него следующие строки так, как это показано на скриншоте:

Сохраняем изменения с помощью ctrl+o -> Enter -> ctrl+x. Теперь надо перезагрузить систему, чтобы изменения пришли в действие.

Шаг 4. Проверяем файл /etc/resolv.conf

После перезагрузки снова открываем терминал и пишем команду для запуска службы (это вторичная мера, у меня, например, триггер сработал автоматически):

Видим, что служба запущена. Переходим в наш конфигурационный файл, который был описан в самом начале статьи. Используем команду:

На скриншоте отображены те самые данные, которые мы внесли в файл — nameserver 8.8.8.8 и nameserver 8.8.4.4 На этом все! Настройка DNS Debian завершена. Достаточно легко и просто, а главное, что все работает.

Настройка кеширующего DNS-клиента systemd-resolved в Debian GNU/Linux 9 (Stretch)

В составе systemd, используемой в конфигурации по умолчанию в Debian GNU/Linux 9 имеется отдельная служба, отвечающая за разрешение имён с возможностью кэширования результатов запросов с внешних DNS-серверов — systemd-resolved.

Поэтому, если нужно ускорить работу механизма разрешения имён, например с корпоративных DNS-серверов, нет необходимости устанавливать и настраивать специальные пакеты типа dnsmasq, а достаточно лишь выполнить настройку systemd-resolved.

В конфигурации по умолчанию данная служба не запущена:

# systemctl status systemd-resolved● systemd-resolved.service - Network Name Resolution
   Loaded: loaded (/lib/systemd/system/systemd-resolved.service; disabled...)
  Drop-In: /lib/systemd/system/systemd-resolved.service.d
           └─resolvconf.conf
   Active: inactive (dead)...

Установим модуль nss-resolve (библиотека libnss_resolve.so из пакета libnss-resolve) для механизма Name Service Switch (NSS), который будет вызывать службу systemd-resolved для разрешения имён:

# apt-get install libnss-resolve

В процессе установки в конфигурационном файле строка будет автоматически заменена на следующий вид:

nsswitch.conf
...
hosts:          files resolve !UNAVAIL=return dns
...

Настроим конфигурационный файл , заполнив параметры секции , например следующим образом:

resolved.conf
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.
#
# Entries in this file show the compile time defaults.
# You can change settings by editing this file.
# Defaults can be restored by simply deleting this file.
#
# See resolved.conf(5) for details
 
Resolve
DNS=10.1.0.9 10.2.0.8
#FallbackDNS=8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:4860::8844
Domains=my.holding.com
LLMNR=no
DNSSEC=no
Cache=yes
DNSStubListener=no

Для совместимости с приложениями, которые не используют библиотечные вызовы, а обращаются к DNS серверам напрямую, получая их из , создадим символическую ссылку на файл ,
контент которого автоматически генерируется исходя из настроек, заданных нами в :

# ln -svi /run/systemd/resolve/resolv.conf /etc/resolv.conf
ln: replace '/etc/resolv.conf'? y
'/etc/resolv.conf' -> '/run/systemd/resolve/resolv.conf'

Проверим линковку:

# ls -la /etc/resolv.conf
lrwxrwxrwx 1 root root 32 Dec 11 16:22 /etc/resolv.conf -> /run/systemd/resolve/resolv.conf

Теперь осталось только включить автозагрузку службы и запустить её:

# systemctl enable systemd-resolved
# systemctl restart systemd-resolved
# systemctl status systemd-resolved

Дополнительные источники информации:

  • man systemd-resolved.service
  • HippoLab — Переходим на systemd-resolved

Проверено на следующих конфигурациях:

Версия ОС
Debian GNU/Linux Stretch 9.3

Автор первичной редакции:Алексей Максимов
Время публикации: 27.12.2017 11:29

Поиск неисправностей

Если вы следовали вышеприведенным шагам и не можете получить доступ к вашей сети, этому есть еще несколько возможных объяснений:

Не правильно настроена Ваша сетевая карта

В процессе загрузки ваш Linux будет определять вашу сетевую карту и должен сказать что-то подобное:

eth0: 3c509 at 0x300 tag 1, 10baseT port, address  00 20 af ee 11 11, IRQ 10.
3c509.c:1.07 6/15/95 becker@cesdis.gsfc.nasa.gov

Если подобное этому сообщение не появляется, ваша сетевая карта, возможно, не распознается Linux системой. Если у вас обобщенная сетевая карта (клон NE2000), вы должны получить диск с DOS утилитами, которыми вы сможете настроить вашу карту. Попробуйте поиграть с IRQ, пока Linux не распознает вашу карту (обычно подходят IRQ 9,10,12).

Ваш DHCP сервер поддерживает RFC 1541/Мой DHCP сервер ‐ Windows NT

Попробуйте запустить dhcpcd, набрав dhcpcd -r.

Для проверки настроек вашего сетевого интерфейса используйте ifconfig (подождите несколько секунд для завершения процесса настройки, сначала она выдаст Inet.addr=0.0.0.0)

Если это решит вашу проблему, добавьте ключ «-r» в загрузочный скрипт, т.е: вместо /sbin/dhcpcd вы получите /sbin/dhcpcd -r.

Например, под RedHat отредактируйте /etc/sysconfig/network-scripts/ifup и вставьте следующее:

        IFNAME=$[ {DEVICE} \
        "/sbin/dhcpcd -r -c /etc/"- etc etc.    
	

Моя сеть работает несколько минут, а затем прекращает отвечать

Некоторые люди сообщают, что gated (демон маршрутизации) искривляет маршрутизацию на Linux машинах, что приводит к описанной выше проблеме. Проверьте, запущен ли он у вас, запустив: ps -auxww | grep gate.

Если запущен, попробуйте удалить его с помощью RedHat RPM менеджера пакетов или удалить элемент в каталоге /etc/rc.d/.

Вы должны проверить, что на вашей сетевой карте активирован 10BaseT порт («телефонный» разъем). Лучше всего это узнать, проверив какой тип соединителя вашей сетевой карты настроен в процессе загрузки, т.е.

eth0: 3c509 at 0x300 tag 1, 10baseT port, address  00 20 af ee 11 11, IRQ 10.
		            ^^^^^^^^^^^^
3c509.c:1.07 6/15/95 becker@cesdis.gsfc.nasa.gov

Мне сообщали, что проблема такого рода встречается у пользователей ноутбуков из-за PCMCIA утилит (особенно ifport), которые хотят установить тип соединителя на 10Base2 (тонкий коаксиальный кабель). Вы должны проверить, что для вашего соединения вы используете 10BaseT. Если это не так, перенастройте карту и перезапустите компьютер.

Я следовал всем шагам, но моя машина все еще не способна соединиться

Кабельные модемы обычно запоминают ethernet адрес вашей сетевой карты, так что если вы подключаете новый компьютер или переключаете сетевые карты, вы должны как-то «научить» ваш кабельный модем распознавать новый компьютер/карту. Обычно вы можете выключить и снова включить ваш модем при включенном компьютере или позвонить в службу технической поддержки и сказать им, что вы заменили сетевую карту в компьютере.

У вас есть правила firewall (правила ipfwadm), которые запрещают трафик по портам 67/68, которые используются DHCP для распространения информации о настройках. Тщательно проверьте правила вашего firewall.

Making /etc/resolv.conf immutable

This approach will render /etc/resolv.conf immutable so that it cannot be changed, regardless of what packages are installed or what tries to modify it.

rm -f /etc/resolv.conf
editor /etc/resolv.conf
chattr +i /etc/resolv.conf

Obviously, you will need to put the appropriate content into the file before setting the immutable bit. Any time you wish to change the file, you will have to remove the bit, make your change, and then restore the bit.

A consequence of making /etc/resolv.conf immutable is that if dhclient-script tries to change it and fails, it clutters /etc with temporary files. See for details. The user/admin may need to periodically clean these files out of /etc until #860928 is fixed.

Причины ошибок в файле Etc_resolv_conf.scr

Проблемы Etc_resolv_conf.scr могут быть отнесены к поврежденным или отсутствующим файлам, содержащим ошибки записям реестра, связанным с Etc_resolv_conf.scr, или к вирусам / вредоносному ПО.

Более конкретно, данные ошибки etc_resolv_conf.scr могут быть вызваны следующими причинами:

  • Поврежденные ключи реестра Windows, связанные с etc_resolv_conf.scr / Suse Linux 10.0.
  • Вирус или вредоносное ПО, которые повредили файл etc_resolv_conf.scr или связанные с Suse Linux 10.0 программные файлы.
  • Другая программа злонамеренно или по ошибке удалила файлы, связанные с etc_resolv_conf.scr.
  • Другая программа находится в конфликте с Suse Linux 10.0 и его общими файлами ссылок.
  • Поврежденная загрузка или неполная установка программного обеспечения Suse Linux 10.0.

Настройка службы resolvconf.service

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

# apt install resolvconf

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

$ cat /etc/resolv.conf
nameserver 127.0.0.53
option edns0

При этом исходный файл (который на самом деле ссылка на ) будет сохранен как в директории . В этой же директории есть есть еще три файла — , и — которые позволяют вручную добавить записи в динамически формируемый .

/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

Теперь добавим пару записей в файл (сервера OpenDNS):

# nano /etc/resolvconf/resolv.conf.d/tail
# сервера DNS от OpenDNS
nameserver 208.67.222.222
nameserver 208.67.220.220

Перезагрузим службу и посмотрим сформированный :

# systemctl restart resolvconf.service
$ cat /etc/resolv.conf
nameserver 127.0.0.53
# сервера DNS от OpenDNS
nameserver 208.67.222.222
nameserver 208.67.220.220

Первая запись — это резолвер , а две другие записи были добавлены в конец из файла . Благодаря тому, что первая запись это — резолвинг будет работать быстро, потому что кеширует ответы DNS-серверов.

$ nslookup ya.ru
Server:     127.0.0.53
Address:    127.0.0.53#53

Non-authoritative answer:
Name:   ya.ru
Address: 87.250.250.242
Name:   ya.ru
Address: 2a02:6b8::2:242

Но если мы остановим службу , резолвинг все равно будет работать, используя сервера и — хотя и гораздо медленнее.

# systemctl stop systemd-resolved.service
# systemctl disable systemd-resolved.service
# reboot
$ cat /etc/resolv.conf
# сервера DNS от OpenDNS
nameserver 208.67.222.222
nameserver 208.67.220.220
$ nslookup ya.ru
Server:     208.67.222.222
Address:    208.67.222.222#53

Non-authoritative answer:
Name:   ya.ru
Address: 87.250.250.242
Name:   ya.ru
Address: 2a02:6b8::2:242

Configuring dhclient

The most common daemon which overwrites resolv.conf is dhclient(8) (from isc-dhcp-client). In many cases, simply stopping this one daemon from touching the file will suffice.

Stop dhclient from modifying /etc/resolv.conf

Another approach makes use of dhclient-script’s hook scripts. According to dhclient-script(8):

When it starts, the client script first defines a shell function, make_resolv_conf , which is later used to create the /etc/resolv.conf file. To override the default behaviour, redefine this function in the enter hook script.

Therefore, we can stop dhclient from overwriting resolv.conf by doing the following:

echo 'make_resolv_conf() { :; }' > /etc/dhcp/dhclient-enter-hooks.d/leave_my_resolv_conf_alone
chmod 755 /etc/dhcp/dhclient-enter-hooks.d/leave_my_resolv_conf_alone

The execute bit is required because dhclient-script uses run-parts(8) to decide which files to read. For that same reason, the filename must not contain anything but letters, digits, underscores and hyphens.

Modifying /etc/dhcp/dhclient.conf

The /etc/dhcp/dhclient.conf file can be populated with directives that will override the options sent by the DHCP server. For example, these directives will override the domain, search, and nameserver parameters that are placed into /etc/resolv.conf:

supersede domain-name "example.com";
supersede domain-search "example.com";
supersede domain-name-servers 127.0.0.1;

Another option is to remove «domain-name, domain-name-servers, domain-search» from the request line. However, this only works on some networks, and not on others. If the DHCP server sends unsolicited domain-name-servers (et al.) responses, dhclient will still heed them, and will still overwrite the resolv.conf file.

Распространенные сообщения об ошибках в Etc_resolv_conf.scr

Наиболее распространенные ошибки etc_resolv_conf.scr, которые могут возникнуть на компьютере под управлением Windows, перечислены ниже:

  • «Ошибка в файле Etc_resolv_conf.scr.»
  • «Отсутствует файл Etc_resolv_conf.scr.»
  • «Etc_resolv_conf.scr не найден.»
  • «Не удалось загрузить Etc_resolv_conf.scr.»
  • «Не удалось зарегистрировать etc_resolv_conf.scr.»
  • «Ошибка выполнения: etc_resolv_conf.scr.»
  • «Ошибка загрузки etc_resolv_conf.scr.»

Такие сообщения об ошибках SCR могут появляться в процессе установки программы, когда запущена программа, связанная с etc_resolv_conf.scr (например, Suse Linux 10.0), при запуске или завершении работы Windows, или даже при установке операционной системы Windows

Отслеживание момента появления ошибки etc_resolv_conf.scr является важной информацией при устранении проблемы

LLMNR в systemd-resolved

Отдельного упоминания заслуживает поддержка в systemd-resolved протокола LLMNR (Link-Local Multicast Name Resolution). Этот протокол позволяет узлам в одной сети (широковещательном домене) обращаться друг к другу по имени хоста, не прибегая к услугам DNS вообще. Работает это следующим образом: какая-нибудь программа пытается обратиться к хосту в своей сети по имени, используя, как мы уже упоминали, библиотечные вызовы; локальный DNS-резолвер, как например герой нашей статьи — systemd-resolved, сначала попытается найти запрашиваемый хост в своей сети, делая групповой запрос на адрес 224.0.0.252 для ipv4 и FF02::1:3 для ipv6; если в сети есть хосты с поддержкой LLMNR и среди них окажется тот, имя которого будет соответствовать запрашиваемому, systemd-resolved незамедлительно вернет запрашивающей программе IP-адрес интересующего ее хоста

Однако стоит заметить, что для работы этого протокола очень важно правильно конфигурировать hostname на каждом компьютере в сети. Вы должны использовать короткую нотацию — не FQDN

В linux имя хоста указывается в /etc/hostname. Вы также можете использоать команду ‘hostnamectl set-hostname NAME’ для горячего изменения hostname компьютера. Ну и конечно же, LLMNR должен быть включен в вашем systemd-resolved. Это можно проверить по выводу команды ss:

Да, стандартный порт LLMNR — 5355 для TCP и UDP. Если вы обнаружили, что LLMNR порт никем не слушается, проверьте настройки в файле /etc/systemd/resolved.conf — LLMNR должен быть выставлен в «yes».

В завершении статьи небольшое отступление, советы по использованию:

Организация собственного сервера имен: демон named

    Если, будучи администратором сети, вы решили организовать в ней сервер имен, то
можно конфигурировать на работу в качестве такого сервера любую Linux-систему. Для этого необходимо
запустить демон named. Этот демон запускается одновременно с системой
и ожидает запросов о доменных именах. Демон named пользуется несколькими
файлами конфигураци которые позволяют ему отвечать на запросы. В файле
named.boot
указывается домен, который обслуживает данный сервер, и имя каталога,
предназначенного для его рабочих файлов. В файле named.hosts хранится
информация об этом домене. Она состоит из Записей, содержащих сведения о хост-компьютерах,
находящихся в данном домене. В этих записях используется весьма специфический формат, с кодами
в соответствующих полях. Файл named.rev содержит данные о соответствии
между IP-адресами и хост-именами. Файл named.ca организует кэширование
для сервера имен. Процесс организации собственного сервера имен может быть довольно сложным.
Следует обратиться к документам HOW TO, странице
диалогового руководства по программе named и литературе по
администрированию сети, включающей в свой состав Linux-системы.

Спонсоры:

Хостинг:

Maxim ChirkovДобавить, Поддержать, Вебмастеру

Debian

Существует deb пакет DHCPcd (проверьте, чтобы он начинался с dhcpcd) на:

Либо, следуйте инструкциям по установке .

Для распаковки deb пакета наберите dpkg -i /where/ever/your/debian/packages/are/dhcpcd*deb.

Кажется, что больше не требуется никаких настроек для DHCPcd, потому как:

 

Пакет dhcpcd устанавливает свой стартовый скрипт как обычно для debian пакетов в /etc/init.d/package_name, то есть /etc/init.d/dhcpcd, и создает ссылки на него из различных /etc/rc?.d/ каталогов.

 
—From: Heiko Schlittermann
<heiko@os.inf.tu-dresden.de>
 

Содержимое каталогов /etc/rc?.d/ в дальнейшем исполняется при загрузке.

Если вы не перегружались после установки, вы можете запустить демон вручную: /etc/init.d/dhcpcd start.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *