请教高手:用 iptables 如何统计一个端口所有协议的流量?不仅仅是 tcp 或者 udp

2016-05-22 22:22:47 +08:00
 itsme
一直以来都是用下面这样的命令,端口 2G 流量后停止
-A OUTPUT -p tcp --sport 3990 -m quota --quota 2000000000 -j ACCEPT
-A OUTPUT -p tcp --sport 3990 -j DROP

但是今天看 iptables 的说明发现有说 -p 后面可以加上 all 参数或者默认就是包括 tcp udp icmp sctp 等协议。

我就想改成下面这样,实现一个端口上的所有流量总计 2G
-A OUTPUT -p all --sport 3990 -m quota --quota 2000000000 -j ACCEPT
-A OUTPUT -p all --sport 3990 -j DROP

但是发现这个命令不行。难道这种写法不对?

或者有没有其他的 iptables 命令能否统计一个端口的 tcp 和 udp 协议总共流量达到 2G 后 DROP 掉数据?
5864 次点击
所在节点    Linux
9 条回复
xencdn
2016-05-22 22:57:03 +08:00
我尝试了 确实不行 用非参数来匹配也不可以
iptables -A OUTPUT ! --protocol icmp --sport 3990 -m quota --quota 2000000000 -j ACCEP

解答如下
http://serverfault.com/questions/279361/iptables-p-all-dport

--dport is not a flag for general iptables rules. It's a flag for one of it's extended packet matching modules. These are loaded when you use -p protocol or -m. Unless you specify -m <protocol> or -p <protocol> with a specific protocol you can't use --dport

You'll see this within the iptables(8) manual page:
itsme
2016-05-22 23:07:27 +08:00
@xencdn 明白他的意思,就是说--dport --sport 实际是-p 和-m 的参数。
所以上面写法是不对的。

现在问题就是,如何实现我想的那种统计一个端口的 tcp 和 udp 的流量达到数值后该端口就 drop 数据?

不知道有没有其他思路?
ToughGuy
2016-05-23 00:38:55 +08:00
iptables -N TRAFFIC_QUOTA
iptables -A OUTPUT -p tcp --sport 3990 -g TRAFFIC_QUOTA
iptables -A OUTPUT -p udp --sport 3990 -g TRAFFIC_QUOTA

iptables -A TRAFFIC_QUOTA -m quota --quota 2000000000 -j ACCEPT
iptables -A TRAFFIC_QUOTA -j DROP


试试这个
jasontse
2016-05-23 08:32:56 +08:00
首先你要搞清楚**只有 TCP 和 UDP 才有端口号**
julyclyde
2016-05-23 18:30:51 +08:00
首先你要知道,端口是在四层协议以下的定义
lumen
2016-05-23 23:20:49 +08:00
TCP/IP 协议里的传输层才有端口, TCP 或者 UDP
itsme
2016-05-23 23:40:24 +08:00
@ToughGuy

似乎有效。谢谢。我实际使用观察下。
mattx
2018-08-31 18:17:31 +08:00
@ToughGuy 请问下, 如果一个 tcp 连接持续得在耗费流量, 是不是 iptables 对流量限制就不生效了
Dizzly
2020-02-20 23:17:44 +08:00
@ToughGuy 请问下大佬,这个流量限制的命令要怎么修改和删除?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/280507

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX