WSL2 中使用 DNSmasq

原文链接: WSL2 中使用 DNSmasq

关于 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 中安装

sudo apt install dnsmasq

可以通过命令 journalctl -xeu dnsmasq 查看服务日志

如果发生启动错误,即 sudo systemctl start 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

当我们查看 /etc/dnsmasq.conf 文件时, 会发现它特别的长, 里面有大量的注释, 我们又是不知道我们设置了哪些选项, 我们可以使用下面的命令来过滤.

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

或者

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

在这里插入图片描述

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

  • -v, --invert-match 表示 select non-matching lines. 也就是反选的意思
  • ^\# 表示以#号开头的文本行, 其中#号需要被转义(\#)
  • ^$ 表示空行的意思, $ 表示匹配输入字符串的结尾位置. ^ 表示匹配输入字符串的开始位置

配置上游 dns 服务器,即配置 /etc/resolv.dnsmasq.conf

nameserver 119.29.29.29
nameserver 1.2.4.8

我们可以参考下面的常用 DNS , 来设置我们的上游 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.conf

比如我们创建一个配置文件 /etc/dnsmasq.d/kind.k8s.conf

address=/kind.cluster/127.0.0.1

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

启用服务

重启服务:

sudo systemctl restart dnsmasq

查看服务状态

sudo systemctl status dnsmasq

如下图示,我们配置的上游 DNS 也已经生效
在这里插入图片描述

本地测试

由于我们设置了 listen-address=127.0.0.1, 那么我们本地测试的话需要 修改一下本地的 /etc/resolv.conf 文件.

/etc/resolv.conf

nameserver 127.0.0.1

然后,我们可以使用 dig 命令来测试, 如下所示:

dig test.kind.cluster

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值