Ubuntu 20.04设置DNS解析(解决resolve.conf被覆盖问题)
发表于:2024-02-29 |

1.众所周知:

    Ubuntu在域名解析时,最直接使用的是/etc/resolve.conf文件,它是/run/systemd/resolve/
  • resolve.conf的软链接,而对于刚装完的ubuntu系统,该文件的内容如下:

# This file is managed by man:systemd-resolved(8). Do not edit.
#
# This is a dynamic resolv.conf file for connecting local clients to the
# internal DNS stub resolver of systemd-resolved. This file lists all
# configured search domains.
#
# Run "resolvectl status" to see details about the uplink DNS servers
# currently in use.
#
# Third party programs must not access this file directly, but only through the
# symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,
# replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.
 
nameserver 127.0.0.53
options edns0 trust-ad

问题分析:

很显然,我们需要做的就是在/etc/resolve.conf中,配置我们需要的域名解析服务器地址,例如:“nameserver 8.8.8.8”,但是这个文件即使我们修改了,很快又会被覆盖,而且我们注意一个细节——文件的开头就注明了“Do not edit”,到了这里,我们就应该反应过来,直接修改/etc/resolve.conf是不正确的。

解决方案:

  • 1 第1步, 修改/etc/systemd/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=8.8.8.8 114.114.114.114
#FallbackDNS=
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#DNSOverTLS=no
#Cache=no-negative
#DNSStubListener=yes
#ReadEtcHosts=yes
   个人猜测,这个时候,系统在往/run/systemd/resolve/resolv.conf里面写域名解析服务器地址的时候,会从/etc/systemd/resolved.conf中取得DNS相关的配置。
  • 2 重启域名解析服务

           systemctl restart systemd-resolved
           systemctl enable systemd-resolved
           
    
  • 3 备份当前的/etc/resolve.conf,并重新设置/run/systemd/resolve/resolv.conf 到/etc/resolve.conf的软链接

           mv    /etc/resolv.conf    /etc/resolv.conf.bak
           ln  -s   /run/systemd/resolve/resolv.conf    /etc/
    

验证成果:


# This file is managed by man:systemd-resolved(8). Do not edit.
#
# This is a dynamic resolv.conf file for connecting local clients directly to
# all known uplink DNS servers. This file lists all configured search domains.
#
# Third party programs must not access this file directly, but only through the
# symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,
# replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.
 
nameserver 8.8.8.8
nameserver 114.114.114.114
上一篇:
Xshell启动的时候报initialize flexnet service failed error code 50003
下一篇:
Docker 日志排查与清理