V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yikyo
V2EX  ›  路由器

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

  •  
  •   yikyo · 2023-09-17 10:17:28 +08:00 · 4515 次点击
    这是一个创建于 466 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近又折腾了一下软路由,从原来的 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 ,通过家庭网络进行翻墙

    21 条回复    2024-05-10 21:32:07 +08:00
    MrGba2z
        1
    MrGba2z  
       2023-09-17 10:52:30 +08:00
    4 可以的 开个简单的 wg/tailscale 就行
    我是手机上做了广告判断( reject )和国内常见服务( direct )判断,减少额外的延迟,剩余的情况全部回家里再出去

    3 把 clash 上 fake ip 的 ttl 设置小一点试试 (比如 5s )这样你的 mosdns 在你 clash 挂了之后会很快请求新的解析
    yikyo
        2
    yikyo  
    OP
       2023-09-17 12:13:43 +08:00
    @MrGba2z
    3. ttl 相当于缓存时间?设置足够小也就等于无缓存??

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


    感谢
    slowmist
        3
    slowmist  
       2023-09-17 13:19:34 +08:00   ❤️ 2
    https://github.com/daeuniverse/dae/
    试试大鹅 ebpf 层的
    dns 泄漏 设置好国内外的域名 一般没事
    MeteorVIP
        4
    MeteorVIP  
       2023-09-17 13:21:45 +08:00 via iPhone
    clash 的 fake IP 就可以防止泄露了
    Jirajine
        5
    Jirajine  
       2023-09-17 13:28:09 +08:00 via Android
    因为你使用的是大部分正常用户的 dns 分流方案,而大部分正常用户身正不怕影子斜,会主动避免访问不该访问的内容,并不在乎让国内部门知道他在访问什么。
    beneasy
        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 的话,能不用就不用吧,折腾真的好累
    yikyo
        7
    yikyo  
    OP
       2023-09-17 18:05:00 +08:00
    @slowmist
    感谢,我去了解一下
    stonesirsir
        8
    stonesirsir  
       2023-09-17 23:39:27 +08:00 via Android
    大胆点,未知域名直接走 fack 模式不就好了
    linuxgo
        9
    linuxgo  
       2023-09-19 15:50:26 +08:00
    我用的是 routeros 分流,v2raya 做代理,routeros 上的 gfw 列表地址发往 v2raya 处理。vyos 没用过,有空弄个折腾下😁
    journalist
        10
    journalist  
       2023-10-10 19:08:01 +08:00 via iPhone
    @slowmist 感谢,这就是我一直在找的东西
    yyysuo
        11
    yyysuo  
       2023-10-23 16:47:46 +08:00
    1:dns 泄露的话,clash 后面 nameserver 和 fallback 同时接入另外一个 mosdns 即可,参考一下 sbwml 的配置
    3:mosdns 不要开缓存。
    hugovk
        12
    hugovk  
       2023-11-26 13:02:12 +08:00
    请问一下,Vyos 怎么安装 clash ?好用吗?
    yikyo
        13
    yikyo  
    OP
       2023-11-30 21:11:42 +08:00
    @hugovk 滚动发布版本有 container 支持,挺稳定,没什么问题,就是一开始要稍折腾下。
    hugovk
        14
    hugovk  
       2023-12-01 03:15:39 +08:00
    @yikyo 你是说像用 Docker 那样,在 Docker 上安装 Clash ,和 Vyos 同网段,然后,内网要 FQ 的终端,把网关地址指向 Clash ,就跟旁路由类似是吗?如果不用容器,那能不能在 vyos 上直接安装?另外,vyos 的长期稳定版好像也有 container 或 docker 吧
    yikyo
        15
    yikyo  
    OP
       2023-12-07 19:16:21 +08:00
    @hugovk 我是用容器跑 clash,mosdns ,clash 用 fake-ip ,由 mosdns 解析域名,国内域名指向国内 DNS 服务器,国外域名指向 clash,这样就可以自动翻墙了,clash 也不需要分流策略。
    sldaniel
        16
    sldaniel  
       2023-12-20 02:43:50 +08:00
    @yikyo 你这个问题 2 解决了么,我也发现 clash premium 和 meta 的 tun 实现好像不一样,开了 meta 之后,机器上的 docker 端口映射会出问题
    yikyo
        17
    yikyo  
    OP
       360 天前
    @sldaniel 没有,用的 clash premium
    hugovk
        18
    hugovk  
       302 天前
    @yikyo 请问一下,你用容器跑 clash ,network 是用 host 还是 bridge 模式呀?现会不会导致 nftable 出问题?谢谢
    yikyo
        19
    yikyo  
    OP
       291 天前
    @hugovk 用的 bridge 模式,但是对 clash 指定了容器 IP ,路由上对 fake ip 的下一跳指向了 clash 容器 IP ,没有发现问题。
    journalist
        20
    journalist  
       229 天前
    4. 我现在用的方法是开两个 mosdns 实例:一个做国内国外分流,是整个网络的最顶层,这样所有的设备都能获得无污染的 IP ,没有坏处;另外一个作为 fakeip 的下游,关闭缓存,需要 fakeip 的域名就查询 clash ,不需要 fakeip 就查第一个 mosdns (自行维护一个域名列表)。

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

    第二个 mosdns 绕开 fakeip 的目的,是在于减轻 clash 的负担并在提高极端情况下( clash 崩溃)的可用性,而不是为了某些在 fakeip 环境下无法正常工作的应用。这些应用应当通过 clash 内置的 filter 来规避。
    journalist
        21
    journalist  
       229 天前
    @hugovk
    @yikyo
    bridge 模式下有两个缺点,一个是 UDP 无法 fullcone ,因为你没法控制 clash 用什么端口出站;另外一个是 docker 对 ipv6 的支持不够好。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5561 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 03:35 · PVG 11:35 · LAX 19:35 · JFK 22:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.