请教 Clash 透明代理问题, iPhone 的哔哩哔哩、微博 app 无法联网,但是网页正常

2021-11-06 21:13:06 +08:00
 AllenHua

和这个 issue 类似,但是我没找到原因在哪,求助攻。

clash 透明代理跑在局域网 n1 这台设备上。

clash config.yaml 配置

redir-port: 7892
mixed-port: 7890
# Transparent proxy server port for Linux (TProxy TCP and TProxy UDP)
#tproxy-port: 7893
allow-lan: true
mode: rule 
# 设置输出日志的等级 (默认为 info)
# silent / info / warning / error / debug
log-level: silent 
external-controller: 0.0.0.0:9090
secret: ""
external-ui: dashboard
# hosts 设置,只有当 DNS 模式为 redir-host 时生效
hosts:
  # '*.clash.dev': 127.0.0.1
  # '.dev': 127.0.0.1
  # 'alpha.clash.dev': '::1'

dns:
  enable: true # 启用自定义 DNS
  ipv6: false # default is false
  listen: 0.0.0.0:53
  enhanced-mode: fake-ip  #DNS 模式,这里推荐使用 fake-ip ,因为后续的 iptables 规则是根据 fake-ip 做的
  fake-ip-range: 198.18.0.1/16 # if you don't know what it is, don't change it
  default-nameserver:
    - 180.76.76.76
    - 119.29.29.29
    - 223.5.5.5
  nameserver:
    - https://doh.pub/dns-query
    - https://dns.alidns.com/dns-query

其中 fallback 相关的配置已经注释掉了

  fallback:
    - 101.6.6.6:5353
  fallback-filter:
    geoip: true
  ipcidr:
    - 240.0.0.0/4

clash debug 级别的日志

[TCP] dial 🎯 全球直连 (match GeoIP/CN) to 202.113.3.108:43388 error: dial tcp4 202.113.3.108:43388: i/o timeout

[TCP] dial 🎯 全球直连 (match GeoIP/CN) to 101.229.42.233:51413 error: dial tcp4 101.229.42.233:51413: connect: connection refused

find process name Process error: no such process

感觉还是 dns 的问题,可以看本文开头那个 issue

已经查了一些资料

12190 次点击
所在节点    问与答
37 条回复
eggt
2021-11-07 14:58:37 +08:00
楼主,我倒是想请教下局域网 N1 上跑 clash 的问题,我是 N1 armbian 上运行 docker ,docker 运行 openwrt ,目前部署上去了,但用不了,能加个蟑小龙请教一下吗? bWN5ZGlhCg==
AllenHua
2021-11-07 15:22:09 +08:00
@eggt #21 晚上吧
bigbyto
2021-11-07 15:32:03 +08:00
@AllenHua dnscrypt-proxy 只需要指定 server_names 即可,我的配置是:

server_names = ['scaleway-fr', 'google', 'yandex', 'cloudflare']

如果这几个网站没法访问,还可以配置 http_proxy 或 socks5 proxy 。

proxy = 'socks5://127.0.0.1:7890'
http_proxy = 'http://127.0.0.1:7891'

一般情况不需要指定,cloudflare 的 doh 应该是可用的,查询结果会被 dnscrypt-proxy 缓存起来,这个的配置就是这样。搭配 dnsmasq 的话有两种用法:

1. 使用 dnscrypt-proxy 作为 dnsmasq 的上游
dnsmsaq 需要去 github 找一份国内域名的列表,这份列表使用国内的 dns 解析,可以用阿里的 223.5.5.5 。关于这些的配置网上有很多,这样就可以实现国内域名用国内 dns 解析,其他域名使用 dnscrypt-proxy 解析。

需要注意的是,用了这个方法,如果你配置了 http_proxy 或者 socks5 来代理 doh 解析时,记得要在 dnsmsaq 中指定你的 fq 服务器域名使用一个国内或者其他可以用的 dns 服务来解析,不然会因为你的域名不在 dnsmasq 不在白名单内,跑到 dnscrypt-proxy 解析,造成无法解析你的 server 的情况。

2. dnsmasq 配置被墙的域名列表,配置 dnscrypt-proxy 解析
这种方案就是跟上面反过来,需要自己去整理被墙的域名列表。
m1nm13
2021-11-07 16:51:00 +08:00
在 MIPS 和 ARM 版的 Openclash 上疯狂翻车,我已经不信任这两个版本了,现在只用 clash for windows , X86 的 Openclash 没试过,不评论。

一般就是 DNSMASQ 有问题,但是懒得弄。和 CLASH 本身可能并没有关系,大概率和 OPENWRT 水土不服。各种 ADGUARD ,smartDNS 之类的 DNS 服务嵌套一下,DNS 很容易就崩溃在莫名奇妙的地方。

N1 做旁路由我也遇到过奇葩的,不能有 br-lan 的问题,不然通过 WIFI 连接的话,反复 DNS 超时。但是不用 br-lan,只用 ETH0 ,又有很多服务是硬绑定 bridge 的,删了 br-lan 就反复崩溃报错。只能说,开源有好的一面,也有不好的一面
AllenHua
2021-11-07 17:25:13 +08:00
@bigbyto #23 非常感谢分享了。不过我也有发现 https://github.com/wolf-joe/ts-dns 这个 dns 转发器似乎部署在本地也很不错呢。
eggt
2021-11-07 17:53:46 +08:00
@AllenHua 好的,多谢老哥了
AllenHua
2021-11-07 18:48:03 +08:00
@m1nm13 #24 我这使用过几次 openclash 也是各种问题,虽然界面看起来像是很多功能,非常强大。但是诸如 ruby 依赖、clash 守护程序未运行我遇到过好几次。很可能与 openwrt 固件相关,大家用的都是不同的人编译的(或是用户自己编译的)。

可以尝试 clash core + dashboard ,也一样很好用。
2218675712
2021-11-07 20:59:41 +08:00
对的,这周末白折腾两天,还是退回到老毛子
AllenHua
2021-11-10 09:40:52 +08:00
@2218675712 #28 openclash 对各个依赖的“依赖”太强烈了,稍有不适就无法运行,clash core 目前用下来感觉很省心
adrianzhang
2022-01-12 18:45:27 +08:00
@hronro
@bigbyto 同问一下
没用 clash 内置的 DNS ,但后来发现如果这样 clash 很多域名匹配的规则就无法生效了,因为 clash 拿不到域名的信息。请问你是如何解决这个问题的?
bigbyto
2022-01-12 19:54:33 +08:00
@adrianzhang 你是指被 dns 污染的域名无法解析?对于被 dns 污染的域名,需要使用 dns 代理。我是用 dnscrypt-proxy 代理被污染的域名同时缓存 dns 应答。针对国内域名做分流走阿里 doh 。
adrianzhang
2022-01-12 20:40:24 +08:00
@bigbyto 我的情况是这样的,局域网里有无污染 DNS 服务器,Clash 配置里 dns false ,rules 里配置不同域名走不同的 proxy 条目不生效。直接用 socks5 传给 Clash 域名也匹配不到域名相关的 proxy 。
hronro
2022-01-12 20:45:41 +08:00
@adrianzhang #30
这个问题我已经解决了。
把 Clash 的上游 DNS 设置为你无污染 DNS 服务器,然后局域网内其他设备使用 Clash 的 DNS 即可。
bigbyto
2022-01-12 21:40:21 +08:00
@adrianzhang 意思是你的分流还是基于 clash 吗?我的分流是 dnsmasq 做的,dnscrypt-proxy 作为 dnsmasq 的上游。dnsmasq 有人维护了国内的地址,直接走 223.5.5.5 或者内网的国内 doh ,白名单外走 dnscrypt-proxy 。这个规则可以应付绝大多数情况。
adrianzhang
2022-01-13 00:57:24 +08:00
@hronro 就是说,Clash 配置里要 dns enable ,那 fake ip 什么的怎么弄?

@bigbyto 我也是 dnsmasq 做的,单独一个机器跑 dnsmasq 。
hronro
2022-01-13 10:37:43 +08:00
@adrianzhang #35 我没用 fake ip ,用的 redir-host
adrianzhang
2022-01-13 10:49:05 +08:00
@hronro 好的,非常感谢!

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

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

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

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

© 2021 V2EX