找回密码
 加入我们
搜索
      
查看: 1749|回复: 21

[网络] 虚拟组网+自建DNS ,完全掌握你所有的设备网络

[复制链接]
发表于 2025-4-14 14:02 | 显示全部楼层 |阅读模式
还在因为没有公网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,然后输入下面代码
  1. docker run --privileged --name tailscale --network host -d tailscale/tailscale
复制代码


查看tailscale是否成功运行
  1. docker ps
复制代码


1.1.2 登陆tailscale
部署成功后输入下面代码
  1. docker exec -it tailscale tailscale up
复制代码

然后打开网址登陆账号后点connect

查看tailscale是否成功登陆
  1. docker exec -it tailscale tailscale status
复制代码


1.1.3 开启子网路由
成功连接后输入下面代码
  1. 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端口有没有被占用
  1. netstat -tulnp
复制代码
果然 被dnsmasq占用了
停用dnsmasq进程就行了 这里我不写方法了 大家请自行问deepseek
(我发现无论教程写的多么详细 每个人都会遇到不同的问题 所以遇到问题问AI 几乎是现在每个人必会的技能,理论上你都不需要看具体方法 就一步步让AI教你 效率和准确性真的比任何教程都高)

成功解除53端口占用了 就可以部署Adguard Home了
  1. 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分钟就能搞定。
然后就可以告诉冲浪了~













发表于 2025-4-14 14:08 | 显示全部楼层
本帖最后由 mk5250 于 2025-4-14 14:15 编辑

第一步公网ip就卡住了,买了阿里的服务器做derp中转勉强凑合用
发表于 2025-4-14 14:08 | 显示全部楼层
这方案我在外面而家里无公网能连上?
发表于 2025-4-14 14:10 | 显示全部楼层
可惜现在运营商各种恶心你,端对端的UDP被限制的死死地,TCP也限制的厉害,更别提协议精准狙击,我现在只能用最原始的办法异地组网,就是基于IPV6的SSTP,换个端口,加密开满,暂时凑合能用。
发表于 2025-4-14 14:11 | 显示全部楼层
总的来说就是必须要有一个公网,没有就免谈了
发表于 2025-4-14 14:16 | 显示全部楼层
dcl2009 发表于 2025-4-14 14:10
可惜现在运营商各种恶心你,端对端的UDP被限制的死死地,TCP也限制的厉害,更别提协议精准狙击,我现在只能 ...

对头
tailscale客户端+headscale+自建节点,其他客户端 常常被限速到1M以下。
发表于 2025-4-14 14:26 | 显示全部楼层
dcl2009 发表于 2025-4-14 14:10
可惜现在运营商各种恶心你,端对端的UDP被限制的死死地,TCP也限制的厉害,更别提协议精准狙击,我现在只能 ...

是的,运营商直接限上传到10M,任凭再多花活也都瞬间没意义
发表于 2025-4-14 19:03 | 显示全部楼层
自建的也得要递归过去吧 除非大量的缓存。
发表于 2025-4-14 19:21 | 显示全部楼层
21mm 发表于 2025-4-14 19:03
自建的也得要递归过去吧 除非大量的缓存。

内网 DNS 只负责解析内网以及自己维护的 A、MX、CNAME 这些个常用的,其余的都是转发器丢给公网 DNS
发表于 2025-4-14 21:13 | 显示全部楼层
21mm 发表于 2025-4-14 19:03
自建的也得要递归过去吧 除非大量的缓存。

看到贴子(记不得哪看到的了),自建DNS递归服务器也是会被打击的,目前只看到一例……脑壳痛
发表于 2025-4-14 22:13 | 显示全部楼层
复杂了啊
如果你的需求,我的解决办法
1 极空间 NAS ,有无公网IP都可以,自带远程穿透可以外面直接访问家里网络,
2+3,机场,100/年月1T流量
发表于 2025-4-14 22:16 来自手机 | 显示全部楼层
能全局doh就行了。大体上没啥问题。

国内三家:阿里腾讯和360。

最近用360的,发现出奇的好。。。可能是用户不多的缘故。解析cdn也另外两家好。

总之dns还是要根据自己的isp进行测试来选。
发表于 2025-4-14 23:22 | 显示全部楼层
不是直接ssh 在公网打个洞,外网就访问了?

一条命令就可以了,你这个好像有点麻烦
发表于 2025-4-14 23:36 | 显示全部楼层
之前一模一样的方案 (tailscale+内网AdGuard Home做DNS), 用过一年,后来放弃了
这个方案有一个巨大的问题: 出门在外时,DNS查询延迟爆炸
我举个例子,在外使用移动数据流量,每走几百米基站切换时tailscale就需要重新握手,握手完成前DNS无响应,和断网没区别
最后解决方案是,每一个容器都整合tailscale docker,完美解决问题
发表于 2025-4-15 07:50 | 显示全部楼层
这篇帖子唯一重点:你有公网ip
发表于 2025-4-15 07:55 | 显示全部楼层
Glamour 发表于 2025-4-14 22:13
复杂了啊
如果你的需求,我的解决办法
1 极空间 NAS ,有无公网IP都可以,自带远程穿透可以外面直接访问 ...

求pn个100/年的链接,这个可以有
发表于 2025-4-15 08:45 | 显示全部楼层
已经家里和云融合在一起了,有ospf打底的bgp重分布,同城多出口冗余。
发表于 2025-4-15 09:13 | 显示全部楼层
坐等星链大陆地区服务开通,在更多电信业务没有开放之前,做这些什么都是很累的,维护也很累,需要的骚操作和小窍门太多。
发表于 2025-4-15 09:30 来自手机 | 显示全部楼层
github一个**的事情,给你这折腾的
发表于 2025-4-15 09:34 | 显示全部楼层
开头写的是没有公网,结果里面却是用公网的方法。
发表于 2025-4-15 09:41 | 显示全部楼层
先占坑学习一下,后面找机会抄作业,谢谢!
发表于 2025-4-16 22:27 | 显示全部楼层
你们可能误解撸主的意思了,撸主只是以自家的网络环境作为示例来部署,并不是说撸主家的宽带是动态公网IP,就必须要依赖公网IP才能实现虚拟组网这一功能,否则撸主帖子开头儿那两行大大的红字标语岂不是噱头?不过这里我更感兴趣的是,假如其它设备安装Tailscale组网是在国外,还能连回国内家里的网络吗?
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

Archiver|手机版|小黑屋|Chiphell ( 沪ICP备12027953号-5 )沪公网备310112100042806 上海市互联网违法与不良信息举报中心

GMT+8, 2025-4-27 01:59 , Processed in 0.013121 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2007-2024 Chiphell.com All rights reserved.

快速回复 返回顶部 返回列表