不聊苹果,聊点家庭网络出国方案

236 天前
 yikyo

最近又折腾了一下软路由,从原来的 esxi+xxx ,直接换成了 vyos (基于 debian 的路由系统),上面跑了 adguardhome + mosdns + clash ( tun + fake ip )

大概逻辑是用 mosdns 做分流,国内的域名请求国内 dns 、国外的域名用 fake ip ,未知的域名先走国内 dns ,如果返回的不是国内 ip 段,则丢弃重新用 fake ip 走国外,clash 不做任何规则判断,路由器添加一条路由 fake ip 段指向 clash 容器就完事了,规则简单、维护方便,只需要 20 行不到的配置(不包含代理节点)

碰到的几个问题聊一下

1 、dns 泄漏问题,假设有未知域名 example.com ,先走国内 dns ,那国内 dns 就知道你在访问 example.com ,造成 dsn 泄漏,大佬们一般是怎么来避免 dns 泄漏

2 、clash 、clash.meta tun 实现是否有区别,clash.meta 用这个方案实现后,vyos 能翻墙,但是下面的机器都无法翻墙,而 clash 没问题。在 clash.meta 日志中能看到一些 udp 流量,tcp 流量看不到,要解决这个问题要使用 iptables?

3 、dns 缓存问题,mosdns 不支持写入缓存过滤逻辑,某些原因 clash 重启后,fake ip 从 dns 缓存中获取,当 clash 反查域名进行代理,可能获取不到域名,或者得到错误的域名,表现就是打不开网页,或者提示证书错误,在调试中经常遇到,clash meta 有 fake ip 域名映射持久化配置,所以可能这个问题不太严重,要解决这个问题最好是有 dns 服务器有缓存过滤功能,有没有第三方的 dns 服务器有这个功能推荐一下

4 、以前手机上是使用 quantumult x ,需要独立配置规则,能不能使用 tailscale 连到 vyos ,通过家庭网络进行翻墙

3291 次点击
所在节点    路由器
21 条回复
MrGba2z
236 天前
4 可以的 开个简单的 wg/tailscale 就行
我是手机上做了广告判断( reject )和国内常见服务( direct )判断,减少额外的延迟,剩余的情况全部回家里再出去

3 把 clash 上 fake ip 的 ttl 设置小一点试试 (比如 5s )这样你的 mosdns 在你 clash 挂了之后会很快请求新的解析
yikyo
236 天前
@MrGba2z
3. ttl 相当于缓存时间?设置足够小也就等于无缓存??

4.谢谢,过几天有空我再试下


感谢
slowmist
236 天前
https://github.com/daeuniverse/dae/
试试大鹅 ebpf 层的
dns 泄漏 设置好国内外的域名 一般没事
MeteorVIP
236 天前
clash 的 fake IP 就可以防止泄露了
Jirajine
236 天前
因为你使用的是大部分正常用户的 dns 分流方案,而大部分正常用户身正不怕影子斜,会主动避免访问不该访问的内容,并不在乎让国内部门知道他在访问什么。
beneasy
236 天前
最近折腾的一个比较好解决 dns 泄露的就是只用 adguardhome ,配合 dnsmasq-china-list 所生成的 upstream_dns_file ,国内域名走阿里 doh ,剩下的走海外传统 udp dns ( doh 用不了)兜底,这应该算比较完美的了。遇到未知域名直接走海外 dns ,然后 adguardhome 会产生乐观缓存,其实体验还挺不错的。至于 clash 的话,能不用就不用吧,折腾真的好累
yikyo
236 天前
@slowmist
感谢,我去了解一下
stonesirsir
236 天前
大胆点,未知域名直接走 fack 模式不就好了
linuxgo
234 天前
我用的是 routeros 分流,v2raya 做代理,routeros 上的 gfw 列表地址发往 v2raya 处理。vyos 没用过,有空弄个折腾下😁
journalist
213 天前
@slowmist 感谢,这就是我一直在找的东西
yyysuo
200 天前
1:dns 泄露的话,clash 后面 nameserver 和 fallback 同时接入另外一个 mosdns 即可,参考一下 sbwml 的配置
3:mosdns 不要开缓存。
hugovk
166 天前
请问一下,Vyos 怎么安装 clash ?好用吗?
yikyo
162 天前
@hugovk 滚动发布版本有 container 支持,挺稳定,没什么问题,就是一开始要稍折腾下。
hugovk
161 天前
@yikyo 你是说像用 Docker 那样,在 Docker 上安装 Clash ,和 Vyos 同网段,然后,内网要 FQ 的终端,把网关地址指向 Clash ,就跟旁路由类似是吗?如果不用容器,那能不能在 vyos 上直接安装?另外,vyos 的长期稳定版好像也有 container 或 docker 吧
yikyo
155 天前
@hugovk 我是用容器跑 clash,mosdns ,clash 用 fake-ip ,由 mosdns 解析域名,国内域名指向国内 DNS 服务器,国外域名指向 clash,这样就可以自动翻墙了,clash 也不需要分流策略。
sldaniel
143 天前
@yikyo 你这个问题 2 解决了么,我也发现 clash premium 和 meta 的 tun 实现好像不一样,开了 meta 之后,机器上的 docker 端口映射会出问题
yikyo
131 天前
@sldaniel 没有,用的 clash premium
hugovk
73 天前
@yikyo 请问一下,你用容器跑 clash ,network 是用 host 还是 bridge 模式呀?现会不会导致 nftable 出问题?谢谢
yikyo
62 天前
@hugovk 用的 bridge 模式,但是对 clash 指定了容器 IP ,路由上对 fake ip 的下一跳指向了 clash 容器 IP ,没有发现问题。
journalist
5 小时 35 分钟前
4. 我现在用的方法是开两个 mosdns 实例:一个做国内国外分流,是整个网络的最顶层,这样所有的设备都能获得无污染的 IP ,没有坏处;另外一个作为 fakeip 的下游,关闭缓存,需要 fakeip 的域名就查询 clash ,不需要 fakeip 就查第一个 mosdns (自行维护一个域名列表)。

注意如果一个域名没有经过 clash 的查询,那么它的 ip 也应该不经过 clash ,需要你配置一下策略路由。

第二个 mosdns 绕开 fakeip 的目的,是在于减轻 clash 的负担并在提高极端情况下( clash 崩溃)的可用性,而不是为了某些在 fakeip 环境下无法正常工作的应用。这些应用应当通过 clash 内置的 filter 来规避。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/974523

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX