You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Linux/Debian系统中为SSH预留带宽?

如何在Linux/Debian系统中为SSH预留带宽?

太懂这种烦恼了!当大下载把带宽占满时,SSH直接卡到连输入都没反应,简直抓狂。你说的trickle有时候确实不管用,大概率是因为目标程序(比如ollama)可能用了静态链接或者绕过了trickle能监控的网络调用方式。给你几个亲测有效的办法:

方法一:用内核自带的tc工具(最靠谱,底层控制)

tc是Linux内核自带的流量控制工具,能直接在网卡层面分配带宽,优先级最高,几乎没有例外情况。步骤如下:

  1. 先确认你的网卡名称,执行ip link show,输出里类似eth0、enp0s3的就是。
  2. 清理网卡上旧的流量规则(如果有的话):
    sudo tc qdisc del dev eth0 root
    
  3. 添加根队列,设置默认流量类:
    sudo tc qdisc add dev eth0 root handle 1: htb default 10
    
  4. 创建主类,分配网卡总带宽(假设你的总带宽是1000Mbps,根据实际情况调整):
    sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 1000mbit
    
  5. 给SSH(默认22端口)创建专属带宽类,预留100Mbps(保证SSH随时有可用带宽):
    sudo tc class add dev eth0 parent 1:1 classid 1:10 htb rate 100mbit ceil 1000mbit
    
  6. 给其他普通流量创建类,限速到900Mbps(总带宽减SSH预留的部分):
    sudo tc class add dev eth0 parent 1:1 classid 1:20 htb rate 900mbit ceil 1000mbit
    
  7. 把SSH的上下行流量都导向专属类:
    sudo tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip dport 22 0xffff flowid 1:10
    sudo tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip sport 22 0xffff flowid 1:10
    

这样设置后,SSH流量会优先占用预留的100Mbps,哪怕其他下载跑满剩余带宽,SSH也能保持流畅。

方法二:用wondershaper(简化版tc,操作更友好)

如果觉得tc命令太复杂,可以用wondershaper,它是tc的封装工具,一键就能配置带宽预留:

  1. 先安装工具:
    sudo apt install wondershaper
    
  2. 直接给网卡设置总带宽和预留的最小保障带宽(这里假设总下载带宽1000Mbps,给SSH预留100Mbps):
    sudo wondershaper eth0 1000 100
    
    参数说明:第一个数字是网卡的最大下载带宽(Mbps),第二个是最大上传带宽(Mbps),wondershaper会自动给SSH、DNS这类关键服务预留带宽。如果需要更精细控制,可以编辑/etc/default/wondershaper配置文件,把需要优先的端口(比如22)添加进去。

方法三:修复trickle的使用方式

如果还是想用trickle,可以试试换个启动方式——因为trickle是用户空间工具,只能监控通过动态链接libc的程序。如果直接给ollama命令加trickle没用,你可以用trickle启动整个shell,再在shell里运行ollama:

trickle -s -d 200 bash

然后在这个新打开的bash里执行:

ollama pull llama3

这样整个shell里的所有网络请求都会被trickle限速,就能避免占满带宽了。

备注:内容来源于stack exchange,提问作者Morten

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 09:08:04