尝试解决某些商家VPS的断流问题


缘起

最近入了一个CN2-GIA线路的机子,但是发现会经常断流,经过测试(持续不断地通过websocket接收某视频网站的推流),发现,接收的文件呈现碎片化,且每五分钟创建一个新的碎片文件,此情况我从未遇见过,鉴于我的BBR安装流程与之前无异,都是先DD一个纯净的debian10系统后进行安装,所以,排除了系统本身的原因,接下来只可能是线路和服务商的问题。

线路问题基本无法解决,所以从服务商的问题查起,在我谷歌查阅资料后,发现Anynode等服务器商会限制路由接收的包大小,导致某些网站无法访问等问题。

接着,查到了如何修改限制的大小,即MTU值:

探测极限

首先,探测我们的服务商路由所限制的包大小,默认从1472开始,值每次降低28测一次

ping -s MTU的值-28 -M do 需要测试的网站地址

PING 网址 (网站IP) MTU值-28(MTU值) bytes of data.
MTU值-8 bytes from 网址 (网站IP): icmp_seq=1 ttl=XX time=XX.X ms

如果显示以下信息

ping: local error: Message too long, mtu=MTU值

则是包过大,降低MTU的值进行再次测试直到ping通,要注意的是,ping通即可,MTU值过小,文件将会分得更小,传输就需要更多次,延迟会增加,所以并不是越小越好。

此处笔者测出1472是最适合笔者服务器的MTU值

定乾坤

下一步直接设置MTU值即可

首先找出网卡的名字

ip link list

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 当前设置的MTU值 qdisc BBR所用队列 state UP mode DEFAULT group default qlen 1000
    link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff

然后直接设置即可

ip link set ens3 mtu MTU值

如果重启后失效则可以直接将此命令写入/etc/rc.local,如果没有此文件,创建即可,并赋予其可执行权限,以下为范例:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
 
sleep 10
ip link set ens3 mtu MTU值
 
exit 0

Reference

[1]https://imcoder.site/a/detail/Hv40dJw

[2]https://www.ljchen.com/archives/2402

[3]https://moev.moe/posts/alibabacloud-sas-set-mtu-for-tcp-link/

[4]https://www.ljchen.com/archives/527


文章作者: SekiBetu
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 SekiBetu !
评论
  目录