V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
solywsh
V2EX  ›  Linux

有没能按照 ip 进行流量统计的

  •  
  •   solywsh · 10 天前 · 1809 次点击

    想问问大家,在 Linux 平台下没有针对某一个端口,统计每个 ip 对这个端口的 INPUT 流量。

    背景是这样的,我自己搭了几个代理,然后分享给了两三个朋友使用,但是发现某一个节点流量异常,所以想统计一下哪个 ip 使用的流量比较多。之前也写了个服务定时上传 vnstat 的统计数据到时序数据库里,不过那个只能统计总的流量进出情况。

    image-20240509223133253

    25 条回复    2024-05-17 11:05:58 +08:00
    Qetesh
        1
    Qetesh  
       10 天前
    iftop ?只能看实时的速度
    lcry2023
        2
    lcry2023  
       10 天前   ❤️ 2
    x-ui 面板
    solywsh
        3
    solywsh  
    OP
       10 天前
    @Qetesh iftop 之前试过了,实时的确实不太方便统计
    mohumohu
        4
    mohumohu  
       10 天前
    nlbwmon ,openwrt 的话还有 luci 。
    solywsh
        5
    solywsh  
    OP
       10 天前
    @lcry2023 目前主要是用的 surge 的 snell 协议,面板不支持,如果到时候找不到合适的我就把协议换成 vmess 或者 trojan 吧
    kratosmy
        6
    kratosmy  
       10 天前 via iPhone
    这几个 azure 都是免费一年的吗
    solywsh
        7
    solywsh  
    OP
       10 天前
    @kratosmy 大部分是的,azure 流量超出之后会额外扣费,然后异常的节点正好就是 azure 的,我 100 刀的余额感觉都撑不过一年订阅期剩下的时间了😂我自己平时到不怎么用这几个节点,都是用机场的
    tywtyw2002
        8
    tywtyw2002  
       10 天前 via iPhone
    精细流量分析 要用 sflow 或者 netflow 啊
    linux 下生成 sflow 还是要靠抓包。
    不抓包没法从网卡统计到 ip 颗粒度的数据

    不少流量统计是统计 网卡数据包的
    yc8332
        9
    yc8332  
       10 天前   ❤️ 1
    每个人给他一个端口不就好了
    xueling
        10
    xueling  
       10 天前
    可以用我的开源项目 https://github.com/xl-xueling/xl-lighthouse.git ,只要自己写个脚本把数据上报上来就可以了,功能很强大,不过是个集群服务,需要 3 台服务器,目前单机版我还在开发。
    xueling
        11
    xueling  
       10 天前
    @xueling 单机版面向中小企业和中小数据量的业务场景使用,大概还需要 1 个月左右的时间发布。
    Int100
        12
    Int100  
       10 天前
    请问一下,这是用的什么监控工具?十分美观啊
    yph007595
        13
    yph007595  
       10 天前
    @Int100 #12 看着像 grafana
    bfdh
        14
    bfdh  
       10 天前
    iptables 加个 ACCEPT 规则,然后定期 iptables -vnL 查看这条规则命中的流量?
    stardustree
        15
    stardustree  
       10 天前
    如果是云上的服务器,一般都有 VPC 内的网络流日志,flow log 。需要额外付费。
    Int100
        16
    Int100  
       10 天前
    @yph007595 #13
    谢谢,我也觉得像 grafana
    solywsh
        17
    solywsh  
    OP
       10 天前   ❤️ 1
    @Int100 #16 就是 grafana ,写了个服务定时上传 vnstat 的数据到时序数据库,然后 grafana 把数据可视化
    yph007595
        18
    yph007595  
       9 天前
    @solywsh #17 不需要自己写服务的,telegraf 和 node_exporter 都可以收集服务器的很多信息,包括流量
    kuanat
        19
    kuanat  
       9 天前   ❤️ 1
    这个需求也算是 V2EX 上的常客了,我详细说一下思路和方向。

    Linux 网络栈是在内核里实现的,流量统计就是 packet 计数(或者计量)这个计数有几个方式:

    1. 内核态 pf 用户态 iptables

    最简单的方式就是 iptables 对 chain 计数,只要把想统计的流量走一下自定义的 chain (这个 chain 可以什么都不做),就可以利用 chain 自身计数达到目的。

    像 openwrt 之类的路由器统计内网流量基本都是这个方式,用 arp 配合 MAC 地址来区分客户端。

    这个方式的优点是轻量,缺点是要预先设定规则。你的这个场景,如果几个朋友的 IP 有比较明显的区分度,可以根据 IP 段每个人走一个规则 chain 来统计。但是对于大量无规律来源 IP 就很难写这个规则,或者写出来几万条不实际。

    2. conntrack

    想要动态处理 ip 规则,就需要做基于状态的统计。conntrack 有自己维护一套映射表,这样就无需预先知道来源 ip 就可以按需统计。优点是灵活性比较高,但是性能影响也会比上一个方法高一些。

    这两个方法的实现可以参考 https://openwrt.org/docs/guide-user/services/network_monitoring/bwmon 这个帖子 Available tools 章节,可以参考拿来用。

    第一个方案其实很好写,第二个要想自己写可能需要比较多的背景知识。

    3. 抓包自己算

    就是计量的方式,不是很推荐的做法,为了做流量统计结果把所有数据包都过滤一遍,有点杀鸡用牛刀的意思了。
    solywsh
        20
    solywsh  
    OP
       9 天前
    @yph007595 #18 因为之前没接触过时序数据库,所以还是选择了造轮子😂
    wanqingfengtao
        21
    wanqingfengtao  
       9 天前
    如果只是统计 host 流量的话,直接用 darkstat 就行了
    fangpeishi
        22
    fangpeishi  
       9 天前
    换个思路,使用的代理软件 access log 有没有相关字段,统计下上报。
    sendi
        23
    sendi  
       8 天前
    nft add rule inet traffic output ip saddr 192.168.1.100 counter
    nft add rule inet traffic input ip daddr 192.168.1.100 counter
    最近也有在搞这种 有机会可以探讨下 v(base64): d3NkMTExZjcxbwo=
    ZXiangQAQ
        25
    ZXiangQAQ  
       3 天前
    @yph007595 机场一般跑的 Project V 的服务,每个用户都有 UUID 和 Email ,直接统计就行了,服务端通过 api 暴露了 stats 的信息的,user>>>[email]>>>traffic>>>uplink/downlink 完整链路信息都看得到
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2717 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 11:58 · PVG 19:58 · LAX 04:58 · JFK 07:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.