Ubuntu18.04 DNS服务解析

Ubuntu18.04 DNS服务解析

目录

Ubuntu18.04 DNS服务解析

1. 定义

2. 域名书写

3.解析过程

4. 网络环境

5. ubuntu18.04中的域名解析

5.1 ubuntu18.04中systemd-resolved

5.2 配置全局的DNS服务器地址

5.3 动态配置网卡的DNS(无需手动修改任何文件)

5.4 静态配置网卡的DNS


1. 定义

通过域名解析服务器,将指定格式(如:www.baidu.com)的字符串转换成ip的过程.

2. 域名书写

上级域名靠右,最右边是顶级域,如,www.fudan.edu.cn, www表示web服务器, fudan表示复旦大学,edu表示教育单位,cn表示中国.

3.解析过程

DNS使用C/S机制来实现域名解析.

应用程序(请求的域名)------>本地解析器-------->DNS解析服务器(递归查找,迭代查找)---------->本地解析器-------->应用程序(解析出的ip地址)

4. 网络环境

a) 要实现DNS域名解析,网络系统中必须至少设置一台DNS解析服务器,同时让客户端的DNS域名解析都指向这台服务器;

b) 要实现本域及下级子域的管理,网络系统中必须设置一台DNS管理服务器,同时让上级域名管理服务器中有关这个域的管理都指向这台服务器.

c) 在实际应用中,通常这两种服务器合二为一,笼统称为DNS服务器.

 

5. ubuntu18.04中的域名解析

5.1 ubuntu18.04中systemd-resolved

ubuntu18.04中使用systemd-resolved 这个系统服务为本地应用程序提供域名解析. 它实现了一个缓存和验证DNS/DNSSEC存根解析器,同时也是一个LLMNR解析器(可以理解为如果前面的服务器解析失败,那此解析器作为最后的解析服务器)和响应者.

本地应用程序通过一下三个接口来请求域名解析:

1. 本地丰富的systemd-resolved API 暴露在bus(总线)上, 通常建议客户端使用此API,因为它是异步的且功能齐全的(比如:适当地为地址返回DNSSEC验证状态和接口范围,以支持链路-本地网络).

2. RFC3493[2]定义的glibc getaddrinfo(3) API及其相关解析器函数,包括gethostbyname(3)。这个API得到了广泛的支持,包括Linux平台之外的支持。但是,在它的当前形式中,它并不公开DNSSEC验证状态信息,并且只是同步的。这个API由glibc名称服务开关(nss(5))支持. 为了允许NSS 解析函数通过systemd-resolved解析域名,在使用时通常需要请求glibc NSS 模块 nss-resolve(8).

3 systemd-resolved 提供过了本地DNS存根监听, 该监听在本地回环地址127.0.0.53. 项目为了能连接到systemd-resolved,它可能会绕过本地API, 直接向这个本地DNS存根发出请求. 但强烈简易本地项目使用glibc NSS 或者总线API来替代这种方式.如,各种网络解析概念,不能映射到单播(unicast)DNS协议.

建立通信的DNS服务器从/etc/system/resolve.conf中全局设置.每个静态连接设置都是在/etc/systemd/network/*.network 文件中,每个动态连接设置接受自DHCP和其他系统服务创建的有效DNS服务信息.为了提高兼容性, 读出/etc/resolv.conf 文件来覆盖系统的DNS服务, 但只有它不是指向/run/systemd/resolve/stub-resolv.conf 或/run/systemd/resolve/resolv.conf 的链接.

systemd-resolved 整合DNS资源记录在以下情况下:

1. 在本地, 配置的域名被解析成本地ip地址,这些ip地址在他们的范围内一次排列. 如果没有任何配置,则IPV4地址为127.0.0.2, IPV6地址是::1.

2. 域名"localhost"和"localhost.localdomain"和以".localhost"或".localhost.localdomain"结尾的域名都被解析为127.0.0.1 和::1.

3. 主机名“_gateway”被解析为所有当前默认的路由网关地址,按照它们的指标排序。这将为当前网关分配一个稳定的主机名,对于独立于当前网络配置状态引用它非常有用。

4. 在/etc/hosts中定义的映射被解析到它们配置的地址并返回,但是它们不会影响对非地址类型(如MX)的查找。

5.2 配置全局的DNS服务器地址

编辑文件,文件地址 /etc/systemd/resolved.conf

sudo vim /etc/systemd/resolved.conf 

修改DNS,比如加入全局的dns地址8.8.8.8 和114.114.114.114.如下:

[Resolve]
DNS=114.114.114.114
DNS=8.8.8.8
#FallbackDNS=
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#Cache=yes
#DNSStubListener=yes

重启服务:

systemctl restart systemd-resolved.service

查看结果:

$ systemd-resolve --status
Global
         DNS Servers: 114.114.114.114
                      8.8.8.8
          DNSSEC NTA: 10.in-addr.arpa
                      16.172.in-addr.arpa
                      168.192.in-addr.arpa
                      17.172.in-addr.arpa
                      18.172.in-addr.arpa
                      19.172.in-addr.arpa

5.3 动态配置网卡的DNS(无需手动修改任何文件)

网卡的DNS配置, 与/run/systemd/resolve/resolv.conf 文件有关(本机有无线网卡和有线网卡),文件内容如下:

  1 # This file is managed by man:systemd-resolved(8). Do not edit.
  2 #
  3 # This is a dynamic resolv.conf file for connecting local clients directly to
  4 # all known uplink DNS servers. This file lists all configured search domains.
  5 #
  6 # Third party programs must not access this file directly, but only through the
  7 # symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,
  8 # replace this symlink by a static file or a different symlink.
  9 #
 10 # See man:systemd-resolved.service(8) for details about the supported modes of
 11 # operation for /etc/resolv.conf.
 12 
 13 #nameserver 8.8.8.8
 14 nameserver 192.168.16.202
 15 nameserver 202.96.209.5
 16 # Too many DNS servers configured, the following entries may be ignored.
 17 nameserver 58.210.110.30

此文件内容是自动更新的(亲测).

systemd-resolved 实时更新 /run/systemd/resolve/resolv.conf 文件以确保兼容传统的 Linux 程序,此文件只包含所有已知的全局DNS服务器(包括自动分配到的). 如果将软连接 /etc/resolv.conf 指向该文件, 未使用本地 D-Bus DNS API 的客户端,也将同时绕开 systemd-resolved 服务,直接与已知的全局DNS服务器通信.

引出/run/systemd/resolve/stub-resolv.conf 文件:

systemd-resolved 实时更新 /run/systemd/resolve/stub-resolv.conf 文件以确保兼容传统的 Linux 程序。 将软连接 /etc/resolv.conf 指向该文件。该文件将 127.0.0.53 设为唯一的 DNS 服务器,并包含 systemd-resolved 使用的搜索域列表。 搜索域列表将会始终保持实时更新。注意,应用程序不应该直接使用 /run/systemd/resolve/stub-resolv.conf 文件, 而应该继续使用 /etc/resolv.conf 文件(指向它的软连接)。 这样,未使用本地 D-Bus DNS API 的客户端,既可以与 systemd-resolved 通信、又可以正确使用搜索域。 这是推荐的首选方式.

5.4 静态配置网卡的DNS

1. 可以通过配置静态的ip的方式,配置DNS服务地址.

参考文章:

https://blog.csdn.net/m_wordPlan/article/details/107913763

2. 可以配置全局DNS服务地址.

即:配置全局的DNS服务器地址, 见5.2节.

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ubuntu 18.04 上,可以使用 BIND(Berkeley Internet Name Domain)软件包来安装 DNS 服务器。下面是安装步骤: 1. 打开终端,更新软件包列表: ``` sudo apt update ``` 2. 安装 BIND 软件包: ``` sudo apt install bind9 ``` 3. 安装完成后,进入 BIND 配置目录: ``` cd /etc/bind/ ``` 4. 备份原始配置文件: ``` sudo cp named.conf.options named.conf.options.bak sudo cp named.conf.local named.conf.local.bak ``` 5. 编辑 named.conf.options 文件,添加以下内容: ``` options { directory "/var/cache/bind"; recursion yes; allow-recursion { any; }; forwarders { 8.8.8.8; 8.8.4.4; }; dnssec-validation auto; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; }; ``` 这里的配置项含义如下: - directory:指定缓存文件的存放目录; - recursion:允许递归查询; - allow-recursion:允许任何人进行递归查询; - forwarders:指定转发器,这里使用 Google 的公共 DNS 服务器; - dnssec-validation:启用 DNSSEC 验证; - auth-nxdomain:如果查询的域名不存在,则不返回“不可知的域名”错误; - listen-on-v6:监听 IPv6 地址。 6. 编辑 named.conf.local 文件,添加以下内容: ``` zone "example.com" { type master; file "/etc/bind/db.example.com"; }; ``` 这里的配置项含义如下: - zone:指定域名; - type:指定 DNS 服务器的类型,这里是主服务器; - file:指定域名的资源记录文件。 7. 创建资源记录文件 db.example.com,添加以下内容: ``` $TTL 604800 @ IN SOA ns1.example.com. admin.example.com. ( 3 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns1.example.com. @ IN A 192.168.1.10 ns1 IN A 192.168.1.10 www IN CNAME example.com. ``` 这里的配置项含义如下: - $TTL:指定缓存时间(以秒为单位); - @:表示域名本身; - SOA:Start of Authority,指定域名服务器的授权信息; - NS:Name Server,指定主 DNS 服务器; - A:Address Record,指定域名对应的 IP 地址; - CNAME:Canonical Name,指定域名的别名。 8. 重新启动 BIND 服务: ``` sudo systemctl restart bind9 ``` 至此,DNS 服务器的安装和配置就完成了。你可以使用 nslookup 命令测试域名解析是否正常: ``` nslookup example.com ``` 输出应该包含以下信息: ``` Server: 127.0.0.53 Address: 127.0.0.53#53 Name: example.com Address: 192.168.1.10 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值