clash-premium 配置 ebpf 实现只代理外网端口的流量

原来的tun模式是要拦截所有dns流量的,这样有一个问题,就是如果本地配置了k8s,之类的,内部的service是无法调通的,因为都被clash的dns劫持了。
所以需要配置ebpf来只代理外网的流量,内网的就不代理。

安装 bpf

bpf安装

配置 clash

这几行是需要修改的内容,合并到原来的文件里面就可以了,其中 wlan0 要修改为你连接外网的设备

tun:
    auto-route: false
ebpf:
  redirect-to-tun:
    - wlan0
routing-mark: 6667

配置权限

如果是root执行的clash应该可以不用理,如果是普通用户的话,需要设置一下 clash 的权限。

# /usr/bin/setcap CAP_PERFMON,cap_bpf,cap_sys_admin,cap_net_admin,cap_net_bind_service=ep /usr/bin/clash

然后应该就可以启动 clash 了
如果是 clash-verge 启动的话,需要确认 Clash 字段 是不是勾选了上面所有的字段。

已知问题

·clash-meta 现在无法使用,会提示 Attached tc ebpf program error: failed to create bpf fs subpath: mkdir /sys/fs/bpf/clash: permission denied解决方法这里有提到了

参考

·Premium:-Ebpf