前言
有时候我们需要在异地访问家庭网络或其他局域网络,传统较常用的方法是通过VPN的方式,但配置十分的繁琐,容易出问题。但然也可以用代理的方式访问,但这种方式在使用时有很多的限制,一般只配合浏览器加浏览器扩展(SwitchyOmega)来使用,如果想代理全局,需要设置系统全局代理,这种代理一般都是http协议,速度一般,且好多程序不支持,如访问或挂载(smb)共享到本地,此时就需要一真正能全局的方法,目前Clash Premium,SSTap,proxifier等工具可以做到。
本文重点介绍Clash Premium,以下简称clash。clash通过新建一个tun或tap的虚拟网卡,然后把默认网关设置为虚拟网卡的IP,让所有流量通过虚拟网卡来收发,并且通过clash可以做流量分流,不同的网段可以指定不同的代理作为出口。
环境及依赖
- 目标网络有公网IP,或者有vps做中转
- 一台安装有v2ray的主机(建议v2ray安装在路由器(openwrt)、树莓派之类的低功耗设备上)
- 一台带有Clash Premium的终端设备(linux、mac、windows均支持)
服务端配置
clash支持多种协议作为出站代理,如Shadowsocks、Vmess、Socks5等,以下以v2ray的vmess协议为例,入站(Inbound)配置如下:
{
"port": 10101,
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "30bb32c5-38c9-49da-ad87-ce290a676eb6",
"alterId": 0
}
]
}
}
如果有其它局域网需要接入,可以在其它局域网中的一台设备上再建一个代理服务,以下以v2ray的shadowsocks协议为例,入站配置如下:
{
"port": 20202,
"protocol": "shadowsocks",
"settings": {
"method": "aes-128-gcm",
"password": "FSdArG47Eca6NuPB",
"ota": true
}
}
客户端配置
由于依赖tun/tap设备,需以管理员权限运行clash,以下为clash的配置:
#/root/.config/clash/config.yaml
allow-lan: true
mode: rule
log-level: debug
tun:
enable: true
stack: system
auto-detect-interface: true
auto-route: true
auto-redir: true
proxies:
#vmess协议出站代理
- name: home
type: vmess
server: example1.com #
port: 10101
uuid: 30bb32c5-38c9-49da-ad87-ce290a676eb6
alterId: 0
cipher: auto
#shadowsocks协议出站代理
- name: work
type: ss
server: example2.com
port: 20202
cipher: aes-128-gcm
password: FSdArG47Eca6NuPB
rule-providers:
#广告链接集合
reject:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/reject.txt"
path: ./ruleset/reject.yaml
interval: 432000
rules:
- IP-CIDR,192.168.10.0/24,home
- IP-CIDR,192.168.29.0/24,work
- RULE-SET,reject,REJECT #通过广告链接集合屏蔽广告的访问
- MATCH,DIRECT
重要配置说明:
- allow-lan: 设置为 true, 可以把本机当做旁路由来使用, 局域网中的其它设备把网关设为该主机IP,即可共享该主机的网络
- IP-CIDR,192.168.10.0/24,home: 代表着当访问目标网段为192.168.10.0/24的地址时,通过代理"home"(vmess协议代理)出站
- RULE-SET,reject,REJECT: 可以顺便屏蔽对广告链接的访问
-END-
作者|dev2exp 保贝狗后端开发工程师
-=||=-收藏赞 (2)