[Feature Request] Add request byte size and response byte size to the access log
您好,开发者
可否添加一个功能:更加完善的访问日志格式,为访问添加 请求字节数 和 响应字节数。
比如:
2025/12/09 18:32:47.115290 from 103.*.*.*:31978 accepted tcp:www.google.com:443 [tag_in >> tag_out] email: [email protected] request_bytes: 100 response_bytes: 2000
一般情况不考虑乱动日志
日志是直接输出而不是等连接关闭了再输出,不过现在 Xray 确实没有针对单连接的统计,可以加一下
对啊这本来就是做不到的 access log 抛不出来 有啥好说的 同类软件也没这种例子 哪怕开给API也没合适的调用方法
现在有 access.log 和 error.log,可以加一个 stat.log,在连接关闭后把传输总字节数写进去
API 的话等完善了对单个连接的追踪后再加
多个输出会让日志管理非常混乱 连yuhan都说不要再加type了( 这土制系统本身就不是干这些网络管理的事的
至少这个功能是有用的,可以看到哪个用户的哪个连接传输了多少字节,也能找出偷跑大量流量的连接,识别潜在木马
~~就像当初我看 log 发现了 HTTPS 的明文 URL 咋在里面,一看是“迅雷下载支持”插件,我分析完就把迅雷卸了再没用过~~
这土制系统本身就不是干这些网络管理的事的
因为被 Xray 代理后,网络管理看不到这些东西,只能看到个 REALITY,如果有个木马在偷数据,只能去找时间对应,麻烦很多
而且操作系统普遍没提供单连接统计,或者是难找、也没人去看,但 Xray 的 log 是基本都会看几眼的,接管所有流量后统计就很方便
还真能看到 Windows系统管理器或者btop之类的是可以看某个进程对网络的占用的
Windows 任务管理器有我知道,但那只是瞬时占用而不是总量统计,且不是能显示 IP 和 SNI 等信息的精确到单个连接
总之就是管太宽了 为了网络安全排查也太偏门了 这个只是有的人喜欢看监控而已
我想的是 GUI 甚至能做个图表弄个排序,把 IP 和 SNI 弄成二元组来直观地展示跑了多少流量,如果有木马在偷数据一下子就能抓出来
总之你至少有权知道哪组 IP+SNI 跑了多少数据吧,不然哪个耗流量多哪个耗流量少都不知道
我只是不想一个feature request论证一下有用就挂个enhancement大半年都没人动死在那而已( 而且能想到的实现都很丑 这都要存巨量的IP+SNI二元组了 隔壁DNS模块甚至还在搞隔段时间重建放缓存用的map
我现在先临时这样 记录了一下
https://github.com/xtlsee/Xray-core/commit/566292b00edd83e2c468919f9065a0688633cbaf
如果是 xray-core 使用,需要将 这里注释掉
https://github.com/XTLS/Xray-core/blob/main/app/dispatcher/default.go#L519
if accessMessage := log.AccessMessageFromContext(ctx); accessMessage != nil {
if tag := handler.Tag(); tag != "" {
if inTag == "" {
accessMessage.Detour = tag
} else if isPickRoute == 1 {
accessMessage.Detour = inTag + " ==> " + tag
} else if isPickRoute == 2 {
accessMessage.Detour = inTag + " -> " + tag
} else {
accessMessage.Detour = inTag + " >> " + tag
}
}
// log.Record(accessMessage)
}