运营商上行限速?两种方法兴许可以解决!让NAS跑满带宽上行
引出
很多朋友在用 NAS 的时候都会发现一个头疼的问题:下行速度很爽,上行却总是慢吞吞,尤其是想往外传点文件、做远程备份,或者给朋友分享资源的时候,结果上传死活跑不满,只有几十KB,往期我发过相关文章演示这个问题。

这背后应该是运营商成本考量,对于上行有『负优化』,具体原因本文不深究,那能不能自己动手,稍微“正向优化”一下?我这里整理了两个方案,有可能会对上行负优化问题有改善,但不确保,具体有需求的朋友可以部署试试,如果可以,欢迎评论区反馈。
方案一:在 NAS 上启用 BBR
BBR是 Google 提出的一个拥塞控制算法,它的作用不是单纯“加速”,而是更聪明地判断网络传输的瓶颈。传统的 TCP 协议遇到丢包就减速,但 BBR 会根据带宽和延迟动态调整,让上传带宽利用率更高。简单点说,启用 BBR 后,同样的线路条件下,数据能跑得更顺畅、更接近上限。

如果你的不是NAS,使用的是Linux主流发行版本,那么直接以root用户运行以下命令。
Debian / Ubuntu 系统依次运行以下3命令
sudo apt update
sudo apt install -y wget
wget -N --no-check-certificate "https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh" && chmod +x tcp.sh && ./tcp.sh
CentOS / Rocky / AlmaLinux系统依次运行以下两行命令
sudo yum install -y wget
wget -N --no-check-certificate
"https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh" && chmod +x tcp.sh && ./tcp.sh
运行完成后,一般直接选4运行BBR加速就行,如果系统内核不支持,可以安装BBR内核,切记请勿用于生产环境,仅学习交流使用,对于NAS存储了大量数据来说,个人建议优先考虑下方第二种方法更安全。

我这里使用飞牛来演示一下吧,飞牛底层是一个完整的linux系统,所以它可以运行以上命令进行安装,首先开启飞牛的SSH。

使用SSH连接工具连接,具体怎么连接随意查一下就知道了,要不就问AI,需要提权到root用户运行。

飞牛的话直接输入4运行。

看到BBR启动成功就代表飞牛系统开启BBR了。

这时开启飞牛客户端,确保公网连接的情况下下载文件试试,如果下载速度恢复到你上行带宽或有加快,则代表有效果,如果没效果,重新运行命令,输入9卸载优化就行了,汇报一下我这的成果,好消息是有效果,从20KB恢复到300KB左右上行速度,坏消息是没能恢复该有的30Mbps上行速度。

方案二:docker中部署神器
虽然家宽IP对家宽IP的互访速度有『负优化』,但是当你用宽带去跑测速应用时,你会发现速度正常,这个是定向的,所以从这个角度入手,具体原理本文不细究,各位请自行查。

当然,这个方法就比较通用了,优势是不用改底层系统,只需要你的NAS支持docker就行,非常推荐,但是丑话说前头,有没有效果也不保证,每个地方不一样的,如果不行您也别来吐槽我。

在运行前,直接开启NAS的SSH后以root用户运行ifconfig,找到你NAS对应内网IP的网口标识,如以下我的是ens3,记下它。

然后编辑以下命令,把结尾的bridge0改成你获取的网口标识。
docker run --rm
--net=host
--cap-add CAP_NET_ADMIN
--cap-add CAP_NET_RAW
--cap-add CAP_SYS_MODULE
--cap-add CAP_SYS_NICE
nattertool/fakehttp -z -h www.speedtest.cn -i bridge0
我的改完后完整命令如下。
docker run --rm
--net=host
--cap-add CAP_NET_ADMIN
--cap-add CAP_NET_RAW
--cap-add CAP_SYS_MODULE
--cap-add CAP_SYS_NICE
nattertool/fakehttp -z -h www.speedtest.cn -i ens3
然后直接运行部署,注意不要关闭部署SSH窗口,如果取消连接窗口,这个容器会被自动删除,可远程下载NAS的文件测试一下速度,正常就代表有效果,再考虑以下的长期部署。

如果运行时提示ip6tables v1.8.10 (legacy): can't initialize ip6tables table `mangle'之类错误,可以尝试运行以下两行命令解决。
sudo modprobe ipv6
sudo modprobe ip6table_mangle
正常运行后,当你测试远程下载速度时,这里会有连接提示之类的,如果速度正常就代表有效果。

把rm删除,添加--name就行,命令如下,可以长期永久运行的,并添加了自启,直接改ens3为你的网口标识就行。
docker run -d
--name fakehttp
--restart unless-stopped
--net=host
--cap-add CAP_NET_ADMIN
--cap-add CAP_NET_RAW
--cap-add CAP_SYS_MODULE
--cap-add CAP_SYS_NICE
nattertool/fakehttp -z -h www.speedtest.cn -i ens3
结尾
总的来说,上行被负优化这个问题,没办法从根本上解决,但我们能做的是在有限条件下,把速度尽量挖出来。当然,每个人环境差异很大,结果也不一定完全一样,不保证所有人有效果,感兴趣的朋友可以尝试一下。

最后推荐一下威联通新品Qu805,N355+16G+8盘位+双M.2,香爆了,3799首发,感兴趣可以看看。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案