Linux下的DNS配置
Linux上的DNS使用是通过 C库中的一组例程完成的,这些例程提供对Internet域名系统(DNS)的访问。解析器配置文件(resolv.conf
)包含由解析器例程在首次被进程调用时读取的信息。简而言之,每个请求DNS的进程都将读取/etc/resolv.conf
库。NSS位于此之上,并由配置/etc/nsswitch.conf
。
Linux DNS config位于文件/etc/resolv.conf
BUT中,但是有许多程序/服务想要自动管理和处理DNS配置文件,位于/etc/resolv.conf
。在某些情况下,您可能需要自己管理此文件。每个管理DNS的程序/服务都有其自己的配置文件,例如/etc/dnsmasq.conf
(针对dnsmasq服务),并在连接更改和/或其他事件时附加DNS配置...一种快速的解决方案是使用锁定DNS配置文件,chattr +i /etc/resolv.conf
但是不建议这样做在某些情况下,更好的解决方案是使用DNS(例如dnsmasq / network-manager / resolvconf / etc)正确设置所有程序/服务。
重新获得对DNS的控制
以下是详尽的设置列表,以取回resolv.conf的控制权并避免覆盖它(如何从resolv.conf以外的其他位置禁用/设置DNS)请注意,resolvconf是独立于resolv.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
禁用resolvconf
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
使用resolvconf
$ 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
更新配置
reboot
5. DHCP客户端:
配置文件
$ cat /etc/dhcp3/dhclient.conf
supersede domain-name-servers <dns_ip_address1>,<dns_ip_address2>;
更新配置
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=""
更新配置
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