问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

DNS基本知识以及OpenWrt路由器DNS配置详解

创作时间:
作者:
@小白创作中心

DNS基本知识以及OpenWrt路由器DNS配置详解

引用
1
来源
1.
https://cloud.tencent.cn/developer/article/2465053

DNS(域名系统)是互联网的基础服务之一,它将人类可读的域名(如baidu.com)转换为机器可读的IP地址。在OpenWrt路由器上正确配置DNS,不仅可以提高上网效率,还是使用一些插件(如访问国外网站、AdGuard Home等)的前提条件。本文将从DNS基础知识入手,详细介绍OpenWrt路由器的DNS配置方法,并通过实际测试验证不同配置下的效果。

DNS的基本作用

为了方便人们识别和访问互联网上的各种服务,我们通常使用易于记忆的域名(如baidu.com、jd.com等),而不是难以记忆的IP地址。DNS系统的作用就是将这些域名转换为对应的IP地址,使用户能够顺利访问互联网上的各种服务。

如何查看当前使用的DNS服务器

在Windows系统中,可以通过命令行查看当前使用的DNS服务器:

ipconfig /all

在Linux系统中,则需要编辑/etc/resolv.conf文件来手动指定DNS服务器:

root@localhost:~# cat /etc/resolv.conf
search lan
nameserver 127.0.0.1
nameserver ::1

DNS查询过程详解

DNS查询过程可以概括为以下几步:

  1. 用户在浏览器中输入域名(如www.baidu.com)。
  2. 浏览器向本地DNS服务器发送查询请求。
  3. 如果本地DNS服务器缓存中有该域名的记录,则直接返回结果;否则,会向上一级DNS服务器发起查询。
  4. 这个过程会一直持续到找到对应的IP地址或确认域名不存在。

DNS查询过程中的几个细节

  • 本地缓存:第一次访问某个网站时可能较慢,但之后会变快,因为结果会被缓存。
  • DNS服务器缓存:多个用户访问同一个网站时,第一个用户可能需要更长时间,但后续用户会更快,因为DNS服务器也会缓存结果。
  • 查询次数与效率:查询次数越多,效率越低,因此选择一个响应速度快的DNS服务器很重要。
  • 缓存时间:不同DNS服务器的缓存时间不同,可能今天能快速找到,过几天又需要重新查询。
  • 高可用性与负载均衡:同一个域名可能对应多个IP地址,这样可以避免单点故障和流量过载。

OpenWrt路由器上的DNS配置

在OpenWrt路由器上,DNS配置主要涉及以下几个方面:

  • WAN口DNS
  • LAN口DNS
  • LAN口DHCP通告
  • DHCP/DNS配置

其中,DHCP/DNS配置主要是dnsmasq服务的配置,包括端口、缓存大小等参数。

DNS配置验证过程

为了验证不同DNS配置的效果,我们设计了以下测试场景:

场景1:默认配置

在这种情况下,DNS服务器由WAN口自动获取。查看OpenWrt上的/tmp/resolv.conf.d/resolv.conf.auto文件,可以看到自动获取的DNS服务器信息:

root@localhost:/tmp# cat /tmp/resolv.conf.d/resolv.conf.auto
# Interface WAN
nameserver 172.23.32.1
search .

客户端和路由器的日志显示,所有DNS查询都会被转发到上一级DNS服务器:

root@localhost:/tmp# cat message|grep zhaobudao
Wed Oct  9 02:09:27 2024 daemon.info dnsmasq[1]: 907 127.0.0.1/36195 query[A] zhaobudao.com from 127.0.0.1
Wed Oct  9 02:09:27 2024 daemon.info dnsmasq[1]: 907 127.0.0.1/36195 forwarded zhaobudao.com to 172.23.32.1
Wed Oct  9 02:09:27 2024 daemon.info dnsmasq[1]: 908 127.0.0.1/36195 query[AAAA] zhaobudao.com from 127.0.0.1
Wed Oct  9 02:09:27 2024 daemon.info dnsmasq[1]: 908 127.0.0.1/36195 forwarded zhaobudao.com to 172.23.32.1

场景2:仅配置WAN口DNS

将WAN口DNS设置为阿里公共DNS(223.5.5.5)后,查看/tmp/resolv.conf.d/resolv.conf.auto文件:

root@localhost:/tmp# cat /tmp/resolv.conf.d/resolv.conf.auto
# Interface WAN
nameserver 223.5.5.5

此时所有DNS查询都会被转发到223.5.5.5:

root@localhost:/tmp# cat message|grep zhaobudao
Wed Oct  9 02:31:31 2024 daemon.info dnsmasq[1]: 1602 127.0.0.1/58081 query[A] zhaobudao.com from 127.0.0.1
Wed Oct  9 02:31:31 2024 daemon.info dnsmasq[1]: 1602 127.0.0.1/58081 forwarded zhaobudao.com to 223.5.5.5
Wed Oct  9 02:31:31 2024 daemon.info dnsmasq[1]: 1603 127.0.0.1/58081 query[AAAA] zhaobudao.com from 127.0.0.1
Wed Oct  9 02:31:31 2024 daemon.info dnsmasq[1]: 1603 127.0.0.1/58081 forwarded zhaobudao.com to 223.5.5.5

场景3:仅配置LAN口DNS

将LAN口DNS设置为腾讯公共DNS(119.29.29.29)后,查看/tmp/resolv.conf.d/resolv.conf.auto文件:

root@localhost:/tmp# cat resolv.conf.d/resolv.conf.auto
# Interface WAN
# Interface lan
nameserver 119.29.29.29

此时所有DNS查询都会被转发到119.29.29.29:

root@localhost:/tmp# cat message|grep zhaobudao
Wed Oct  9 02:43:57 2024 daemon.info dnsmasq[1]: 1775 127.0.0.1/56587 query[A] zhaobudao.com from 127.0.0.1
Wed Oct  9 02:43:57 2024 daemon.info dnsmasq[1]: 1775 127.0.0.1/56587 forwarded zhaobudao.com to 119.29.29.29
Wed Oct  9 02:43:57 2024 daemon.info dnsmasq[1]: 1776 127.0.0.1/56587 query[AAAA] zhaobudao.com from 127.0.0.1
Wed Oct  9 02:43:57 2024 daemon.info dnsmasq[1]: 1776 127.0.0.1/56587 forwarded zhaobudao.com to 119.29.29.29

场景4:同时配置LAN和WAN口DNS

当同时配置LAN和WAN口DNS时,查询会按照权重顺序转发。例如,LAN口DNS设置为119.29.29.29(权重100),WAN口DNS设置为223.5.5.5(权重200):

root@localhost:/tmp# cat resolv.conf.d/resolv.conf.auto
# Interface lan
nameserver 119.29.29.29
# Interface WAN
nameserver 223.5.5.5

此时,客户端的DNS查询会同时转发到两个DNS服务器,而路由器本身的查询只会转发到WAN口DNS:

root@localhost:/tmp# cat message |grep zhaobudao
Wed Oct  9 02:58:24 2024 daemon.info dnsmasq[1]: 6 10.20.30.113/37640 query[A] zhaobudao.domain from 10.20.30.113
Wed Oct  9 02:58:24 2024 daemon.info dnsmasq[1]: 6 10.20.30.113/37640 forwarded zhaobudao.domain to 119.29.29.29
Wed Oct  9 02:58:24 2024 daemon.info dnsmasq[1]: 6 10.20.30.113/37640 forwarded zhaobudao.domain to 223.5.5.5
Wed Oct  9 02:58:24 2024 daemon.info dnsmasq[1]: 6 10.20.30.113/37640 reply zhaobudao.domain is NXDOMAIN
Wed Oct  9 02:58:43 2024 daemon.info dnsmasq[1]: 7 127.0.0.1/54050 query[A] zhaobudao.com from 127.0.0.1
Wed Oct  9 02:58:43 2024 daemon.info dnsmasq[1]: 7 127.0.0.1/54050 forwarded zhaobudao.com to 223.5.5.5
Wed Oct  9 02:58:43 2024 daemon.info dnsmasq[1]: 8 127.0.0.1/54050 query[AAAA] zhaobudao.com from 127.0.0.1
Wed Oct  9 02:58:43 2024 daemon.info dnsmasq[1]: 8 127.0.0.1/54050 forwarded zhaobudao.com to 223.5.5.5

场景5:LAN口DHCP通告特定DNS

在LAN口DHCP中配置特定DNS(如8.8.8.8和180.76.76.76)后,客户端的DNS配置会相应改变:

# 客户机
root@ubuntu-host:~# cat /etc/resolv.conf
# Generated by NetworkManager
search lan
nameserver 8.8.8.8
nameserver 180.76.76.76
nameserver fe80::215:5dff:fe12:910a%eth0
root@ubuntu-host:~#
# 路由器
root@localhost:~# cat /tmp/resolv.conf.d/resolv.conf.auto
# Interface lan
nameserver 119.29.29.29
# Interface WAN
nameserver 223.5.5.5

此时,客户端的DNS查询会直接由配置的DNS服务器(8.8.8.8)应答,而路由器本身的查询仍由本地dnsmasq处理:

# 客户机上
root@ubuntu-host:~# nslookup zhaobudao.domain
Server:         8.8.8.8
Address:        8.8.8.8#53
** server can't find zhaobudao.domain: NXDOMAIN
# 路由器上
root@localhost:~# nslookup zhaobudao.com
Server:         127.0.0.1
Address:        127.0.0.1:53
Non-authoritative answer:
Non-authoritative answer:

场景6:DHCP/DNS配置

这部分主要涉及dnsmasq服务的高级配置,包括端口、缓存大小等参数。由于没有自己的DNS上游,这部分配置的实际效果有限,因此不再单独验证。

结语

通过以上实测验证,我们可以清晰地看到不同DNS配置下的行为差异。希望本文能帮助读者更好地理解OpenWrt路由器上的DNS配置原理,并根据实际需求进行合理设置。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号