最近在给手机测试时,想要把手机上对特定域名的请求劫持到Mac上来,就需要用到dnsmasq,把Mac变成一个dns服务器,然后手机的dns服务器地址修改到mac上来。下面做一个配置备忘
参考:https://blog.niekun.net/archives/1869.html
省略安装步骤,debian用 apt install
,mac用 brew install
即可,下面进行配置
dnsmasq会按照一定的顺序去进行域名解析
首先是系统以及自定义的hosts文件: /etc/hosts /etc/hosts.dnsmasq
然后是上游dns server,定义在:resolv.dnsmasq.conf
默认dns server记录在/etc/resolv.conf
文件中,既然我们要使用dnsmasq来做dns服务器,那么就应该让dnsmasq能够查询系统原本的dns sever,等于是用dnsmasq做了一个中继
sudo cp /etc/resolv.conf /etc/resolv.dnsmasq.conf
然后在/etc/resolv.conf文件中,将内容改为
nameserver 127.0.0.1
这样就把本机的dns server指向了 127.0.0.1,这时候机器的dns请求就会发往127.0.0.1的53端口,dns默认监听端口,也是dnsmasq的监听端口
这里注意,在mac上需要在设置-网络-DNS中修改DNS服务器·
然后再在 /etc/dnsmasq.conf
文件中输入配置
# 监听地址:
# 如果只写 127.0.0.1 则只处理本机的 DNS 解析,不写这句默认监听所有网口
# listen-address=127.0.0.1,192.168.8.132
# 指定自定义 hosts 文件:
addn-hosts=/etc/hosts.dnsmasq
# 指定上游 DNS 服务列表的配置文件
resolv-file=/etc/resolv.dnsmasq.conf
# 按照 DNS 列表一个个查询,不重新排列 DNS server 的顺序
strict-order
# 表示对下面设置的所有 server 发起查询请求,选择响应最快的服务器的结果
all-servers
这样配置过程就完成了!
注意!如果在mac下用homebrew安装的,那么配置文件在/opt/homebrew/etc/dnsmasq.d/dnsmasq.conf
此时本机的dns请求的查询路径就会是
/etc/hosts -> dnsmasq
然后dnsmasq又会依次检索
/etc/hosts /etc/hosts.dnsmasq -> resolv.dnsmasq.conf
那么此时我们在 /etc/hosts
或者 /etc/hosts.dnsmasq
文件中定义一条 host,就可以改变dns解析的结果
重启dnsmasq服务后即可生效
brew services restart dnsmasq
不仅是本机的dns查询,因为dnsmasq监听53端口,相当于本机也是一个dns服务器,其他服务器可以向本机进行dns查询,或者把dns服务器地址设置成本机,这在进行手机的dns劫持时很有用处