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

推荐订阅源

阮一峰的网络日志
阮一峰的网络日志
Google DeepMind News
Google DeepMind News
Engineering at Meta
Engineering at Meta
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
宝玉的分享
宝玉的分享
Latest news
Latest news
aimingoo的专栏
aimingoo的专栏
云风的 BLOG
云风的 BLOG
美团技术团队
V
Visual Studio Blog
F
Full Disclosure
腾讯CDC
H
Help Net Security
D
DataBreaches.Net
M
MIT News - Artificial intelligence
罗磊的独立博客
博客园 - 司徒正美
N
Netflix TechBlog - Medium
U
Unit 42
Vercel News
Vercel News
I
InfoQ
S
SegmentFault 最新的问题
B
Blog RSS Feed
博客园 - 三生石上(FineUI控件)
Microsoft Security Blog
Microsoft Security Blog
有赞技术团队
有赞技术团队
博客园_首页
The GitHub Blog
The GitHub Blog
T
Tailwind CSS Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
NISL@THU
NISL@THU
P
Privacy & Cybersecurity Law Blog
Recorded Future
Recorded Future
Y
Y Combinator Blog
S
Schneier on Security
P
Proofpoint News Feed
T
Tenable Blog
Cloudbric
Cloudbric
博客园 - 【当耐特】
The Register - Security
The Register - Security
人人都是产品经理
人人都是产品经理
Google DeepMind News
Google DeepMind News
C
Cyber Attacks, Cyber Crime and Cyber Security
量子位
A
Arctic Wolf
N
News and Events Feed by Topic
H
Hacker News: Front Page
MongoDB | Blog
MongoDB | Blog
The Hacker News
The Hacker News
Webroot Blog
Webroot 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为例) 读《为什么学生不喜欢上学》 OpenAI Prompt Engineering 摘录和总结 读《打造真正的新产品》 VueJS 总结 Linux 自动挂载 alist 提供的webdav FreeBSD 使用 vm-bhyve 安装Debian虚拟机 FreeBSD 和 Linux 网卡聚合实现提速 GPT 帮我搞定了时区转换问题 长任务系统如何处理? macOS/Linux 编译 InputLeap 使用开源软KVM - synergy-core 解决 macOS 终端hostname一直变化问题 KVM 共享 Intel 集成显卡 PromQL 备忘 读《格鲁夫给经理人的第一课》 读《打开心智》 为什么要把复杂的联表操作拆成多个单表查询? 红包系统的设计 MySQL Index Condition Pushdown Optimization Go mod 简明教程 OpenWRT 使用 Android/iOS USB 网络 搭建旁路由 Golang gRPC 错误处理 编写可维护的单元测试代码 OAuth 2 详解(六):Authorization Code Flow with PKCE OAuth 2 详解(五):Device Authorization Flow OAuth 2 详解(三):Resource Owner Password Credentials Grant OAuth 2 详解(四):Client Credentials Flow OAuth 2 详解(二):Implict Grant Flow OAuth 2 详解(一):简介及 Authorization Code 模式 ElasticSearch 学习笔记 三种git流程以及发版模型 错误处理实践 权限模型(RBAC/ABAC) OIDC(OpenID Connect) 简介 任务队列简介 PostgreSQL 操作笔记 使用Drone CI构建CI/CD系统 Golang migrate 做数据库变更管理 使用PostgreSQL做搜索引擎 Nginx 源码阅读(三): 连接池、内存池 Nginx 源码阅读(二): 请求处理 Nginx 源码阅读(一): 启动流程 Go 泛型简明教程 KVM 显卡穿透给 Windows 使用 HTTP Router 处理 Telegram Bot 按钮回调 使用反射(reflect)对结构体赋值 GIN 是如何绑定参数的 你好 2022(2021 年终总结) 用Go导入大型CSV到PostgreSQL 使用 OpenWRT 搭建软路由 使用软KVM切换器 barrier 共享键鼠 SQL 防注入及原理 使用 gomock 测试 Go 代码 gevent不是黑魔法(二): gevent 实现 gevent不是黑魔法(一): greenlet 实现 用 entgo 替代 gorm 应用内使用crontab不是那么方便 单测时要不要 mock 数据库? Sentry 自建指南 用selenium完成自动化任务 用闲置的安卓手机做垃圾电话短信过滤 推荐三个时间管理工具 一次事故反思 当JS遇到uint64:JS整数溢出问题 SQLite3 存储以及ACID原理 Redis源码阅读:pub/sub实现 Redis源码阅读:zset实现 Redis源码阅读:bitmap 位图的运算 Redis源码阅读:set是怎么做交并集运算的? Redis源码阅读:list实现(ziplist, quicklist)
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 使用直连网络, 或者不怕麻烦的话,配置一个规则,按域名走不同的代理即可。