使用 iptables 进行基本流量统计很简单。你可以创建一个没有目标的规则,例如
iptables -I INPUT -p tcp --dport 80
然后,例如通过 http 上传一些数据后,可以使用以下命令读取计数器
iptables -L INPUT -n -v
是否可以通过此类 iptables 规则来跟踪传入和传出的 FTP 流量?
我尝试使用通常的规则来允许 FTP 流量,并与 ip_conntrack_ftp 内核模块一起使用:
iptables -I INPUT -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 21
但显然,这里的iptables只计算控制连接。
答案1
您只能在客户端使用主动模式时进行跟踪,其中服务器将连接到客户端的 20 tcp 端口来传递数据。
如果客户端使用被动模式(大多数客户端都使用这种模式),服务器会向客户端发送 PASV 命令,告知客户端要连接的服务器 IP 和端口。由于端口是随机的,因此您无法区分流量并获取统计数据。
另一种方法是使用类似开放DPI和OpenDPI网络过滤器或者L7 过滤器检查第 7 层流量并解码 PORT/PASV 命令。
或者,如果您控制 ftp 服务器,您可以将数据端口配置为有限的范围并跟踪这些端口。