透明代理+OSPF动态路由=近乎完美的全自动旁路由方案 #3284
Replies: 9 comments 5 replies
-
xray电报群的验证问题好鬼畜啊,今天又被踢了( |
Beta Was this translation helpful? Give feedback.
-
实验性添加了persistent route设置, // config example
"dnsCircuit": {
"outboundTags": ["proxy-hk", "proxy-jp"],
"persistentRoute": [
"geoip:telegram"
],
"ospfSetting": {
"ifName": "ens160",
"address": "192.168.87.2/24"
}
} 已知问题:
Apr 20 16:22:27 debianpov v2test[176916]: V2Ray 5.15.1 (V2Fly, a community-driven edition of V2Ray.) Custom (go1.22.2 linux/amd64)
Apr 20 16:22:27 debianpov v2test[176916]: A unified platform for anti-censorship.
Apr 20 16:22:36 debianpov v2test[176916]: 2024/04/20 16:22:36 [OSPF] adding persistent route: 91.105.192.0/23
Apr 20 16:22:36 debianpov v2test[176916]: 2024/04/20 16:22:36 [OSPF] adding persistent route: 91.108.4.0/22
Apr 20 16:22:36 debianpov v2test[176916]: 2024/04/20 16:22:36 [OSPF] adding persistent route: 91.108.8.0/21
Apr 20 16:22:36 debianpov v2test[176916]: 2024/04/20 16:22:36 [OSPF] adding persistent route: 91.108.16.0/21
Apr 20 16:22:36 debianpov v2test[176916]: 2024/04/20 16:22:36 [OSPF] adding persistent route: 91.108.56.0/22
Apr 20 16:22:36 debianpov v2test[176916]: 2024/04/20 16:22:36 [OSPF] adding persistent route: 95.161.64.0/20
Apr 20 16:22:36 debianpov v2test[176916]: 2024/04/20 16:22:36 [OSPF] adding persistent route: 149.154.160.0/20
Apr 20 16:22:36 debianpov v2test[176916]: 2024/04/20 16:22:36 [OSPF] adding persistent route: 185.76.151.0/24
Apr 20 16:22:36 debianpov v2test[176916]: 2024/04/20 16:22:36 [Warning] app/dnscircuit: persistent route: geoip:TELEGRAM ignored non-IPv4 cidr [2001:67c:4e8::]/48
Apr 20 16:22:36 debianpov v2test[176916]: 2024/04/20 16:22:36 [Warning] app/dnscircuit: persistent route: geoip:TELEGRAM ignored non-IPv4 cidr [2001:b28:f23c::]/47
Apr 20 16:22:36 debianpov v2test[176916]: 2024/04/20 16:22:36 [Warning] app/dnscircuit: persistent route: geoip:TELEGRAM ignored non-IPv4 cidr [2001:b28:f23f::]/48
Apr 20 16:22:36 debianpov v2test[176916]: 2024/04/20 16:22:36 [Warning] app/dnscircuit: persistent route: geoip:TELEGRAM ignored non-IPv4 cidr [2a0a:f280::]/32
Apr 20 16:22:36 debianpov v2test[176916]: 2024/04/20 16:22:36 [Warning] V2Ray 5.15.1 started
Apr 20 16:22:38 debianpov v2test[176916]: 2024/04/20 16:22:38 192.168.87.1:60474 accepted udp:192.168.87.2:53 [dns-out] |
Beta Was this translation helpful? Give feedback.
-
V站来的,我目前使用ospf的时候,确实被透明代理direct流量产生环路的问题困扰。请问这个方案是否可以与dae配合 |
Beta Was this translation helpful? Give feedback.
-
另外关于DNS,可以用VRRP让主路由与旁路由共享一个虚拟IP,dhcp服务器将dns指向这个虚拟ip,然后旁路由的VRRP优先级设置为更高。主ROS的dns采用运营商默认DNS,这样如果旁路由挂了,主路由会自动接管VRRP的IP,不影响客户端的DNS查询 |
Beta Was this translation helpful? Give feedback.
-
功能更新:
|
Beta Was this translation helpful? Give feedback.
-
经过几天测试,我配合ikuai的docker运行bird进行了部署,大致工作良好,但对于那些像图片通过二级域名cdn加速的图片有时体验会不好。 |
Beta Was this translation helpful? Give feedback.
-
我现在用 dreamacro/clash-premium:2023.08.17 搭的透明代理,有同样的困扰,请问还有更简单的方案嘛? |
Beta Was this translation helpful? Give feedback.
-
前言
家里各种杂七杂八设备很多,有些设备可以方便科学,有些不行。
而且,我个人不太喜欢在需要科学的时候再开软件,尤其是手机同步电脑阅读记录时,打不开链接的感觉仿佛是坐马桶上蹿了一样难受。
所以,用网关做科学是我的基本要求。
设想
网关目前比较成熟的方案就是透明代理,但现在的透明旁路方案,都需要手动修改内网设备的网关,或者把默认网关指向旁路。
前者繁琐,后者不适合高吞吐场景。
有没有一种按需自动走旁路由的方案呢?
把不需要科学的流量直接从主路由发出,需要科学的流量再按需转发到旁路处理。
根据我有限的网络知识来说,这种情况只能从路由表下手。
为此我提出一个设想:
由旁路由接管DNS,以域名+DNS解析结果,去匹配旁路由的路由决策
具体细节可以看我在v2ray那边的讨论
v2fly/v2ray-core#2686
目前状况
目前我已经按上文设想,手搓了一套OSPF实现,然后在自己内网搭好了一整套解决方案。
代码目前在我fork的v2ray分支上,感兴趣的大佬可以自己尝试一下。
https://github.com/povsister/v2ray-core/tree/app/dns-circuit
这几天体验下来基本符合预期,唯一缺点是v2ray对于UDP的支持有点鬼畜,teams还有部分游戏表现不佳。
最近关注到了xray,看到xray对于UDP转发这块做了很大的改进。所以想迁移到xray上试试。
不知道xray社区对于这个带路由通告的透明代理有没有兴趣。
文末详细叙述一下整套解决方案
解决方案细节
前置要求
配置要求
目前缺点
我个人体验下来这俩缺点基本没啥影响。被自己回旋镖打了,电报压根没用DNS个例可以通过直接在配置里写静态CIDR,或者指定一个active loading的domain list file,由xray定期主动解析并刷新路由(不管有没有DNS请求)即可。
一些截图
v2ray配置,指定命中特定outbound的路由通告,指定OSPF运行接口及相关配置
v2ray与主路由形成OSPF邻接关系+自动根据DNS请求通告路由CIDR
ROS(主路由)上的路由表
旁路由设置好IP转发masquerade,用于直接转发透明代理不处理的流量(TCP/UDP以外的流量),以及部分不小心被默认/24 CIDR误伤的流量,
ROS 设置策略路由,避免形成转发环路
Beta Was this translation helpful? Give feedback.
All reactions