云服务器免费试用

linux端口限速(linux 限速)

服务器知识 0 1534

本文目录:

  • 1、linux中如何控制端口流量
  • 2、如何对linux下某个端口限速
  • 3、linux网络设置限速/丢包/延时/乱序
  • 4、linux 路由器限速实现方法
  • 5、linux下有什么可以限制网速的软件
  • 6、linux同一服务器下会出现端口受限吗

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下某个端口限速

iptables不行,需要用tc进行流量控制。

iptables可以通过限制包的数量来控制速度 --m limit --limit xx/s

linux网络设置限速/丢包/延时/乱序

1. 限速/取消限速/测试限速

     限速:   wondershaper eth0 10000 8000      下行10000kb/s   上行8000kb/s

     取消限速:  wondershaper clear eth0

     测试限速:  server端: iperf3 -s     client端: iperf3 -c  serverip -i 1

     查看指定端口速度:   iftop -i eth0

2. 模拟丢包

    tc  qdisc  add  dev  eth0  root  netem  loss  1%

3. 模拟延时

    tc qdisc add dev eth0 root netem delay 100ms

4. 模拟乱序

    tc qdisc add dev eth0 root netem delay 10ms reorder 25%

参考

linux 路由器限速实现方法

linux的开源和免费使得越来越多的厂家用它来做防火墙和路由器,今天本文用linux来打造一台高性能的能够限速的路由器。文章就以red hat为例教大家在linux下进行路由器限速。

linux的开源和免费使得越来越多的厂家用它来做防火墙和路由器,如海蜘蛛,飞鱼星等,其实我们也可以用linux来打造一台高性能的路由器。下面就以red hat为例(其他版本大同小异)教大家做一台能限速的`路由器,如何在linux下进行路由器限速就不再困难了。

安装linux如果是新手请安装时安装图形桌面。Linux路由器限速的设置步骤如下:

路由器限速第一步:建立adsl连接,在系统设置——网络设置处有。在图形界面下很容易搞定。

路由器限速第二步:打开IP转发和伪装(也就是路由与NAT)

1、作为根用户打开/etc/sysconfig/network文件,在文件增加以下一行:

GATEWAYDEV=PPP0 这句话的作用是设定默认路由,有时没有也可

2、打开IP转发功能:打开/etc/sysctl.conf文件,修改net.ipv4.ip_forward=0一行,改0改为1

3、重启系统

路由器限速第三步:设置iptables防火墙,决定那些IP能通过linux主机上网。

下面以允许192.168.0.0网段为例:

1、打开终端在#字提示符下输入以下命令:

iptables -t nat -I POSTROUTING -o ppp0 -j MASQUERADE #这句意思是伪装从pppo出去的IP

iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT #这句意思是转发来自192。168。0。0网段的通讯

iptables -A FORWARD -d 192.168.0.0/24 -j ACCEPT #这句意思是转发到达192。168。0。0网段的通讯

iptables -A FORWARD -s ! 192.168.0.0/24 -j DROP #这句意思是拒绝转发非192.168.0.0网段的通讯。

2、保存以上防火墙规则,以保证重启后还有效, 输入命令:iptables-save /etc/sysconfig/iptables,这样,你的linux路由器应该就能跑起来了。

linux做路由器限速的实现:在linux中有专门限速的软件--tc,但TC的语法新手难以掌握,我们可以在防火墙上通过限定某个IP或某段IP在一秒内通过的数据包的数量来限速。

下面以限制192.168.0.2这个IP的网速为例说说,在桌面环境下打开/etc/syscofngi/iptables 有没有发现,刚才的设定全记录在这个文件里,现在做的就在这个文件里添加规则就得了。

1、先要找到filter

2、在filter下面一行增加以下两行:

-A FORWARD -m limit -d 192.168.0.2 --limit 30/sec -j ACCEPT # 这句意思是限定每秒只转发30个到达192。168。0。2的数据包(约每秒45KB 一个数据包是1.5KB)

-A FORWARD -d 192.168.0.2 -j DROP #这句作用是超过限制的到达192.168.0.2的数据包不通过)

3、路由器限速经过重启系统就实现了。

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和windows可用的端口个数为65535个Linux和windows动态端口的数量都存在限制,linux系统(如red hat)的动态端口限制为1024-4999,windows 2003 SOCKET 端口数量默认5000,正常情况下,这些端口数量是够用的,但是如果服务器是用来提供web服务或者用来对其他服务器加压,这时候,服务器会产生大量的TCP连接,由于每个TCP客户端连接都要占用一个唯一的本地端口号,如果现有的TCP客户端连接已将所有的本地端口号占满,则此时就无法为新的TCP客户端连接分配一个本地端口号了,因此系统会在这种情况下在connect()调用中返回失败,并提示错误消息:"Can't。

【linux端口限速】的内容来源于互联网,如引用不当,请联系我们修改。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942@qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: linux端口限速(linux 限速)
本文地址: https://solustack.com/11958.html

相关推荐:

网友留言:

我要评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。