需求
由于公司距离母公司较远, 公司网络重新配置, 现在莫名其妙个别服务无法直接访问, 需要通过 vpn 才能访问北京的, 由此有以下需求:
- macOS 配置了 L2TP VPN 连接家里的网络, 公司的 VPN 也同时开启, 导致家里的 192.168.110.0/24 段的网络无法访问, 被公司 VPN 覆盖了路由表配置
- 公司 VPN 长期登录在打包机上, 局域网通过 Clash 的 socks 服务访问打包机, 需要电脑兼容机场订阅和特定域名访问局域网内的公司 VPN
修改路由表以解决需求 1
通过网络查询可以知道 L2TP 的网卡是 ppp0
首先,点开 VPN 高级选项,把通过 VPN 连接发送所有流量去掉。 接着 sudo vim /etc/ppp/ip-up
, 添加如下内容:
#!/bin/sh
/sbin/route add -net 192.168.110.0/24 -interface ppp0
保存退出, 给权限:
sudo chmod 0755 /etc/ppp/ip-up
查询路由表 netstat -nr
:
配置 Clash 达到需求
基础使用
-
在打包机上登录 VPN, 然后下载 ClashX 或者 Clash for Windows, 启用允许局域网
此时可以使用打包机 ip + port 作为代理, 比如我的是 10.240.6.155:7890, 可以先用手机配置后看看效果
-
手机使用 shadowrocket 配置, 一劳永逸, 注意图上的标注位置
手机配置后没问题的话, 或者不想手机配置的现在配置自己的 macOS
macOS 我使用的是 Clash for Windows, 功能比 ClashX 强大
基础配置很简单, 可以自行研究一下
进阶使用
下面说一下兼容机场和公司 VPN, 对 Clash for Windows 里面的 config.yaml 修改配置
- 配置 rule-providers, 单纯是规则的配置, 也就是域名-ip-dns 需要的规则, 有人整理了 Rules, 可以无脑配置上, 此时还不能保存并应用, 会报错的
- 配置 proxy-providers, 单纯是机场代理的配置, 也就是自己的订阅, 此处加上马赛克, 具体写法和 rule-providers 很像, 我下面会给出例子, 这里需要注意的是, type 字段只能支持 http 或者 file, 有的订阅链接下载后格式完全符合 clash 的格式, 此时可以用 http, 然后设置定时更新就好, 如果格式不正确在保存的时候会报错的, 例子我都会写出来
- 配置 proxies, 此处声明的代理直接描述打包机的代理即可
- 配置 proxy-groups, 此处声明代理组别方便扩展, 以及兼容机场和打包机代理
- 配置文件内容如下, 我对机场订阅连接删除了部分关键内容哈 :
#---------------------------------------------------#
## 配置文件需要放置在 $HOME/.config/clash/*.yaml
## 这份文件是clashX的基础配置文件,请尽量新建配置文件进行修改。
## !!!只有这份文件的端口设置会随ClashX启动生效
## 如果您不知道如何操作,请参阅 官方Github文档 https://github.com/Dreamacro/clash/blob/dev/README.md
#---------------------------------------------------#
# (HTTP and SOCKS5 in one port)
mixed-port: 7890
# RESTful API for clash
external-controller: 127.0.0.1:57166
allow-lan: true
mode: rule
log-level: warning
secret: a6cb7deb-1ae3-4df5-b48c-83740515545b
proxy-providers:
naiyun:
type: file
url: "https://www.naiun.co/api/v1/client/subscribe?token"
path: ./profiles/1655098029551.yml
ssr:
type: http
url: "https://s.trojanflare.com/clashx/ec8812b4-a9970db0"
path: ./profiles/ssr.yml
interval: 3600
health-check:
enable: true
url: http://www.gstatic.com/generate_204
interval: 300
proxies:
- { name: CompanySocks5, type: socks5, server: 10.240.6.51, port: 7890 }
# 在 Proxy Group 中使用 proxy-provider
proxy-groups:
- name: PROXY
type: select
use: # 引入 proxy-provider 使用 use 关键字
- naiyun
- ssr
- name: Company
type: select
proxies:
- CompanySocks5
rule-providers:
reject:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/reject.txt"
path: ./ruleset/reject.yaml
interval: 86400
icloud:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/icloud.txt"
path: ./ruleset/icloud.yaml
interval: 86400
apple:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/apple.txt"
path: ./ruleset/apple.yaml
interval: 86400
google:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/google.txt"
path: ./ruleset/google.yaml
interval: 86400
proxy:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/proxy.txt"
path: ./ruleset/proxy.yaml
interval: 86400
direct:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/direct.txt"
path: ./ruleset/direct.yaml
interval: 86400
private:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/private.txt"
path: ./ruleset/private.yaml
interval: 86400
gfw:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/gfw.txt"
path: ./ruleset/gfw.yaml
interval: 86400
greatfire:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/greatfire.txt"
path: ./ruleset/greatfire.yaml
interval: 86400
tld-not-cn:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/tld-not-cn.txt"
path: ./ruleset/tld-not-cn.yaml
interval: 86400
telegramcidr:
type: http
behavior: ipcidr
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/telegramcidr.txt"
path: ./ruleset/telegramcidr.yaml
interval: 86400
cncidr:
type: http
behavior: ipcidr
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/cncidr.txt"
path: ./ruleset/cncidr.yaml
interval: 86400
lancidr:
type: http
behavior: ipcidr
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/lancidr.txt"
path: ./ruleset/lancidr.yaml
interval: 86400
applications:
type: http
behavior: classical
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/applications.txt"
path: ./ruleset/applications.yaml
interval: 86400
rules:
- DOMAIN-SUFFIX,zuoyebang.cc,Company
- RULE-SET,applications,DIRECT
- DOMAIN,clash.razord.top,DIRECT
- DOMAIN,yacd.haishan.me,DIRECT
- RULE-SET,private,DIRECT
- RULE-SET,reject,REJECT
- RULE-SET,icloud,DIRECT
- RULE-SET,apple,DIRECT
- RULE-SET,google,DIRECT
- RULE-SET,proxy,PROXY
- RULE-SET,direct,DIRECT
- RULE-SET,lancidr,DIRECT
- RULE-SET,cncidr,DIRECT
- RULE-SET,telegramcidr,PROXY
- GEOIP,LAN,DIRECT
- GEOIP,CN,DIRECT
- MATCH,PROXY