㈠ 关于linux网卡带宽设置的问题
首先你得netem QDiscipline设置看起来没什么区别,limit太大,loss 0%和默认一样,剩下的delay 10ms都是指所有pakcat按照延迟10ms进行发送
至于你的TBF设置,用了TBF自身提供的两个途径
TBF叫做Token Bucket Filter.总体的思路就是数据包要领到Token(令牌)才能被发送,而令牌的产生速率收到rate这个参数的限制。Token是一个抽象的概念,Token的大小都是指的Token所指向的数据包的大小。
当要发送的速率低于令牌产生的速度时,所有的数据包都能领到Token,并且多余的Token会在你的Buffer里积累。积累的上限由Buffer/Burst这个参数指定。
当发送的速率等于Token产生的速度时,Token正好被完全消耗,所有的数据包都会发送,并且buffer不会积累多余的Token
当发送的速率大于Token的速率,如果Buffer里还有多余的Token,就会开始消耗Buffer的Token,同时允许数据包通过。如果buffer的Token耗尽,数据包就不被允许通过,并且进入Txqueue(发送队列)排队。如果排队的尺寸大于limit(你的第一个TBF有指定),则队列不能再增长,新到来的数据包会被drop。
明白上面的概念之后你的两条命令的区别也就容易看懂了。
第一个是用的Buffer/Limit
Buffer就是瞬间可以额外提供的Token的数量。Rate限制了你的持续上传速率为1Mb/s,然后在你长时间网络流量很低时,你得Token会积累,最后你可以有Buffer这么大(1600b)的缓冲无视rate的限制(可以瞬间发送1600b,所以叫做突发)。至于后面的limit 3000,是指你当你的缓冲区(Txqueue)超过3000b时,新来的包会被Drop
第二个用的是Burst/latency/rate组合
这里的burst和上面的buffer含义完全相同,都是能够以高于rate所限定的速度发送的数据量(4Mb,比第一个的大很多)。至于Latency,是对应limit的量。Latency规定的是数据包能在Txqueue中呆的最长的时间(你的是1S),在Txqueue中呆超过1s的包都会被Drop。所以结合你的rate来计算,latency 1s+rate 1Mbit/s 等价于 limit为1Mbit*1s=1Mb
*tc只能规整egress traffic,就是从NIC流出的流量(上传),对于下载,要用IFB将ingress(下载)模拟成egress
㈡ linux下如何实现对每个IP进行限制带宽
linux traffic control,命令是tc。用tc命令设置就可以了。
㈢ linux服务器网卡流量过大对网卡会有什么影响
本身无影响,会增加cpu占用,如果带宽不够可以加一块相同的做成一块用。
㈣ linux服务器要怎样针对IP流量限制
不是木马,是设置问题,下面是流量的控制方法一、Linux流量控制过程分二种:1、队列控制即QOS,瓶颈处的发送队列的规则控制,常见的有SFQPRIO2、流量控制即带宽控制,队列的排队整形,一般为TBFHTB二、Linux流量控制算法分二种:1、无类算法用于树叶级无分支的队列,例如:SFQ2、分类算法用于多分支的队列,例如:PRIOTBFHTB三、具体实现:1.在网卡上建立以SFQ算法的限流#tcqdiscadddeveth0roothandle1:sfqSFQ参数有perturb(重新调整算法间隔)quantum基本上不需要手工调整:handle1:规定算法编号..可以不用设置由系统指定..#tcqdiscshdeveth0显示算法#tcqddeldeveth0root删除注:默认eht0支持TOS2.在网卡建立以TBF算法的限流#tcqdadddeveth1roothandle1:速率256kbit突发传输10k最大延迟50ms#tc-sqdshdeveth1统计#tcqddeldeveth1root删除3.在网卡建立PRIO#tcqdiscadddeveth0roothandle1:prio#此命令立即创建了类:1:1,1:2,1:3(缺省三个子类)#tcqdiscadddeveth0parent1:1handle10:sfq#tcqdiscadddeveth0parent1:2handle20:注:此为TBF限速的另一写法,前文有讲解.#tcqdiscadddeveth0parent1:3handle30:sfq4.WEB服务器的流量控制为5Mbps,SMTP流量控制在3Mbps上.而且二者一共不得超过6Mbps,互相之间允许借用带宽#tcqdiscadddeveth0roothandle1:#tcclassadddeveth0parent1:0classid1:.这部分按惯例设置了根为1:0,并且绑定了类1:1.也就是说整个带宽不能超过6Mbps.#tcclassadddeveth0parent1:1classid1:.#tcclassadddeveth0parent1:1classid1:.建立了2个类.注意我们如何根据带宽来调整weight参数的.两个类都没有配置成"bounded",但它们都连接到了类1:1上,而1:1设置了"bounded".所以两个类的总带宽不会超过6Mbps.别忘了,同一个CBQ下面的子类的主号码都必须与CBQ自己的号码相一致!#tcqdiscadddeveth0parent1:3handle30:sfq#tcqdiscadddeveth0parent1:4handle40:sfq缺省情况下,两个类都有一个FIFO队列规定.但是我们把它换成SFQ队列,以保证每个数据流都公平对待.#tcfilteradddeveth0parent1::3#tcfilteradddeveth0parent1::46.过滤器过滤示例#::1在10:节点添加一个过滤规则,优先权1:凡是去往22口(精确匹配)的IP数据包,发送到频道10:1..#::1在10:节点添加一个过滤规则,优先权1:凡是来自80口(精确匹配)的IP数据包,发送到频道10:1..#:prio2flowid10:2在eth0上的10:节点添加一个过滤规则,它的优先权是2:凡是上二句未匹配的IP数据包,发送到频道10:2..#tcfilteradddeveth0parent10:.3.2.1/32flowid10:1去往4.3.2.1的包发送到频道10:1其它参数同上例#tcfilteradddeveth0parent10:.2.3.4/32flowid10:1来自1.2.3.4的包发到频道10:1#:prio2flowid10:2凡上二句未匹配的包送往10:2#tcfilteradddeveth0parent10:.3.2.1/:1可连续使用match,匹配来自1.2.3.4的80口的数据包
㈤ linux如何限制每个进程的网速
1、用 iptables 的 owner 模块,给 --pid-owner 加上 MARK,然后 tc 里针对这个 MARK 做限速 现在的服务器上,基本已经普及了 SMP ,更进一步的,内核已经在自动发现支持 SMP 的时候,在 iptables 里把 owner 模块的 pid/cmd/sid 三个 match 都去掉了!现在的 owner 里只有 uid/gid 两个。所以这条路,在生产环境上基本行不通。所以推荐下面的两种方法:
2、使用 pipeviewer和 trickle这两个工具。trickle 是在BSD 上诞生的项目,这个工具使用ELF 的 preloader 机制,在命令执行的时候替换掉标准库中的 socket recv() 和 send() 部分,达到限速的效
3、cgroup ,它有 net_cls 控制器。不过和其他控制器不太一样的是它不直接控制网络读写,只是给网络包打上一个标记,然后把专业的事情交给专业的 TC 去做。嗯,思路和原先的 iptable 是很类似的。
㈥ linux中如何控制端口流量
配置网卡
建立一台虚拟机,并安装完成后以桥接的方式在虚拟机上面添加两张网卡。分别为eth0和eth1。
eth0: a.b.c.d(外网的上网地址)
eth1: 172.16.44.1(做为内网的网关)
Tip
原先我使用eth0:0的这种虚拟网卡的形式去配置一直不成功,后来使用双网卡的时候一直忘了把eth0:0这张虚拟网卡删掉导致了限速配置一直不成功,浪费了大把的青葱。
配置iptables nat
#开启ip_forward
echo "1">/proc/sys/net/ipv4/ip_forward
#清除原来的防火墙规则
iptables -F
iptables -t nat -F
iptables -t mangle -F
#添加nat转发
iptables -t nat -A POSTROUTING -s 172.16.44.0/24 -o eth0 -j MASQUERADE
通过执行上面的代码后,局域网内的电脑就可以上网了。
端口转发
由于我的内网还挂了网站,所以要开启80端口的转发。
iptables -t nat -I PREROUTING -p tcp -d a.b.c.d --dport 80 -j DNAT --to 172.16.44.210:80
iptables -t nat -I POSTROUTING -p tcp -d 172.16.44.210 --dport 80 -j SNAT --to 172.16.44.1
这条命令指定外网地址a.b.c.d的80端口转发到172.16.44.210:80上。由于是双网卡,所以需要做一下回路。
下载限速
下载限速要在eth1上面做,判断数据包的目的地址来做限制。tc包括三部分:队列、类、过滤器。我使用了htb方式去限制速度,也可以使用cbq,但cbq配置比较复杂一点,而且据说性能没htb好。
#删除原来的tc规则队列
tc qdisc del dev eth1 root
#添加tc规则队列
tc qdisc add dev eth1 root handle 10: htb default 256
#生成根类
tc class add dev eth1 parent 10: classid 10:1 htb rate 100mbit ceil 100mbit
#支类列表用于限制速度
#这里的rate指的是保证带宽,ceil是最大带宽。
tc class add dev eth1 parent 10:1 classid 10:10 htb rate 400kbps ceil 400kbps prio 1
#添加支类规则队列
#采用sfq伪随机队列,并且10秒重置一次散列函数。
tc qdisc add dev eth1 parent 10:10 handle 101: sfq perturb 10
#建立网络包过滤器,设置fw。
tc filter add dev eth1 parent 10: protocol ip prio 10 handle 1 fw classid 10:10
#在iptables里面设定mark值,与上面的handle值对应。
iptables -t mangle -A POSTROUTING -d 172.16.44.130 -j MARK --set-mark 1
通过上面的代码就可以限制172.16.44.130这台机子的下载速度到400kbps。
Tip
经过实际测试这里的kbps实际上就是KB/S每秒千字节。另一个单位是kbit,这个才是每秒千比特。这里的172.16.44.130也可以写成一个网段,比如:172.16.44.0/24
上传限速
上传限速的原理其实跟下载的差不多,只不过限制的网卡不同,要在eth0上过滤来源地址去限制。
#删除原来的tc规则队列
tc qdisc del dev eth0 root
#添加tc规则队列
tc qdisc add dev eth0 root handle 20: htb default 256
#生成根类
tc class add dev eth0 parent 20: classid 20:1 htb rate 100mbit ceil 100mbit
#支类列表用于限制速度
tc class add dev eth0 parent 20:1 classid 20:10 htb rate 40kbps ceil 40kbps prio 1
#添加支类规则队列
tc qdisc add dev eth0 parent 20:10 handle 201: sfq perturb 10
#建立网络包过滤器
tc filter add dev eth0 parent 20: protocol ip prio 100 handle 2 fw classid 20:10
iptables -t mangle -A PREROUTING -s 172.16.44.130 -j MARK --set-mark 2
Tip
跟下载不同的是POSTROUTING要改成PREROUTING,-d改成-s。
观察连接数
通过iptables的nat连接可以通过下面的代码查看。至于统计连接数可以写代码实现,也可以利用awk,grep等工具。反正里面的内容就是文本,处理起来也比较简单。
cat /proc/net/ip_conntrack
写在结尾
到此上网、端口转发和流量限制都已经实现。下次再考虑配置个dhcp server和dnsmasq。至于一些路由器其它诸如mac地址绑定,限制上网等用到的时候再去研究研究。
㈦ linux下有什么可以限制网速的软件
专门的限速软件,只有linux防火墙如:pfsence,不过默认的iptables防火墙也可以限速的
如以ip地址来限速
iptables -A FORWARD -m limit -d 202.96.209.6 --limit 2400/s --limit-burst 100 -j ACCEPT
iptables -A FORWARD -d 202.96.209.6 -j DROP
iptables -A FORWARD -m limit -s 202.96.209.6 --limit 2400/s --limit-burst 100 -j ACCEPT
iptables -A FORWARD -s 202.96.209.6 -j DROP
限制某网段
iptables -A FORWARD -s 192.168.100.0/24 -m limit --limit 100/s -j ACCEPT
iptables -A FORWARD -s 192.168.100.0/24 -j DROP
以协议icmp放ddos限速
iptables -A INPUT -f -m limit --limit 150/sec --limit-burst 100 -j ACCEPT
限制ssh接入频率
iptables -A INPUT -p tcp –dport 22 -s 10.1.0.0/16 -j ACCEPT
iptables -A INPUT -p tcp –dport 22 -j ratelimit
㈧ 为什么linux下的无限网卡速度慢阿
网卡大功率 信号很强 只能说明信号由你网卡发出去 信号传得远,中途信号强度损失小,但是 你接受信号就不一样, 别人路由器发送信号低,在途中信号损失较严重,当网卡接收到时,信号都已经损失了一大半,那网速肯定低。
㈨ 如何对linux下某个端口限速
iptables不行,需要用tc进行流量控制。
iptables可以通过限制包的数量来控制速度 --m limit --limit xx/s
㈩ 为什么150m的网卡在Linux上用hostapd开出的热点只有54Mbps的速度
这个不是说你的无线网卡是150M就一定连接成150M,原因如下:
WiFi设置问题,WiFi一般会设置成自动分配带宽,比如说300M的WiFi,10个人连接,可能每个人平均分配到30M,无线显卡里也显示30M,当然不会这么公平的,可能会多或者会少,即使是手动分配,也不会超过100M;
电脑无线网卡本地设置,在无线网卡属性中有一个设置,会强制带宽到多少;
最后一个就是协议,看你的无线网卡和WiFi支持那种802.1哪种协议,a/b/n/g/ac,每个协议有个最大允许带宽。