在Linux中,由于管理/etc/resolv.conf服务器的程序很多,所以当我们设置DNS时,DNS经常会被覆盖。
如何正确设置DNS?
发布于 2019-01-14 00:09:14
Linux下的
DNS在linux上的使用是通过C库中的一组例程完成的,这些例程提供对Internet域名系统(DNS)的访问。解析器配置文件(resolv.conf)包含解析器例程第一次被进程调用时读取的信息。简而言之,请求DNS的每个进程都将通过库读取/etc/resolv.conf。The NSS是在此基础上分层的,并由/etc/nsswitch.conf配置。
Linux DNS配置位于/etc/resolv.conf 文件中,但有许多程序/服务希望在/etc/resolv.conf自动管理和处理DNS配置文件。在某些情况下,您可能希望自己管理该文件。管理DNS的每个程序/服务都有自己的配置文件,如/etc/dnsmasq.conf (对于dnsmasq服务),并在连接更改和/或其他事件上追加DNS配置。一种快速的解决方案是用chattr +i /etc/resolv.conf锁定DNS配置文件,但在某些情况下不推荐这样做,更好的解决方案是使用DNS类(dnsmasq/network/resolvconf/等)正确地设置所有程序/服务。
的控制
下面是一个完整的setups列表- <#>to
配置文件
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禁用解决方案
systemctl disable --now resolvconf.service 配置文件
cat /etc/dnsmasq.conf
server=1.1.1.1
server=8.8.4.4更新配置
sudo systemctl restart dnsmasq.service配置文件
/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使用解析
$ cat /usr/lib/NetworkManager/conf.d/resolvconf.conf
[main]
rc-manager=resolvconf更新配置
systemctl restart NetworkManager.service配置文件
$ 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配置文件
$ cat /etc/dhcp3/dhclient.conf
supersede domain-name-servers ,;更新Config
reboot禁用rdnssd
systemctl disable --now rdnssd.service禁用已解决
systemctl disable --now systemd-resolved.service配置文件
/etc/sysconfig/network/config禁用netconfig
cat /etc/sysconfig/network/config
NETCONFIG_DNS_POLICY=""更新Config
reboot/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发布于 2022-11-01 05:38:00
在36岁的Fedora上我做了:
# print existing DNS settings for all interfaces
$ resolvectl dns
# set new DNS
$ resolvectl dns enp0s22f6 8.8.8.8 8.8.4.4
# check again
$ resolvectl dnshttps://unix.stackexchange.com/questions/494324
复制相似问题