建立 Clash tracing 网关监控并在 Grafanan 上可视化展示

您所在的位置:网站首页 clash网关 建立 Clash tracing 网关监控并在 Grafanan 上可视化展示

建立 Clash tracing 网关监控并在 Grafanan 上可视化展示

2024-01-22 04:52| 来源: 网络整理| 查看: 265

前言#

Clash 是一款 “人尽皆知” 的代理软件,支持多种代理,多种强大的规则分流,同时支持多种方式部署在网关上。 在闭源的 Premium 内核中支持 tracing 功能,可以方便的采集经过 Clash 核心的流量数据。 本次将抛弃其作为代理软件的作用,使用 Clash 作为网关的上网行为管理监控控制,配合 influxDB + Grafana 展示数据。

部署 Clash#

由于需要使用 Clash Premium 闭源内核,因此只能通过托管于 Github 上的 Clash Premium Relase 页面下载。 下面将以 Debian 10 x86 作为例子

wget https://github.com/Dreamacro/clash/releases/download/premium/clash-linux-amd64-2021.05.08.gz gunzip clash-linux-amd64-2021.05.08.gz sudo chmod +x clash* sudo mv clash* /usr/local/bin/clash sudo mkdir /etc/clash

通过以上的命令可以安装 clash 到系统,并创建配置文件夹 /etc/clash 个人倾向于使用 systemd 作为进程管理器,通过以下命令创建 clash 的 service 文件

sudo cat /etc/sysctl.conf sudo sysctl -p

执行上面的命令开启本机的路由转发

如果选择启用 auto-route 请不要执行以下的命令,避免出现意想不到的问题

update 20220513

IFACE=`ip route get 1 | awk '{print $5;exit}'` IPCIDR=`ip addr show $IFACE | grep inet | grep -v inet6 | awk '{print $2;exit}'` IP=`ip route get 1 | awk '{print $7;exit}'` sudo cat 3000/tcp, :::3000->3000/tcp grafana 17de091d79d4 influxdb:1.8-alpine "/entrypoint.sh infl…" 5 seconds ago Up 2 seconds 8086/tcp influxdb

如果你是在 root 权限的文件夹执行部署的,那么 Grafana 可能会无法启动,原因是 Grafana Docker 镜像内默认是以 User(472) Group(0) 的用户和组运行的,在 root 用户和组下的文件夹会出现无权限的情况。 这里给出一个解决方案,在 docekr-compose.yml 文件中对应部分增加一行使得 Grafana 容器以 root 用户运行即可,但是会有潜在安全问题,请慎重考虑执行。(即不要在公网运行,或者不要将 3000 端口暴露于公网上)

··· grafana: image: grafana/grafana volumes: - ./grafana:/var/lib/grafana ports: - "3000:3000" user: "0" # 新增的部分 container_name: grafana ···

之后执行一下命令,重新创建 Grafana 容器即可。

docker rm -f grafana docker-compose up -d

至此,全部就算部署完毕了,influxDB 的相关数据库文件存放在 clash-tracing/data 内,Grafana 的相关配置文件存放在 clash-tracing/grafana

Loki 的相关数据库文件存放在 clash-tracing/loki/data 内

Update 20220513

配置 Grafana 及导入 Clash-tracing Dashboard#

20220210 切换至 Loki 后需要选择 Logging & document database 下的 Loki

配置中的 http://influxdb:8086 也需要替换为 http://loki:3100,底下的 User Password 等无需填写

Update 20220513

在浏览器输入 :3000 进入 Grafana 的网页端,默认账号及密码均为 admin 更改默认密码后即可进入控制页面,点击左侧 Configuration-Data Sources,新建 influxDB 数据源。 按下图输入对应内容 点击左侧 Create-Import 输入 https://github.com/Dreamacro/clash-tracing/raw/master/grafana.json 中的内容以导入模板(没错这个模板来自 clash 项目。

最后结果如下图所示

进阶(不是#

如果完整的执行了前面的内容,并且没有出现什么问题,那么 clash 应该已经能够正常的接管所有经过所在机器的来自局域网内的流量了,同样的 tracing 也能展示对应的数据了。

那么就可以运用 clash 的核心功能——基于规则的路由功能,对流经的数据进行“精细”的控制。

由于使用的是 clash 项目的闭源 Premium 内核,因此可以利用一些特有的功能。 首先还是要了解一下 clash 的配置文件 config.yaml

port: 7890 # HTTP 端口 socks-port: 7891 # SOCKS 端口 redir-port: 7892 # Redir 端口 tproxy-port: 7893 # TPROXY 端口 mixed-port: 7890 # 混合 HTTP SOCKS 端口 authentication: # HTTP SOCKS 端口 鉴权 allow-lan: false # 是否允许来自局域网的 IP bind-address: '*' # 在 Allow-Lan 为 True 的情况下,监听绑定的 IP mode: rule # 模式,direct global rule script log-level: info # 日志输出级别 ipv6: false external-controller: 127.0.0.1:9090 # RESTful web API external-ui: folder # ... interface-name: en0 # 指定的上游网卡 hosts: # ... profile: # ... tun: # Tun 配置 ebpf: # Linux ebpf 配置 # Update 20220513 dns: # DNS 配置 proxies: proxy-groups: proxy-providers: rule-providers: script: rules:

可以看到,在之前的写入的配置文件中没有写入代理、代理组、规则等模块,所以默认经过 clash 的所有流量都会被直接放行,没有做任何处理。

clash 默认包含两个代理

DIRECT: directly connects to the target without any proxies involved

REJECT: a black hole for packets. Clash will not process any I/O to this policy.

因此,可以在 rules 模块中添加一些简单的规则如:

rules: - DOMAIN-SUFFIX,pornhub.com,REJECT - MATCH,DIRECT

这样就能阻止经过 clash 的流量流向以 pornhub.com 结尾的域名,从而封锁对应的网站。 类似的更多 rules 规则可以查看 clash 的官方文档

修改完成之后可以执行 sudo systemctl reload clash 使得 clash 重新加载配置文件而不至于重新启动

未完待续



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3