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

WSL2 中使用 DNSmasq

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

WSL2 中使用 DNSmasq

引用
CSDN
1.
https://blog.csdn.net/hzgaoshichao/article/details/140909753

DNSmasq是一个小巧且功能强大的DNS和DHCP服务器软件,特别适合在小型网络中使用。本文将详细介绍如何在WSL2(Windows Subsystem for Linux 2)中配置DNSmasq,包括其工作原理、安装步骤、详细配置方法以及最终的测试验证。通过本文的指导,你将能够搭建一个灵活且高效的本地DNS服务器。

关于 DNSmasq

DNSmasq 是一个小巧且方便地用于配置 DNS 和 DHCP 的工具,适用于小型网络,它提供了 DNS 功能和可选择的 DHCP 功能。自己搭建公共 DNS 更加灵活,如果是在本地搭建,还可以大幅提高解析速度。

DNSmasq 原理

  • 本机APP访问主机的 /etc/resolv.conf 获取 DNSServer,该文件指向的 DNSServer 为 DNSmasq。
  • 本地局域网中的主机可以直接访问Dnsmasq,即在这些主机中 /etc/resolv.conf 指向了 DNSmasq。
  • DNSmasq 需要通过上游DNS来进行域名解析,上游DNS可以配置在 /etc/resolv.dnsmasq.conf 中,该文件需要在DNSmasq 的配置文件 /etc/dnsmasq.conf 中指定

安装

在Ubuntu/Debian系统中,可以通过以下命令安装DNSmasq:

sudo apt install dnsmasq

可以通过以下命令查看服务日志:

journalctl -xeu dnsmasq

如果启动时发生错误,可以先放在一边,等待后续的配置全部完成后再尝试启动。

配置 DNSmasq

DNSmasq 的配置文件位于 /etc/dnsmasq.conf,需要修改以下几个参数:

  • resolv-file=/etc/resolv.dnsmasq.conf:这个参数表示 dnsmasq 会从这个指定的文件中寻找上游 dns 服务器
  • 取消注释的 strict-order,表示严格按照 resolv-file 文件中的顺序从上到下进行 DNS 解析, 直到第一个成功解析成功为止
  • 注释掉 no-hosts,默认情况下这是注释掉的,dnsmasq 会首先寻找本地的 hosts 文件再去寻找缓存下来的域名,最后去上游 dns 服务器寻找。
  • 设置 listen-address=127.0.0.1,将 127.0.0.1 改成自己服务器IP
  • 设置 conf-dir,自动加载 conf-dir 目录下的配置文件,可以设置为 conf-dir=/etc/dnsmasq.d

为了过滤掉配置文件中的注释,可以使用以下命令:

grep -v ^\# /etc/dnsmasq.conf | grep -v '^$'

或者

grep -v ^\# /etc/dnsmasq.conf | tr -s '\n'

配置上游 dns 服务器

编辑 /etc/resolv.dnsmasq.conf 文件,添加上游DNS服务器:

nameserver 119.29.29.29
nameserver 1.2.4.8

以下是一些常用的DNS服务器供参考:

  • 北京电信DNS: 219.141.136.10  219.141.140.10
  • 北京联通DNS: 202.106.196.115 202.106.46.151 202.106.0.20 202.106.195.68
  • 百度公共DNS: 180.76.76.76
  • 阿里DNS: 223.5.5.5 223.6.6.6
  • 腾讯DNS: 119.29.29.29
  • Cloudflare DNS: 1.1.1.1 1.0.0.1
  • Google DNS: 8.8.8.8 8.8.4.4
  • CNNIC SDNS(中国互联网络信息中心公共DNS服务器): 1.2.4.8 210.2.4.8
  • 114 DNS:   114.114.114.114 114.114.115.115
  • 360 DNS 派电信/移动/铁通: 101.226.4.6 218.30.118.6
  • 360 DNS 派联通: 123.125.81.6   140.207.198.6
  • oneDNS: 112.124.47.27   114.215.126.16
  • OpenDNS: 208.67.222.222 208.67.220.220
  • V2EX DNS: 199.91.73.222 178.79.131.110
  • OpenerDNS: 42.120.21.30

额外的配置

设置 conf-dir=/etc/dnsmasq.d/*.conf,这样可以将额外的配置放在 /etc/dnsmasq.d/ 目录下,例如创建一个配置文件 /etc/dnsmasq.d/kind.k8s.conf

address=/kind.cluster/127.0.0.1

这样当 dnsmasq 重新启动的时候就会加载这个配置,这里定义了一个本地域名 kind.cluster,它的IP 地址为 127.0.0.1

启用服务

重启服务:

sudo systemctl restart dnsmasq

查看服务状态:

sudo systemctl status dnsmasq

如下图所示,配置的上游 DNS 已经生效:

本地测试

由于设置了 listen-address=127.0.0.1,需要修改本地的 /etc/resolv.conf 文件:

nameserver 127.0.0.1

然后使用 dig 命令进行测试:

dig test.kind.cluster
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号