• linux 限制带宽命令,Linux服务器限制网络带宽流量速率(限制应用程序和指定网卡的流量)


    在本文中,我将为你分享两种 Linux 服务器限制网络流量速率的方法,希望可以帮助到你~

    一、限制应用程序的网络流量速率

    限制应用程序的网络流量速率的方法就是trickle工具。

    1、trickle介绍

    Trickle是一款轻量级的用户空间带宽控制管理工具,用来限制如浏览器Firefox等,FTP,SSH,curl,wget,scp等等使用网络带宽。

    Trickle通过控制socket数据读写量来控制和限制应用的上传和下载速度。要注意的是trickle使用动态链接和加载,所以只对于使用libc.so库的程序有用,其他的则无效。由于trickle可以设置数据在socket上的传输延迟,因此就可以用来限制应用程序的网络带宽。

    Trickle不能用于限制使用UDP协议的应用的带宽,只可用于TCP连接。也无法工作在使用静态链接的可执行程序上。

    即便如此,trickle 命令有一个很好的特性是它仅在用户空间中运行,这意味着你不需要 root 权限就可以限制一个程序的带宽使用。

    2、如何判断trickle对应用程序是否有效?

    根据是否使用libc.so库来判断

    可以通过ldd命令来查看这个程序是否使用了libc.so库。如果应用程序使用了这个库,就可以用trickle来限制网络带宽,否则就不行。

    ldd /usr/bin/wget | grep libc.so
    libc.so.6 => /lib64/libc.so.6 (0x00002adc30397000) 
    
    • 1
    • 2

    3、Linux安装Trickle

    Trickle工具有一些依赖包,安装和使用trickle之前必须安装“libevent库”,不过这个库在大多数现在的linux服务器上已经默认安装了。

    在 Ubuntu/Debian/Linux Mint服务器上运行 apt-get install trickle进行安装。请确保源列表已经更新,接着安装你想要的应用。

    sudo apt-get update
    sudo apt-get install trickle
    
    • 1
    • 2

    在 Fedora/ CentOS/RHEL服务器上需要更新系统,然后使用下面的命令安装trickle

    yum update
    yum install trickle
    
    • 1
    • 2

    4、trickle基本使用方法。

    trickle --help
    Usage: trickle [-hvVs] [-d <rate>] [-u <rate>] [-w <length>] [-t <seconds>]
    [-l <length>] [-n <path>] command ...
    -h Help (this)
    -v Increase verbosity level
    -V Print trickle version
    -s 在独立模式下独立运行
    -d <rate> 设置最大累计下载速率为 <rate> KB/s
    -u <rate> 设置最大累计上传速度为 <rate> KB/s
    -w <length> 设置窗口长度为 <length> KB 。默认512KB。
    -t <seconds> 设置默认的平滑时间 <seconds> s 。平滑时间决定多少时间间隔trickle将尝试让应用程序传输数据。较小的值(0.1 - 1)会导致更连续(平滑)会话,非常适合于交互式应用。而较大的值(1 - 10)可能会产生一阵阵的发送和接收数据,对需要大量带宽的应用程序更好。
    -l <length> 设置默认的平滑长度 <length> KB 。 默认10 KB。
    -n <path> 指定trickled socket名称 <path> 。 默认/tmp/.trickled.sock 。
    -L <ms> 设置延时。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    只需简单地把 trickle 命令(及速率参数)放在你想运行的命令之前。

    trickle -d -u 这就可以将下载和上传速率限定为特定值(单位 KBytes/s)
    • 1

    例如,将你的 scp 会话的最大上传带宽设定为 100 KB/s

    trickle -u 100 scp backup.tgz alice@192.168.4.93:/home/wslu
    
    • 1

    如若你想,你可以通过创建一个自定义启动器的方式,使用下面的命令为你的 Firefox 浏览器设定最大下载速率(例如, 300 KB/s)。

    trickle -d 300 firefox %u
    
    • 1

    二、限制网络接口的网络流量速率

    Linux 服务器限制网络接口的流量速率需要用到一个工具:WonderShaper

    1、wondershaper介绍

    Wondershaper实际上是一个shell脚本,它使用tc来定义流量调整命令,使用QoS来处理特定的网络接口。外发流量通过放在不同优先级的队列中,达到限制传出流量速率的目的;而传入流量通过丢包的方式来达到速率限制的目的。

    事实上, wondershaper 的既定目标不仅仅是对一个接口增加其带宽上限;当批量下载或上传正在进行时,wondershaper 还试图去保持互动性会话如 SSH 的低延迟。同样的,它还会控制批量上传(例如 Dropbox 的同步)不会使得下载“窒息”,反之亦然。

    2、Linux安装Wonder Shaper

    1)安装依赖
    Debian/Ubuntu系统

    sudo apt-get update
    sudo apt install -y wondersharper
    
    • 1
    • 2

    Centos系统

    yum install epel-release -y
    sudo yum install -y wondersharper
    
    • 1
    • 2

    使用二进制
    2)下载wondershaper

    git clone https://github.com/magnific0/wondershaper.git
    cd wondershaper 
    #直接运行wondershaper
    ./wondershaper 
    
    • 1
    • 2
    • 3
    • 4

    3)全局安装wondershaper

    cd wondershaper
    sudo make install
    
    • 1
    • 2

    3、wondershaper 基本用法
    首先找到网络接口的名称。以下是查找网卡详细信息的几个常用方法。

    ip addr  
    route  
    ifconfig 
    
    • 1
    • 2
    • 3

    一旦找到了网卡名称,就可以限制带宽速率了,如下所示。

    sudo wondershaper -a <adapter> -d <rate> -u <rate> 
    
    • 1

    比如说你的网卡名是enp0s8,你希望将下载和上传的带宽限制分别限制于1024 Kbps和512 kbps,命令应该是:

    sudo wondershaper -a enp0s8 -d 1024 -u 512 
    
    • 1

    其中
    -a:网卡名
    -d:下载速率
    -u:上传速度

    想取消网络适配器的速度限制,只要运行:

    sudo wondershaper -c -a enp0s8 
    
    • 1

    或者

    sudo wondershaper -c enp0s8 
    
    • 1

    想了解更多详细信息,请运行以下命令,查看帮助部分:

    wondershaper -h 
    USAGE: ./wondershaper [-hcs] [-a <adapter>] [-d <rate>] [-u <rate>]
    Limit the bandwidth of an adapter
    OPTIONS:
    -h Show this message                                 //显示帮助信息
    -a <adapter> Set the adapter                         //指定网卡接口,通过ifconifg或者ip show addr查看:比如eth0
    -d <rate> Set maximum download rate (in Kbps) and/or //限制下载的速度
    -u <rate> Set maximum upload rate (in Kbps)          //限制上传的速度
    -p Use presets in "/etc/systemd/wondershaper.conf"
    -c Clear the limits from adapter                     //清除对应网卡接口的规则
    -s Show the current status of adapter                //显示当前网卡状态
    -v Show the current version                          //显示版本信息
    Configure HIPRIODST in "/etc/systemd/wondershaper.conf" for hosts
    requiring high priority i.e. in case ssh uses dport 443.
    MODES:
    wondershaper -a <adapter> -d <rate> -u <rate>
    wondershaper -c -a <adapter>
    wondershaper -s -a <adapter>
    EXAMPLES: //针对以上示例给出的example
    wondershaper -a eth0 -d 1024 -u 512    //限制eth0上行速度512kbps,下行速度1024kbps
    wondershaper -a eth0 -u 512            //仅限制eth0上行速度512kbps
    wondershaper -c -a eth0                //清除为eth0设定的wondershaper的相关规则
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    或者查阅参考手册页。

    man wondershaper 
    
    • 1

    总结

    在本文中,我分享了两种不同的方法,来达到Linux 服务器限制应用程序和网络接口的带宽流量速率的目的。 两种工具的使用都很简单,都为用户提供了一个快速且容易的方式来调整或限制流量。

    以上便是今日的分享,感谢您的阅读,加个关注不迷路~

  • 相关阅读:
    深入理解 C++ 中的 extern 关键字
    Oracle数据库的逻辑结构
    大数据组件之Hbase(待补充)
    rnacos——用rust重新实现的nacos开源配置、注册中心服务
    Linux命令查看pcap包报文数量、包体包含内容、包长
    严选算法模型质量保障
    隆云通负氧离子传感器
    语音与影像上的自督导式学习模型、一些老版本的补充(李宏毅2022
    整理mongodb文档:副本集一
    【VASP】KPOINTS文件介绍
  • 原文地址:https://blog.csdn.net/JUFENG_FEI/article/details/126289828