Налаштування DNS під Linux
Використання DNS в Linux відбувається через набір процедур у бібліотеці C, які забезпечують доступ до системи доменних імен Internet (DNS). Файл конфігурації резольвера ( resolv.conf
) містить інформацію, яку читає підпрограм розв'язувача під час першого виклику процесом. Коротше кажучи, кожен процес, який запитує DNS, читатиме /etc/resolv.conf
бібліотеку. NSS шарується поверх цього і налаштовується /etc/nsswitch.conf
.
Конфігурація DNS Linux розміщена у файлі, /etc/resolv.conf
Але є ряд програм / служб, які хочуть автоматично керувати файлом конфігурації DNS та керувати ним /etc/resolv.conf
. У деяких ситуаціях ви можете самостійно керувати цим файлом. Кожна програма / служба, що керує DNS, має свої власні файли конфігурації, такі як /etc/dnsmasq.conf
(для служби dnsmasq) і додають конфігурацію DNS при зміні з'єднання та / або в інших подіях ... швидке рішення - заблокувати файл конфігурації DNS, chattr +i /etc/resolv.conf
але це не рекомендується у певному випадку кращим рішенням є правильне налаштування всіх програм / служб за допомогою DNS на зразок (dnsmasq / network-manager / resolutionvconf / тощо).
Повернення контролю над DNS
Ось вичерпний список налаштувань, щоб повернути контроль над resv.conf і уникнути його перезапису ( як відключити / налаштувати DNS з іншого місця, крім резолюції.conf ), зауважте, що резольконф також є незалежною програмою від resoluv.conf, також залежно від вашої системи / конфігурації, можливо, у вас немає однієї або багатьох перерахованих тут програм.
1. Resolvconf:
Налаштування файлів
cat /etc/resolvconf/resolv.conf.d/head
nameserver 8.8.4.4
cat /etc/resolvconf/resolv.conf.d/base
nameserver 8.8.4.4
Оновіть конфігурацію
sudo resolvconf -u
Вимкнути резолюціюconf
systemctl disable --now resolvconf.service
2. Служба Dnsmasq:
Налаштування файлів
cat /etc/dnsmasq.conf
server=1.1.1.1
server=8.8.4.4
Оновіть конфігурацію
sudo systemctl restart dnsmasq.service
3. Менеджер мережі:
Налаштування файлів
/etc/NetworkManager/*
Вимкнути DNS
$ cat /etc/NetworkManager/conf.d/no-dns.conf
[main]
dns=none
Увімкнути DNS
$ cat /etc/NetworkManager/conf.d/dns.conf
[main]
dns=default
[global-dns]
searches=example.com
[global-dns-domain-*]
Скористайтеся вирішеною послугою
$ cat /usr/lib/NetworkManager/conf.d/resolved.conf
[main]
dns=systemd-resolved
Використовуйте резолюціюconf
$ cat /usr/lib/NetworkManager/conf.d/resolvconf.conf
[main]
rc-manager=resolvconf
Оновіть конфігурацію
systemctl restart NetworkManager.service
4. Мережеві інтерфейси:
Налаштування файлів
$ cat /etc/network/interfaces
#nameservers
# or dns-search like so
# dns-search x.y
dns-nameservers 4.4.4.4 8.8.8.8
Оновіть Config
reboot
5. Клієнт DHCP:
Налаштування файлів
$ cat /etc/dhcp3/dhclient.conf
supersede domain-name-servers <dns_ip_address1>,<dns_ip_address2>;
Оновіть Config
reboot
6. Служба Rdnssd:
Вимкнути rdnssd
systemctl disable --now rdnssd.service
7. Розв’язана послуга:
Відключити вирішено
systemctl disable --now systemd-resolved.service
8. Netconfig:
Налаштування файлів
/etc/sysconfig/network/config
Вимкнути netconfig
cat /etc/sysconfig/network/config
NETCONFIG_DNS_POLICY=""
Оновіть Config
reboot
Налаштування DNS-сервера
Приклад /etc/resolv.conf
конфігурації
#Cloudflare
nameserver 1.0.0.1
#Google
#nameserver 8.8.8.8
#nameserver 8.8.4.4
#Cloudflare
#nameserver 1.1.1.1
#Classic Config
#nameserver 192.168.1.1
#search lan