虚拟组网+自建DNS ,完全掌握你所有的设备网络
还在因为没有公网IP而苦恼?还在担心对外开放端口被攻击?
现在和大家分享我的虚拟组网+自建DNS方案 ,让你的手机、笔电、NAS、小鸡无论何处何地都能随意互联
前言声明:大家的网络环境和需求千差万别,我只以我的情况为范例,大家可以参照参考,然后根据自己情况部署就行了。另外这些内容其实网上都有很多现成的教程 我也是东拼西凑,结果意外好用,和大家分享
我的网络环境:
-家:联通500M宽带,(有v4和v6 都是动态公网IP), openwrt软路由(192.168.1.1)群晖NAS
-手机
-公司电脑
-小鸡
我的需求:
①观影:在家或者在公司或者用手机看家里NAS上的电影
②github:解决日常抽风的github和龟速下载
③搞鸡:没事买买鸡 但是有的鸡线路千差万别 纯v6鸡 NAT鸡 或者转发鸡
一句话教程:(给大佬看,节省时间)
STEP1在openwrt上用docker部署dns工具:Adguard Home和tailscale
STEP2然后其他设备都安装tailscale组网
STEP3在tailscale控制台设置所有组网设备强制使用Adguard Home为dns服务器
1 为所有设备部署tailscale
1.1 openwrt软路由部署docker版本的tailscale
1.1.1 部署tailscale
登陆openwrt软路由的ssh,然后输入下面代码
docker run --privileged --name tailscale --network host -d tailscale/tailscale
查看tailscale是否成功运行
docker ps
1.1.2 登陆tailscale
部署成功后输入下面代码
docker exec -it tailscale tailscale up
然后打开网址登陆账号后点connect
查看tailscale是否成功登陆
docker exec -it tailscale tailscale status
1.1.3 开启子网路由
成功连接后输入下面代码
docker exec -it tailscale tailscale up --advertise-routes=192.168.1.0/24然后打开tailscale控制台
点击openwrt的这一行的最右端 ··· 点开更多设置里点击Edit route settings
然后勾选192.168.1.0/24 即可
PS.什么是子网路由???
假设你家的局域网路由器地址是192.168.1.1 那么如果你不在家 打开手机或者电脑输入192.168.1.1能登陆路由器吗?肯定不行 因为没有连家里的局域网wifi 不在一个网段内
但是当你的手机或者电脑安装tailscale后,再打开子网路由功能, 你无论在任何地方 连任何网络 都可以随时随地输入192.168.1.1访问路由器以及家里的群呼、nas等等任何服务了
具体原理有兴趣可以看看tailscale官方文档
1.2 安卓/windows
1.2.1 安卓下载apk
具体安装应用就不说了 这里最大的问题就是下载 因为官网要求从google play下载 咱国内肯定是访问不了
所以建议大家可以从google play镜像站下载
我这里推荐几个
https://apkpure.com/tailscale/com.tailscale.ipn
https://f-droid.org/packages/com.tailscale.ipn
https://www.apkmirror.com/apk/tailscale-inc/tailscale
1.3 群晖
很简单 直接在套件里搜索安装即可
群晖其实完全可以代替openwrt所以我说大家根据自己的情况参考部署 很多东西见仁见智、丰俭由人!
2 在openwrt软路由上部署docker版本的Adguard Home
2.1 docker部署Adguard Home
DNS服务需要53端口
先看看53端口有没有被占用
netstat -tulnp果然 被dnsmasq占用了
停用dnsmasq进程就行了 这里我不写方法了 大家请自行问deepseek
(我发现无论教程写的多么详细 每个人都会遇到不同的问题 所以遇到问题问AI 几乎是现在每个人必会的技能,理论上你都不需要看具体方法 就一步步让AI教你 效率和准确性真的比任何教程都高)
成功解除53端口占用了 就可以部署Adguard Home了
docker run --privileged --name adguardhome--network host -d adguard/adguardhome
部署成功后进入192.168.1.1:3000进行设置
[*]需要设置dns端口为53 (192.168.1.1:53)
[*]web控制面板端口为8080 (192.168.1.1:8080)
[*]管理员账号密码
很简单不展开写了
2.2 设置上游DNS和重写DNS
设置好后登陆进入adguardhome的web控制面板
①设置上游DNS
我们虽然是自建dns 但实际上也只是DNS的搬运工 还是需要更权威的DNS给我们解析
这里强烈推荐使用加密DNS 也就是DoH
https://dns.cloudflare.com/dns-query
如果不使用加密dns 你的每次DNS解析别人都可以看到 相当于有人在你家门口装了监控 几点几分你请求了什么域名都一清二楚 而且还可以给你虚假错误的解析记录(DNS劫持、DNS污染)
②重写DNS
首先为什么要重写DNS,当我们想访问github.com我们需要知道github服务器的IP地址,但像github这样的站点肯定不止一台服务器,也不只分布在一个城市或地点。那么问题来了 当我们请求github.com域名的IP地址时,上游DNS会给我们哪个IP呢?很简单,DNS根据我们的IP地理位置,给我们分配距离我们最近的github服务器IP,这很合理,因为这样对我们来说访问速度和延迟都最理想。但是,假如有人使坏,给了我们一个错误的IP,或者DNS设置错我,我们明明在上海,却给我们分配了一个github纽约的服务器ip,那我们访问速度肯定很糟糕,那怎么办呢?很简单,自己重写DNS。
adguardhome允许我们为指定域名解析自定义IP ,那么我们可以通过很多办法,找到访问最理想的github服务器IP,然后把这个IP绑定到github.com域名就行了
2.3 强制使用自建DNS
这是tailscale的最实用功能之一,上一节我们通过adguardhome为github.com重写了IP,只要使用我们自建的adguardhomeDNS服务解析github.com,就可以访问这个最快服务器了,那么tailscale的强制DNS功能,就是强制所有加入tailscale虚拟组网的设备都使用adguardhome作为DNS。
只需要一次设置,所有组网设备全部生效,非常方便。
①打开tailscale控制台,打开DNS标签页
②在Nameservers一栏中添加custom DNS ,把openwrt的IP填进去 (192.168.1.1)
③并打开强制按钮
3 进阶(留坑)
3.1 加速github ——实现10MB/s的高速下载
3.2 自建derp——没有公网IP的设备也能快速稳定互联
3.3 想好了再写
上述全部部署完毕 熟练地话10分钟就能搞定。
然后就可以告诉冲浪了~
本帖最后由 mk5250 于 2025-4-14 14:15 编辑
第一步公网ip就卡住了,买了阿里的服务器做derp中转勉强凑合用 这方案我在外面而家里无公网能连上? 可惜现在运营商各种恶心你,端对端的UDP被限制的死死地,TCP也限制的厉害,更别提协议精准狙击,我现在只能用最原始的办法异地组网,就是基于IPV6的SSTP,换个端口,加密开满,暂时凑合能用。 总的来说就是必须要有一个公网,没有就免谈了 dcl2009 发表于 2025-4-14 14:10
可惜现在运营商各种恶心你,端对端的UDP被限制的死死地,TCP也限制的厉害,更别提协议精准狙击,我现在只能 ...
对头
tailscale客户端+headscale+自建节点,其他客户端 常常被限速到1M以下。 dcl2009 发表于 2025-4-14 14:10
可惜现在运营商各种恶心你,端对端的UDP被限制的死死地,TCP也限制的厉害,更别提协议精准狙击,我现在只能 ...
是的,运营商直接限上传到10M,任凭再多花活也都瞬间没意义 自建的也得要递归过去吧 除非大量的缓存。 21mm 发表于 2025-4-14 19:03
自建的也得要递归过去吧 除非大量的缓存。
内网 DNS 只负责解析内网以及自己维护的 A、MX、CNAME 这些个常用的,其余的都是转发器丢给公网 DNS 21mm 发表于 2025-4-14 19:03
自建的也得要递归过去吧 除非大量的缓存。
看到贴子(记不得哪看到的了),自建DNS递归服务器也是会被打击的,目前只看到一例……脑壳痛 复杂了啊
如果你的需求,我的解决办法
1 极空间 NAS ,有无公网IP都可以,自带远程穿透可以外面直接访问家里网络,
2+3,机场,100/年月1T流量
能全局doh就行了。大体上没啥问题。
国内三家:阿里腾讯和360。
最近用360的,发现出奇的好。。。可能是用户不多的缘故。解析cdn也另外两家好。
总之dns还是要根据自己的isp进行测试来选。 不是直接ssh 在公网打个洞,外网就访问了?
一条命令就可以了,你这个好像有点麻烦 之前一模一样的方案 (tailscale+内网AdGuard Home做DNS), 用过一年,后来放弃了
这个方案有一个巨大的问题: 出门在外时,DNS查询延迟爆炸
我举个例子,在外使用移动数据流量,每走几百米基站切换时tailscale就需要重新握手,握手完成前DNS无响应,和断网没区别
最后解决方案是,每一个容器都整合tailscale docker,完美解决问题 这篇帖子唯一重点:你有公网ip Glamour 发表于 2025-4-14 22:13
复杂了啊
如果你的需求,我的解决办法
1 极空间 NAS ,有无公网IP都可以,自带远程穿透可以外面直接访问 ...
求pn个100/年的链接,这个可以有 已经家里和云融合在一起了,有ospf打底的bgp重分布,同城多出口冗余。 坐等星链大陆地区服务开通,在更多电信业务没有开放之前,做这些什么都是很累的,维护也很累,需要的骚操作和小窍门太多。 github一个**的事情,给你这折腾的 开头写的是没有公网,结果里面却是用公网的方法。 先占坑学习一下,后面找机会抄作业,谢谢! 你们可能误解撸主的意思了,撸主只是以自家的网络环境作为示例来部署,并不是说撸主家的宽带是动态公网IP,就必须要依赖公网IP才能实现虚拟组网这一功能,否则撸主帖子开头儿那两行大大的红字标语岂不是噱头?不过这里我更感兴趣的是,假如其它设备安装Tailscale组网是在国外,还能连回国内家里的网络吗?
[偷笑]
页:
[1]