相对小众网络配置
用的 vyos 系统,内部有 3 个容器,adguardhome mosdns clash
adguardhome 用来缓存 dns 请求,日志查询功能,上级是 mosdns
mosdns 用来做 dns 分流,国内域名直接指向阿里、腾讯 dns ,国外域名指向 clash dns
clash ,使用 fake ip ,没有任何规则,容器启用了 tun
vyos 配置了一条路由 针对 fake ip 段的路由至 clash 容器 IP
按网上的教程,只要把 tg 的 ip 段路由到 clash 就可以代理,但是无法成功。
可能会出现问题的地方
1 ,clash 规则未指定 ip 规则,tg 的流量进来没有捕获,但是我使用 clash 全局模式也未成功
2 ,clash 使用 fake ip 模式后,无法针对 ip 代理
3 ,tg 的 ip 段路由设置错误
请问怎么测试解决这个问题。可付费咨询,4 杯奶茶
1
yyzh 247 天前
TG 内部写死 IP 的.跟微信一样就算 DNS 挂了也能用.所以别折腾 DNS 了.
|
2
Kinnice 247 天前
clash 容器内增加 tg 的 ip route 到 198.18.1.1(clash tun 网口的地址) [不是在 clash config 里面加规则]
|
3
Kinnice 247 天前
可以在 clash 容器内 ip route get 149.154.160.0 看看是不是走的 198.18.1.1
|
4
Kinnice 247 天前
正常应该这样
149.154.160.0 via 198.18.0.2 dev utun table 1970566510 src 198.18.0.1 uid 0 cache |
5
Goooooos 247 天前
geoip,telegram,proxy,no-resolve
|
6
Goooooos 247 天前
或者基于 ruleset
https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Telegram/Telegram.yaml - RULE-SET,Telegram,proxy |
7
yikyo OP @Kinnice 谢谢,我尝试一下看看,感觉有戏。容器挂载了系统的 tun,可以在系统层面解决吗,
按您的建议,是由 vyos 将 tg 路由指向 clash, clash 内部再将路由指向 tun 吗 |
9
eaststarpen 247 天前
# Telegram CIDR
"-p tcp -d 91.105.192.0/23" "-p udp -d 91.105.192.0/23" "-p tcp -d 91.108.4.0/22" "-p udp -d 91.108.4.0/22" "-p tcp -d 91.108.8.0/21" "-p udp -d 91.108.8.0/21" "-p tcp -d 91.108.16.0/21" "-p udp -d 91.108.16.0/21" "-p tcp -d 91.108.56.0/22" "-p udp -d 91.108.56.0/22" "-p tcp -d 95.161.64.0/20" "-p udp -d 95.161.64.0/20" "-p tcp -d 149.154.160.0/20" "-p udp -d 149.154.160.0/20" "-p tcp -d 185.76.151.0/24" "-p udp -d 185.76.151.0/24" 我用的 singbox 方案和你差不多, 上面是 telegram 的 ip 段 |
10
zbatman 247 天前
问题 1 未指定 IP 规则都会走 Match 了
问题 2 TG 是纯 ip 连接,不牵扯 fake-ip 、fake-dns 问题 3 不知道你的 TG IP 段数据来源是啥,参考 https://github.com/Loyalsoldier/clash-rules |
11
zbatman 247 天前
@eaststarpen 方便发下配置文件吗,之前一直想用 sing-box 实现这个流程
|
12
SenLief 247 天前
tg 用 ip 的,直接用不要解析。
|
13
JimmyChan1506 247 天前
自建递归 DNS 服务. 省心, 不用折腾这么多事
PaoPaoDNS + PaoPaoGateWay 了解一下 |
14
yikyo OP |
16
Goooooos 247 天前
@JimmyChan1506 telegram 应该有内建 httpdns ,要把他的服务 ip 加到分流规则,自建 dns 解决不了
|
17
eaststarpen 246 天前 1
@zbatman
``` # sing-box version sing-box version v1.5.2 Environment: go1.21.1 linux/mipsle Tags: with_clash_api,with_dhcp,with_ech,with_quic,with_utls,with_wireguard CGO: disabled ``` 配置脚本 https://pastecode.dev/s/53jrbcqi 最后的 路由表操作 有针对我设备的判断逻辑,你的设备可能不一样。(可以不用管或删去判断逻辑) 删除 iptables 链 https://pastecode.dev/s/1hn9igce 没有操作路由表, 调试用 SingBox 配置文件 https://pastecode.dev/s/qbia00le DNS 模块加上一个 dns_direct 是 outbounds 中可能有的 Server 是域名, 需要 Sing-Box 内部解析 MosDNS 分流, 将需要代理的域名 DNS 请求转发到 SingBox, SingBox 返回 FakeDNS 段 ip. |
18
zbatman 246 天前
@eaststarpen OK ,谢谢你,我研究下
|
19
sereinfy 246 天前
解决了是吧,那给路过的看下
你用的教程是不是在开发者选项里面添加代码的那个, 就是这个 geoip2ipset.sh 是的话可以往下看了 其实是代码缺两个变量 这个方案会阻断所以纯 ip 连接,所以顺便解决了 bt 流量国外的问题。 顺便也把 tg 挡外面了 |
20
yikyo OP @sereinfy 啊,没看懂你那个,我这个大概原因是路由问题,自己将 tg 的 ip 段指向 clash 容器后,容器未处理,在容器内部再设置路由之后就可以了,可能用 clash 配置中的 auto-route 更适合,但是我没成功
后续看到一个帖子,https://v2ex.com/t/1017263 中的 17 楼,也是用类似的方式处理 |
21
sereinfy 246 天前
你用的不是开发者选项里面添加代码这个吗,这个是用 ipset 的方式,随着 lclash 启动一个脚本,把 tg 的所以 ip 段,添加到 ipset 然后转发给 7892 端口、很灵活。不需要重复写很多条规则。我不知道容器方式的适不适用。google 搜索 基于 DNS 的内网透明代理分流方案。看下这篇文章。其实我还是觉得这样还是麻烦,不过目前是最佳
|
22
sereinfy 246 天前
我原本想找更简单的方式,不过 tun 模式下 要复杂了。
|
23
yikyo OP @sereinfy 开发者选项是指什么,我系统是 vyos ,三个容器,还是比较简单的,没有额外的配置,clash 也不需要规则。
如果不需要代理 tg ,没有这些乱七八糟的事,而且我觉得 auto-route 应该可以用,是我哪里没弄好,有时间我再折腾一下。 |
24
JimmyChan1506 226 天前
@Goooooos telegram 使用的是 ip, 的确需要把它们加到主路由中的静态路由表中, 但不觉得会是个问题
|
25
edgeedge 147 天前
你的拓朴是这样的吗?:
网关 ==》 clash 旁路由==》拨号网关==》因特网 对于 clash 即便做了策略,也无法代理 telegram 的问题, 1 让 clash 暴露一个 http 代理接口,在 telegram 软件面板填写使用代理,确保这样 TG 是可被代理的 2 对于透明代理,为什么不行,我猜测,你的网关、clash 旁路由、拨号网关,使用的 ip 地址都是同一段的。对于相同网段的多个相连的网关,现代操作系统,会自动“优化”路由,直接把数据发送到最后一个网关,也就是 拨号网关,这会导致跳过 clash 所在的透明网关。 解决方法,就是 clash 旁路由网关 和 拨号网关,使用不同的 ip 地址。 |