惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog RSS Feed
量子位
Y
Y Combinator Blog
大猫的无限游戏
大猫的无限游戏
B
Blog
U
Unit 42
C
Check Point Blog
I
InfoQ
aimingoo的专栏
aimingoo的专栏
雷峰网
雷峰网
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 【当耐特】
人人都是产品经理
人人都是产品经理
The Cloudflare Blog
H
Help Net Security
MongoDB | Blog
MongoDB | Blog
博客园 - Franky
H
Hackread – Cybersecurity News, Data Breaches, AI and More
J
Java Code Geeks
Microsoft Azure Blog
Microsoft Azure Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
云风的 BLOG
云风的 BLOG
宝玉的分享
宝玉的分享
爱范儿
爱范儿

Jiajun的技术笔记

你好,2026! TiDB 源码阅读(六):TiDB Coprocessor 源码解析 性能优化的核心思想 TiDB 源码阅读(五):索引 TiDB 源码阅读(四):AST、逻辑计划、物理计划 CockroachDB Serverless Architecture podman 无故退出 Cursor Control-L (CTRL-L) Keyboard Shortcuts in Terminal Replace docker with podman Using xmonad with xfce4 A RC script for freebsd frpc 自己动手写一个k8s controller AI 会取代你的(编程)岗位吗? 自建DERP服务器提升Tailscale连接速度(使用Nginx转发) 自动升级Docker容器 再读《程序员修炼之道-从小工到专家》 让浏览器下载文件 再读《软件随想录》/《黑客与画家》/《软技能》 HTTP 压力测试中的 Coordinated Omission 2的补码 编程语言中的 context 是什么? flutter macOS 构建出错 Flatpak 使用小记 Golang CAS 操作是怎么实现的 PostgreSQL 当MQ来使用 使用 PostgreSQL 搭建 JuiceFS PostgreSQL 配置优化和日志分析 有GitHub Copilot?那就可以搭建你的ChatGPT4服务 窗口函数的使用(以PG为例) 读《为什么学生不喜欢上学》
Clash 结合 工作VPN 的网络设计
Jiajun Huang · 2024-03-08 · via Jiajun的技术笔记

这个是我曾经探索实践过的方案,主要用于学习工作,但是看网络上有不少人有同样的疑惑,因此整理一下分享给大家。 Clash是一个网络分流工具,为了方便使用,我直接在 OpenWRT 也就是路由器这一层面搭建的Clash,因此只要在局域网内都可以获得流畅的网络。

请注意,本文没有写的特别详细,需要一定的网络基础功才能看懂。

但是有这么一种情况,就是有可能你公司的VPN,和clash的规则冲突,尤其是当你启用了clash的 fake-ip 功能以后。

解决方案的核心,其实就是使用 clash 规则中的 SRC-IP-CIDR,以及 fake-ip-filter

首先我们看看出问题的网络架构:

Network does not work with VPN

每个公司的VPN都有自己的一套路由规则,有的是全局代理,有的是规则代理。Clash的原理,其实也是按照规则来路由流量, 这两者很有可能就会冲突,因此我的做法就是,划分一台独立的设备,这样就可以获得局域网内一个IP地址,然后设置为固定IP。 然后在 clash 上配置,从这个IP发出的流量,一律直连,这样就相当于在局域网的网络规则中开了一个特殊通道,让VPN能够正常连上 公司的服务器。

配置方法,就是在 config.yml 中,rules 下添加一条特殊规则:

config.yml 是clash的配置文件

rules:
- SRC-IP-CIDR,192.168.100.3/32,DIRECT

这样就实现了只要是从这台机器的流量,全都会直接打到 VPN server 上。但是如果你的工作VPN不是全局模式,而是规则代理模式,而 恰好你的clash使用的是 fake-ip 模式,那有可能有一些内部网站你仍然无法访问,因为 fake-ip 模式给了你一个假的解析出来的地址, 恰好这个IP地址没有命中VPN的路有规则,解决办法也很简单,就是在 config.ymlfake-ip-filter 中加入你的域名,例如:

fake-ip-filter:
- '*.lan'
- '*.localdomain'
- '*.example'

公司 VPN 的网络问题解决了,那么你的笔记本或者台式机,要怎么访问呢?我的办法是在这台独立的机器上搭建 socks5 服务, 然后笔记本或者台式机使用 SwitchOmega/SmartProxy 等连接到 socks5 服务,从而使用VPN网络中的流量,网络拓扑如下:

Network with VPN

搭建 socks5 服务,常见的就是又搞 ss/clash 等,但是我有一个更简单的办法:

$ ssh -D $port_number $username@$hostname
# 例如
$ ssh -D 1081 [email protected]

然后笔记本或者台式机直接使用 127.0.0.1:1081 的 socks5 代理即可临时使用VPN网络,其余时候就关闭 SwitchOmega/SmartProxy 使用直连网络, 或者不怕麻烦的话,配置一个规则,按域名走不同的代理即可。