
我家里有一台 Debian 服务器,使用我的个人互联网连接(最高 50 mbps)。我使用 OpenSSH 设置了一个简单的 SFTP 服务,以便与多个用户共享大文件(10 Gb+)。
这是我的问题:关于带宽重新分配,这是一个丛林问题。我的用户有标准 ADSL 连接,其他用户有光纤连接,等等。每个用户的下载速度都不同,通常下载带宽最大的用户获胜。
我想知道是否可以将我的上传带宽“几乎平均地”分配给各个用户。
理想情况下,每个用户能够以高达 50/n mbps 的速度下载文件(其中 n 是连接的用户数)。
非常感谢您的帮助。
答案1
由于您使用的是 Debian Linux,因此您可以相当轻松地完成此操作。您可以使用此脚本对带宽进行“公平”重新分配:
#Put here your Internet-interface instead of eth1
ext_iface=eth1
eiface_addr=192.169.158.150
###############Remove shaper rules###############################3
iptables -t mangle --flush
tc qdisc del dev $ext_iface root 2> /dev/null > /dev/null
iptables -t mangle -D POSTROUTING -o $ext_iface -j shape-in 2> /dev/null > /dev/null
iptables -t mangle -F shape-in 2> /dev/null > /dev/null
iptables -t mangle -X shape-in 2> /dev/null > /dev/null
##############Adding shaper rules###################################
tc qdisc add dev $ext_iface root handle 1:0 htb default 10
tc class add dev $ext_iface parent 1:0 classid 1:1 htb rate 100mbit ceil 100mbit
tc class add dev $ext_iface parent 1:1 classid 1:5 htb rate 100mbit ceil 100mbit prio 0
tc class add dev $ext_iface parent 1:1 classid 1:10 htb rate 48mbit ceil 48mbit prio 0
tc qdisc add dev $ext_iface parent 1:5 handle 5: pfifo limit 5
tc qdisc add dev $ext_iface parent 1:10 handle 10: pfifo limit 10
iptables -t mangle -N shape-in
iptables -t mangle -I POSTROUTING -o $ext_iface -j shape-in
#Priority for pings
iptables -t mangle -A shape-in -p icmp -j MARK --set-mark 5
#Priority for Server Access
iptables -t mangle -A shape-in -s $eiface_addr -j MARK --set-mark 5
#Othet packets (user\'s internet traffic)
iptables -t mangle -A shape-in -m mark --mark 0 -j MARK --set-mark 10
tc filter add dev $ext_iface parent 1:0 prio 0 protocol ip handle 5 fw flowid 1:5
tc filter add dev $ext_iface parent 1:0 prio 1 protocol ip handle 10 fw flowid 1:10
请注意,用户将获得 48/n 通道,并且剩下 2 Mbs 作为备用。
答案2
您遇到的问题到底是什么?当有人使用光纤线路下载时,较慢的下载器是否会完全断网?除非是这种情况,否则您可能应该让服务器的 TCP/IP 堆栈尽可能地处理客户端的不同下载速度。最终每个人都应该获得您上传的那部分内容。
此外,我认为您认为每位用户 50/n mbps 是“公平”的,这种想法是错误的。例如,假设您只有两个用户连接,一个使用光纤,下载速度为 50 mbps,另一个使用拨号,下载速度为 56 kbps。您真的想将光纤下载速度限制为 25 mbps,而基本上将剩余的 25 mbps 浪费在拨号用户身上吗?
如果我处在你的位置,我不会费心去强加这种“公平”的概念。如果你这么做了,用户很快就会想办法抢占更大的上传带宽,比如打开额外的连接。