Skip to content

将WireGuard异地组网集成到Clash中

在前文《在 OpenWRT 上使用 WireGuard 异地组网》《使用wg-easy更简单的在群晖(Linux)上搭建WireGuard》中我们主要讲解了 WireGuard 「服务端」的搭建流程,其中对「客户端」的使用都是一笔带过。

原因无它,两种方法都可以直接生成「客户端」的配置文件,且客户端操作简单,基本处于开箱即用状态,对于大多数人来说已经足够使用。

但如果你和我一样,手机需要长期挂载 VPN 模式的 Clash,但同时也是回家 WireGuard VPN 的重度用户,你就会发现 Android 手机并不支持同时开启两个 VPN,而不断在 Clash 和 WireGuard 之前切换也是一个令人恼火的事情。

类似的冲突也会发生在 PC 的 TUN 模式上。

有关 Clash 配置

我其实并不太会编写 Clash 配置,之前都是直接订阅链接解决问题,据我所知 Clash 配置文件似乎有多种格式,不同格式有一定差异,但是配置内容相差不大。

本人不对任何机场做任何推广,因此不会透露使用机场的名称,也请不要从任何方式联系我获取机场细节。

具体步骤

我的机场使用 .yaml 格式的配置文件。想要将 WireGuard 作为一个节点加入 Clash 配置,我们需要进行如下修改。

添加 proxies

.yaml 中的 proxies 添加如下内容:

yaml
  - name: WireGuard
    type: wireguard
    server: <your_wg_ip/domain>
    port: "<your_wg_port>"
    udp: true
    ip: "<your_wg_ip>"
    private-key: "<your-private-key>"
    public-key: "<peer-public-key>"
    pre-shared-key: "<peer-pre-shared-key>"
    remote-dns-resolve: true

添加 proxy-groups

.yaml 中的 proxy-groups 添加如下内容:

yaml
  - name: MyHome
    type: select
    proxies: 
      - DIRECT
      - WireGuard

DIRECT 是我配置文件中提供的一个「直连节点」,大多数机场的配置文件都会提供,但是个别机场的「直连节点」名称可能不同。

添加 rules

.yaml 中的 rules 添加如下内容:

yaml
  - IP-CIDR,192.168.0.0/24,MyHome

假设家庭局域网网段是 192.168.0.0/24,请根据个人情况修改。