
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命令的介绍,看看《linux就该这么学》,具体关于这一章地址3w(dot)linuxprobe/chapter-02(dot)html
在Linux网络应用中,我们经常需要开放一些端口给指定的IP,如果我们不对端口进行整理,就可能出现多开放一些有风险的端口,导致系统存在安全隐患。
1、连续端口,iptables默认就支持多个连续端口的规则
iptables -A INPUT -s 1921681220/23 -p tcp --dport 21:23 -j ACCEPT #端口21 22 23
2、不连续的端口,iptables有一个mutiport的模块,需要手动指定加载一下
iptables -A INPUT -s 1921681220/23 -p tcp -m multiport --dport 21,23,27,44 -j ACCEPT #端口21 23 27 44
也可以配合连续IP的规则使用
iptables -A INPUT -s 1921681220/23 -p tcp -m multiport --dport 21:23,2227:2230 -j ACCEPT #端口 21 22 23 2227 2228 2229 2230
一般在设置规则的时候,要先整理一下端口所属的服务,尽量将同一个服务的端口写在同一条,如果不是同一个服务的尽量分开,方便管理。
规则链就是规则的集合。针对特定数据包的各种防火墙规则,按照顺序依次放入对应的链中。
一共有五条链。INPUT,OUTPUT,FORWARD,PREROUTING,POSTROUTING
INPUT: 当收到访问防火墙本地地址的数据包时,应用此链的规则
OUTPUT:当防火墙本机向外发出数据时,应用此链的规则。
FORWARD:当收到要通过防火墙发送给其他网络地址的数据包时,应用此链的规则。
PREROUTING: 在对数据包做路由选择之前,应用此链的规则。
POSTROUTING: 在对数据包做路由选择之后,应用此链的规则。
其实iptables中的自定义链已经够用了。但是我们为什么还要自定义链呢?当链上的规则足够多的时候,就不容易管理了。这个时候我们可以自定义分类,将不同的规则放在不同的链中。
在filter这个表上创建一个自定义的链IN_WEB
在filter表中的IN_WEB链上创建一个规则,对原地址为19216811这个的连接进行阻止。
当然,自定义链在哪里创建,应该被哪调默认的链引用,取决于应用场景,比如说要匹配入站报文,所以可以在INPUT链中引用
我们在INPUT链中添加了一些规则,访问本机80端口的tcp报文将会被这条规则匹配到。-j IN_WEB表示:访问80端口的tcp报文将由自定义链“IN_WEB”中的规则处理,没错,在之前的例子中-j 表示动作,当我们将动作替换成自定义链时,就表示被当前规则匹配到的报文将交由对应的自定义链中的规则处理,具体怎么处理,取决于自定义链中的规则。当IN_WEB被INPUT引用后,引用计数将会加1
以上就是关于linux可以用iptables限制单个进程的带宽吗全部的内容,包括:linux可以用iptables限制单个进程的带宽吗、linux-iptables多端口限制、什么是iptables规则链等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)