[ChinaDNS] 无污染的智能路由 DNS 折腾记 #3

1277 字
6 分钟
[ChinaDNS] 无污染的智能路由 DNS 折腾记 #3
[ChinaDNS] 无污染的智能路由 DNS 折腾记 #3

没想到这个系列还能有第三集,应该是完结篇了。这次是因为前不久试用了一下 Linux 的 Windows 子系统,发现意外的不错,与 Windows 本身契合度很高,于是在 Windows 里跑 DNSMasq + ChinaDNS 的设想得以实现√

Head Pic: 「夏コミグッズ…」/「三村ざじゃ」のイラスト [pixiv]


在上一篇文章中,我讲到了在国内服务器上使用 DNSMasq + ChinaDNS 以能在任何支持自定义 DNS 的设备上解决 DNS 污染的方案,但这个方案也有缺点:如果平时你主要是自用,在 Windows 上做到无污染即可,那么为此专门去购买国内服务器(即使是很便宜的学生机)其实也有点大材小用。

不久前不小心才想起来还有一个 Windows 子系统的玩意没试过,说是可以在 Windows 上直接跑 Linux,这样是不是就可以解决没办法在 Windows 上跑 DNSMasq 的问题了?(当然能解决啦

Warning

Win10 必须是 1607 版本及以后的

这种解决方案还有一个好处,就是可以解决 IPv6 协议的 DNS 设置问题。 当你在 IPv6 下想用其他只支持 IPv4 的服务器做 DNS,IPv6 中的 DNS 地址就只能填写成 IPv4 镜像地址::ffff:1.2.3.4的形式使其立即 fallback 到 IPv4 去解析,虽然日常使用上不会感觉有什么大问题,但是在使用例如nslookup之类的工具时就会发生异常。 而在子系统 Linux 中使用 DNSMasq 可以同时监听 IPv6,因此就可以很好的解决这个问题。

开启 Windows 子系统#

1. 开启子系统功能#

  1. Win10 系统设置->更新与安全->开发者选项->勾选“开发人员模式”,然后会有文字提示你“正在搜索开发者软件包”之类的,无需理会
  2. 控制面板->程序和功能->启用或关闭 Windows 功能->勾选“适用于 Linux 的 Windows 子系统”->确定,然后等操作完成以后重启

2. 安装子系统 Linux#

打开 Win10 应用商店,右上角搜索“Linux”,然后根据结果指引你很容易能找到这里

然后选择你喜欢的 Linux 系统安装即可,我比较喜欢 Debian 所以安装了 Debian

安装完成后打开系统,会让你输入新用户名,直接输入root即可,这样能默认就使用 root 登录,然后根据提示设置一个密码即可

完成后先替换软件源,因为在国内用国外的官方源会非常非常慢

我习惯用nano编辑器,因此之后的所有编辑命令都是nano,你可以用你自己习惯的编辑器命令

Terminal window
nano /etc/apt/sources.list

编辑完之后,nano编辑器是按Ctrl + X再按Y保存

将原来的软件源替换成阿里云的镜像源,以下示例是 Debian 9 的软件源,请你根据自己的系统发行版本来更换软件源

Terminal window
deb http://mirrors.aliyun.com/debian/ stretch main
deb http://mirrors.aliyun.com/debian/ stretch-updates main
deb http://mirrors.aliyun.com/debian-security/ stretch/updates main

然后例行的apt-get二连,并安装后续所需依赖软件

Terminal window
apt-get update
apt-get upgrade -y
apt-get install -y make gcc curl

至此子系统的部署就完成了

部署 ChinaDNS#

  1. 下载 ChinaDNS 源码并解压编译
Terminal window
cd /root
wget --no-check-certificate https://github.com/shadowsocks/ChinaDNS/releases/download/1.3.2/chinadns-1.3.2.tar.gz
tar -zxvf chinadns-1.3.2.tar.gz
mv chinadns-1.3.2 chinadns
cd chinadns
./configure && make
  1. 更新 chnrouter
Terminal window
# In /root/chinadns
curl 'http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest' | grep ipv4 | grep CN | awk -F\| '{ printf("%s/%d\n", $4, 32-log($5)/log(2)) }' > chnroute.txt
  1. 配置 supervisor 进程守护
Terminal window
# 安装 supervisor
apt-get install -y supervisor
# 写入配置(8053是ChinaDNS监听端口,你可以修改成其他的,但是请注意端口冲突问题以及后续DNSMasq配置的同步修改)
echo "[program:chinadns]
command = /root/chinadns/src/chinadns -p 8053 -m -c /root/chinadns/chnroute.txt -s 114.114.114.114,208.67.222.222:443
user = root
autostart = true
autorestart = true" > /etc/supervisor/conf.d/chinadns.conf
  1. 启动 supervisor 服务
Terminal window
service supervisor start
# 然后检查下 ChinaDNS 是否有正常运行
supervisorctl status

部署 DNSMasq#

Terminal window
# 安装 DNSMasq
apt-get install -y dnsmasq
# 写入配置(使用ChinaDNS做上游DNS)
echo "port=53
no-resolv
no-poll
server=127.0.0.1#8053" > /etc/dnsmasq.conf

然后修改一下 DNSMasq 服务的启动命令**(重要,请务必修改,否则 DNSMasq 会无法正常使用配置)**

编辑 DNSMasq 服务

Terminal window
nano /etc/init.d/dnsmasq

找到start()函数,按照此图注释掉并修改对应语句,然后保存退出

启动 DNSMasq 服务

Terminal window
service dnsmasq start

修改系统 DNS 为本机#

将 IPv4 DNS 改为仅127.0.0.1 将 IPv6 DNS 改为仅::1

然后用nslookup试一下,是不是无污染啦

让上面这一套开机自启#

由于子系统 Linux 定制内核的特殊性无法运用rc.local那一套开机自启,因此需要曲线救国

新建/root/.boot.sh文件,写入以下内容

#!/bin/sh
service supervisor start
service dnsmasq start

然后打开 Windows 上的“启动”文件夹 路径是C:\Users\你的用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

在这里新建一个文本文件,写入以下代码

Terminal window
CreateObject("Wscript.Shell").run "bash ~/.boot.sh",vbhide

然后将这个文本文件改名为linux.vbs

Windows 上的bash命令实际上就是子系统 Linux 中的bash,进行到这里我相信你应该懂上面的操作是什么意思了√

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

[ChinaDNS] 无污染的智能路由 DNS 折腾记 #3
https://moe.best/posts/chinadns-on-win/
作者
神代綺凛
发布于
2018-06-13
许可协议
CC BY-NC-SA 4.0
相关文章智能推荐
1
[ChinaDNS] 无污染的智能路由 DNS 折腾记 #2
教程这篇文章算是上一篇文章的完善,教你如何将 ChinaDNS 与 DNSMasq 结合起来用,使其更加稳定并且可以支持 TCP 查询
2
[ChinaDNS] 无污染的智能路由 DNS 折腾记
教程手上有台去年被京东云骗了买的80多rmb一年的1M小水管机子,闲着也是闲着,就打算用 ChinaDNS 项目部署一个无污染的DNS服务,其中遇到了许多坑,弄清楚了之后我觉得很有必要写一篇教程(特别是在用H大的老毛子固件上的ChinaDNS的朋友们需要看一看),其中涉及到 DNS 污染的问题是重点
3
[overture] 无污染的智能 DNS 折腾记 #4
教程我是在大概三个月前得知了 overture 并开始使用,其相对 ChinaDNS 的优点是设置更丰富、使用国内外 DNS 的判断逻辑更完善、支持 ECS (edns-client-subnet),并且设置比 Pcap DNSProxy 简单很多。 本文会介绍在 PC 及 openwrt 路由器上部署 overture 的方法和要点。
4
[Pcap DNSProxy] 无污染DNS搭建 linux下编译过程全记录
教程Pcap DNSProxy 是一个基于 WinPcap/LibPcap 用于过滤 DNS 投毒污染的工具,提供便捷和强大的包含正则表达式的修改 Hosts 的方法,以及对 DNSCurve/DNSCrypt 协议、并行和 TCP 协议请求的支持。多服务器并行请求功能,更可提高在恶劣网络环境下域名解析的可靠性。
5
[DNSmasq] 安装&配置详解
Linux 笔记DNSmasq 是 Linux 下的一个用于配置 DNS 和 DHCP 的工具,个人认为最主要的功能还是用来做 DNS 服务器。一句话,好用的不行。
随机文章随机推荐
Profile Image of the Author
神代綺凛
专业咕咕
分类
标签
站点统计
文章
107
分类
15
标签
269
总字数
140,468
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
EdgeOne Pages
博客版本
Firefly v6.16.8
文章许可
CC BY-NC-SA 4.0
文章目录