最近又折腾了一下软路由,从原来的 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 ,通过家庭网络进行翻墙
1
MrGba2z 2023-09-17 10:52:30 +08:00
4 可以的 开个简单的 wg/tailscale 就行
我是手机上做了广告判断( reject )和国内常见服务( direct )判断,减少额外的延迟,剩余的情况全部回家里再出去 3 把 clash 上 fake ip 的 ttl 设置小一点试试 (比如 5s )这样你的 mosdns 在你 clash 挂了之后会很快请求新的解析 |
3
slowmist 2023-09-17 13:19:34 +08:00 2
|
4
MeteorVIP 2023-09-17 13:21:45 +08:00 via iPhone
clash 的 fake IP 就可以防止泄露了
|
5
Jirajine 2023-09-17 13:28:09 +08:00 via Android
因为你使用的是大部分正常用户的 dns 分流方案,而大部分正常用户身正不怕影子斜,会主动避免访问不该访问的内容,并不在乎让国内部门知道他在访问什么。
|
6
beneasy 2023-09-17 14:21:05 +08:00 1
最近折腾的一个比较好解决 dns 泄露的就是只用 adguardhome ,配合 dnsmasq-china-list 所生成的 upstream_dns_file ,国内域名走阿里 doh ,剩下的走海外传统 udp dns ( doh 用不了)兜底,这应该算比较完美的了。遇到未知域名直接走海外 dns ,然后 adguardhome 会产生乐观缓存,其实体验还挺不错的。至于 clash 的话,能不用就不用吧,折腾真的好累
|
8
stonesirsir 2023-09-17 23:39:27 +08:00 via Android
大胆点,未知域名直接走 fack 模式不就好了
|
9
linuxgo 2023-09-19 15:50:26 +08:00
我用的是 routeros 分流,v2raya 做代理,routeros 上的 gfw 列表地址发往 v2raya 处理。vyos 没用过,有空弄个折腾下😁
|
10
journalist 2023-10-10 19:08:01 +08:00 via iPhone
@slowmist 感谢,这就是我一直在找的东西
|
11
yyysuo 2023-10-23 16:47:46 +08:00
1:dns 泄露的话,clash 后面 nameserver 和 fallback 同时接入另外一个 mosdns 即可,参考一下 sbwml 的配置
3:mosdns 不要开缓存。 |
12
hugovk 2023-11-26 13:02:12 +08:00
请问一下,Vyos 怎么安装 clash ?好用吗?
|
14
hugovk 2023-12-01 03:15:39 +08:00
@yikyo 你是说像用 Docker 那样,在 Docker 上安装 Clash ,和 Vyos 同网段,然后,内网要 FQ 的终端,把网关地址指向 Clash ,就跟旁路由类似是吗?如果不用容器,那能不能在 vyos 上直接安装?另外,vyos 的长期稳定版好像也有 container 或 docker 吧
|
15
yikyo OP @hugovk 我是用容器跑 clash,mosdns ,clash 用 fake-ip ,由 mosdns 解析域名,国内域名指向国内 DNS 服务器,国外域名指向 clash,这样就可以自动翻墙了,clash 也不需要分流策略。
|
16
sldaniel 2023-12-20 02:43:50 +08:00
@yikyo 你这个问题 2 解决了么,我也发现 clash premium 和 meta 的 tun 实现好像不一样,开了 meta 之后,机器上的 docker 端口映射会出问题
|
19
yikyo OP @hugovk 用的 bridge 模式,但是对 clash 指定了容器 IP ,路由上对 fake ip 的下一跳指向了 clash 容器 IP ,没有发现问题。
|
20
journalist 225 天前
4. 我现在用的方法是开两个 mosdns 实例:一个做国内国外分流,是整个网络的最顶层,这样所有的设备都能获得无污染的 IP ,没有坏处;另外一个作为 fakeip 的下游,关闭缓存,需要 fakeip 的域名就查询 clash ,不需要 fakeip 就查第一个 mosdns (自行维护一个域名列表)。
注意如果一个域名没有经过 clash 的查询,那么它的 ip 也应该不经过 clash ,需要你配置一下策略路由。 第二个 mosdns 绕开 fakeip 的目的,是在于减轻 clash 的负担并在提高极端情况下( clash 崩溃)的可用性,而不是为了某些在 fakeip 环境下无法正常工作的应用。这些应用应当通过 clash 内置的 filter 来规避。 |
21
journalist 225 天前
|