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

2022-5-16 18:45| 发布者: Hocassian| 查看: 79| 评论: 0|原作者: 神代綺凜

摘要:
C:\Users\Administrator\Downloads\神代綺凜\2019-10-15-14-34-56-19827280635700-文章归档 - 神代綺凜の萌化小基地-采集的数据-后羿采集器.html

标题

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

标题链接

https://moe.best/tutorial/chinadns-on-win.html

正文

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

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

Windows 下的本机无污染 DNS 搭建方案

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

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

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,你可以用你自己习惯的编辑器命令

1
nano /etc/apt/sources.list

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

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

1
2
3
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二连,并安装后续所需依赖软件

1
2
3
apt-get update apt-get upgrade -y apt-get install -y make gcc curl

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

部署 ChinaDNS

  1. 下载 ChinaDNS 源码并解压编译
    1
    2
    3
    4
    5
    6
    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
  2. 更新 chnrouter
    1
    2
    # 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
  3. 配置 supervisor 进程守护
    1
    2
    3
    4
    5
    6
    7
    8
    # 安装 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
  4. 启动 supervisor 服务
    1
    2
    3
    service supervisor start # 然后检查下 ChinaDNS 是否有正常运行 supervisorctl status

部署 DNSMasq

1
2
3
4
5
6
7
# 安装 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 服务

1
nano /etc/init.d/dnsmasq

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

启动 DNSMasq 服务

1
service dnsmasq start

修改系统 DNS 为本机

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

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

让上面这一套开机自启

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

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

1
2
3
#!/bin/sh service supervisor start service dnsmasq start

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

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

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

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

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

搬瓦工VPS优惠套餐,建站稳如狗,支持支付宝,循环出账94折优惠码BWH26FXH3HIQ
年付$28CN2线路,1核/512M内存/10G硬盘/500GB@1Gbps【点击购买】(经常售罄,请抓紧机会)
年付$47CN2线路,1核/1G内存/20G硬盘/1T@1Gbps【点击购买
最后修改:2018 年 06 月 30 日 07 : 26 PM
如果觉得我的文章对你有用,请随意赞赏

文章信息

中二病患者: 神代綺凜  发布时间:2018 年 06 月 13 日  14782 次浏览   23 条评论  3999 字数 分类: 教程


路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部