餐饮加盟网-免费发布餐饮招商信息!本站不提供任何加盟资料,如需加盟请去其官网了解详情

OpenWrt使用Docker搭建国内外分流DNS服务器妹子,在火车上睡觉要盖被子,亮点全被对铺看到了哈哈哈哈

来源:undefined
作者:小吃加盟·发布时间 2025-10-13
核心提示:作者:Kation为什么要国内外DNS分流由于不可描述的原因,使用国内DNS服务器解析国外域名时,可能会返回错误的IP地址。目前有很多种解决方法。使用国外DNS服务器这个还是会

作者:Kation

为什么要国内外DNS分流

由于不可描述的原因,使用国内DNS服务器解析国外域名时,可能会返回错误的IP地址。

目前有很多种解决方法。

使用国外DNS服务器

这个还是会被污染

使用国外DoH、DoT技术

基本上无法访问

通过代理使用国外DNS服务器

可行,但是

那么,能不能国内域名使用国内的DNS服务器,国外域名使用国外的DNS服务器呢?

答案是可以的,其实网上有多种解决方案,我这里介绍其中一种。

DNS服务器

TechnitiumSoftware的DnsServer是一个由C#编写的开源DNS服务器,支持Windows、Linux系统,有Docker镜像。

你问我为什么选它,我的答案是,因为我会C#

这个DNS服务器本身是没有分流功能的,但是其支持插件,我为其编写了一个分流插件

当检测到域名是的国外的时候(配置的列表),直接用国外的DNS服务器解析

先使用默认DNS服务器(一般配置国内的几个DNS服务器)解析

解析出来后,判断IP地址是不是非法的(配置的列表,里面一般是内网网段以及GFW喜欢设置的网络黑洞网段)

不是非法的,再通过GEO数据库,判断IP地址是不是国内的

如果是非法的或者不是国内的,再使用国外的DNS服务器解析一遍

可以配置使用代理访问国外DNS服务器,一般都要使用代理

源码地址:TechnitiumSoftware/DnsServer: Technitium DNS Server (github.com)

插件源码地址:Kation/DnsServer: Technitium DNS Server (github.com)

前置条件

废话不多说,以我家里的网络环境为例,搞它

由于我还不会制作OpenWrt的插件,所以先用Docker来运行DNS服务器

OpenWrt需满足

OpenWrt安装了Docker插件

安装了内核模块kmod-macvlan

Docker网络配置

如果你的网络启用了IPv6,那么请先到这里,把“IPv6 ULA”前缀记下,一般是OpenWrt自动生成的

< style="text-align: left; margin-bottom: 10px;">

然后我们进入Docker的网络管理界面,点击“新建

< style="text-align: left; margin-bottom: 10px;">广告< style="text-align: left; margin-bottom: 10px;">胆小者勿入!五四三二一...恐怖的躲猫猫游戏现在开始! < style="text-align: left; margin-bottom: 10px;">×

网络名称不能重复

驱动器选择“MAC VLAN

基设备选择OpenWrt本地网桥,一般为“br-lan

模式默认保持桥接

子网输入一个新的网段,不能与现有网段重复

网关输入该网段内的一个IP,为本OpenWrt设备的IP地址

IP范围与子网相同即可

如果使用了IPv6网络,则勾选“启用IPv6

IPv6子网,我的IPv6 ULA地址是“fdbf:6008:a32f::/48”,在a32f后,添加一个不重复网段,例如我的239,48掩码改为64,我的例子为“fdbf:6008:a32f:239::/64”,注意冒号不能少也不能多

IPv6网关将/64改为1即可,我的例子为“fdbf:6008:a32f:239::/1

< style="text-align: left; margin-bottom: 10px;">

OpenWrt网络配置

点击菜单里的接口时,会弹出一个对话框,点击“继续”,此时会看到新增了一个网络“DOCKER_你的Docker网络名称

< style="text-align: left; margin-bottom: 10px;">

如果没有使用IPv6,则不需要更多配置,跳到下一步骤。

点击编辑新的网络,在IPv6地址栏里填入创建Docker网络时填入的网关地址,点击保存。

< style="text-align: left; margin-bottom: 10px;">

然后在路由管理界面静态IPv6路由选项卡点击“添加”。

< style="text-align: left; margin-bottom: 10px;">

接口选择对应生成的Docker接口

目标填入创建Docker网络时的IPv6子网

网关填入创建Docker网络时的IPv6网关

< style="text-align: left; margin-bottom: 10px;">

保存后,OpenWrt的网络就配置好了

部署DNS服务器

创建数据存储文件夹

在开始部署前,先确定你的OpenWrt数据存储位置

如果你的OpenWrt装有Diskman插件,进入Disk man管理界面,查看挂载点

< style="text-align: left; margin-bottom: 10px;">

可以看到,我的OpenWrt内有一块nvme固态硬盘,其中有个118G的分区,挂载在路径/mnt/storage

没有Diskman的话,通过ssh或在线终端功能连入OpenWrt,执行lsblk命令

< style="text-align: left; margin-bottom: 10px;">

同样能看到一个118G的分区,挂载在路径/mnt/storage

通过ssh或在线终端功能连入OpenWrt,执行命令

执行cd /mnt/storage进入挂载点

执行mkdir dnsserver创建数据文件夹

使用OpenWrt界面部署,不支持IPV6

在Docker的容器管理界面点击新增

< style="text-align: left; margin-bottom: 10px;">

容器名称填入不重复的名称,例如dnsserver

Docker镜像填入technitium/dns-server:latest

重启策略选择Always

网络选择上文中新创建的macvlan网络

IPv4地址填写的IP地址必须属于网络子网

环境变量填入TZ=Asia/Shanghai

绑定挂载填入上文创建的数据文件夹路径,加上“:/etc/dns”,我这里为“/mnt/storage/dnsserver:/etc/dns

< style="text-align: left; margin-bottom: 10px;">

点击提交即可拉取镜像并创建出DNS服务器容器

使用控制台命令部署,支持IPv6

由于OpenWrt的Docker管理界面添加容器时不能指定IPv6地址,所以只能通过ssh或在线终端功能连入OpenWrt,使用命令行执行命令添加容器

--name参数为容器名称

--net参数改为上文新创建的macvlan网络名称

--ip参数改为你的网络子网IP地址

--ip6参数改为你的网络IPv6子网IP地址,不能为网关地址

-v参数中的“/mnt/storage/dnsserver”替换为上文创建的数据文件夹路径

docker run

-d

--name=dnsserver

--net=app

-e TZ="Asia/Shanghai"

--restart=always

--ip 192.168.239.1

--ip6 fdbf:6008:a32f:239::2

-v /mnt/storage/dnsserver:/etc/dns:rw

technitium/dns-server

执行命令即可拉取镜像并创建出DNS服务器容器

容器启动完毕后,你应该能在电脑上ping通IP地址

< style="text-align: left; margin-bottom: 10px;">

配置DNS服务器

在浏览器内输入容器IP地址,加上端口号5380进入DNS服务器管理界面

关闭DNS校验

由于不可描述的原因,取消勾选Enable DNSSEC Validation

< style="text-align: left; margin-bottom: 10px;">

修改默认DNS服务器

填入几个国内常用的DNS服务器

例如119.28.28.28119.29.29.29223.5.5.5

< style="text-align: left; margin-bottom: 10px;">

如果你填写了多于2个的DNS服务器地址,那么改一下并发查询数

< style="text-align: left; margin-bottom: 10px;">

安装分流插件

先到https://github.com/Kation/DnsServer/releases下载最新的插件压缩包

然后到App选项卡点击Install按钮

< style="text-align: left; margin-bottom: 10px;">

App Name随便填

App Zip File选择刚才下载的压缩包

点击Install进行安装

< style="text-align: left; margin-bottom: 10px;">

安装好后在列表页点击Config按钮进行配置

< style="text-align: left; margin-bottom: 10px;">

将内容替换为自己的配置,点击Save保存

< style="text-align: left; margin-bottom: 10px;">

配置说明

这里可能不是最新的配置说明,最新配置说明请看下载页

重点关注nameServers配置,如果你的代理服务器仅支持常规端口,请只配置Https类型的DNS服务器

proxy配置改为你的代理服务器

什么值得买的JSON展示太丑了,大家去看下载页的示例

测试DNS

配置完毕后,可以在电脑上使用nslookup命令测试DNS服务器工作是否正常

< style="text-align: left; margin-bottom: 10px;">

可以看到,已经正常返回结果

使用国内DNS服务器的结果

< style="text-align: left; margin-bottom: 10px;">

修改下发的DNS服务器地址

最后一步,修改OpenWrt的接口下发的DNS服务器地址为容器IP地址

如果你不是使用OpenWrt作为DHCP服务器,请自行设置,你应该会的

在OpenWrt接口修改界面,DHCP选项填入“6,你的容器IP地址

< style="text-align: left; margin-bottom: 10px;">

如果使用了IPv6,还需要修改IPv6的DNS服务器地址

通告的IPv6 DNS服务器填入容器的IPv6地址

< style="text-align: left; margin-bottom: 10px;">

好了,到此全部配置完毕,家里的设备都能正常解析DNS地址了

结语

有人可能要问,既然都有代理了,为什么不用代理提供的DNS服务?比如OpenClash

我这么做当然是有原因的

OpenClash提供的DNS服务会有点问题,无法指定使用国内的DNS服务器来解析代理服务器地址

指定国外DNS服务器的话,解析代理服务器地址需要连上代理,然而代理服务器地址还没解析出来,就……

而且用OpenClash的DNS解析,国内某些手机APP的DNS解析有时候好慢,非常影响体验,收到来自老婆的“关爱”

现在用了DNS分流就简单了,OpenClash直接配置本地DNS劫持停用,只干代理的活

查看文章精彩评论,请前往什么值得买进行阅读互动

标签: sdf
如果您对此项目感兴趣,请在此留言,坐等企业找您(成功的创业者90%都是通过留言,留言只需5秒钟)
  • 知名招商项目汇聚平台

    汇聚海量知名、高诚信度品牌招商项目,随时为您提供招商信息

  • 事实和口碑胜于一切

    千万创业者通过这里找项目、迈出成功创业第一步;

  • 诚信的商机发布平台

    请你在加盟留言时,选择有实力、 加盟店多、成功案例多、合法资质、 证照齐全、诚信经营的品牌.

郑重承诺:本公司郑重承诺尊重你的隐私,并承诺为你保密!
随时 上班时间 下班时间
您可以根据下列意向选择快捷留言
  1. 加盟费多少
  2. 我们这里有加盟店吗?
  3. 我想了解一些加盟资料
  4. 我对这个项目感兴趣,尽快联系我


创业专题



热门创业项目

精品推荐

餐饮项目分类

联系我们

微信扫一扫
第一时间推送投资小回报快利润高的项目

合作伙伴

我们也在这里

关注微信关注微信

您身边的财富顾问...

扫一下
客户端客户端

iPhone/Android/iPad

去下载
关注微博关注微博

官方微博随时分享...

加关注
手机看hbdrt.cn手机看hbdrt.cn

随时随地找商机...

去看看

温馨提示

  • 1在找餐饮项目的过程中多对比同类项目。
  • 2了解项目时多打电话,进行实地考察。
  • 3投资有风险,请谨慎加盟。
  • 4本网站对投资者的风险概不承担。