2

假设我是服务器,我想查看特定 MAC 地址的下载和上传带宽。带上传监控链。我用这个:
iptables -N clientA_upload然后iptables -A FORWARD -m mac --mac-source 00:11:22:33:44:55:66它工作得很好。
- 但说到下载链。我使用iptables -A FORWARD -m mac --mac-destination 00:11:22:33:44:55:66并且 iptables 不支持 mac-destination。请帮帮我

P/s:我只想通过MAC地址进行监控。不是ip地址。因为在安卓操作系统中。它不支持使用 IP 地址的字节计数。所以请帮忙!!!

4

3 回答 3

1

没有这样的事情--mac-destination。为此,您必须转移到 ebtables

于 2013-07-24T18:43:07.717 回答
1

对于缺少--mac-destination的技巧是将 iptables--mac-sourceCONNMARK

  • 首先用于--mac-source匹配来自您感兴趣的 MAC 地址的数据包。
  • 用于CONNMARK标记整个连接,即两个方向(!)和
  • 现在检查带有连接标记的另一个方向的数据包。


# lan interface
if_lan=eth0

# packets going to mac address will pass through this:
iptables -t mangle -N clientA_download    

# mark connections involving mac address:
iptables -t mangle -A PREROUTING -i $if_lan -m state --state NEW -m mac --mac-source 00:11:22:33:44:55 -j CONNMARK --set-mark 1234

# match packets going to mac address:
iptables -t mangle -A POSTROUTING -o $if_lan -m connmark --mark 1234 -j clientA_download


最初我认为这仅适用于源自 lan 的 tcp 连接,但鉴于--state NEW它的定义应该在 tcp 和 udp 的两个方向上都有效(!)

对于计数器,另请参阅ipset这是非常好的。

基于发件人 MAC 地址的 Linux 上的策略路由是这个答案的灵感来源。

于 2017-07-10T20:43:29.373 回答
-2

You are confusing downloading and uploading rules.

Rule 1: iptables -A FORWARD -m mac --mac-source 00:11:22:33:44:55:66

is appended to the ipchain and checks the given mac in forwarding chain.

Now you need to check your mac in input chain, so instead of applying the second rule in FORWARD chain, apply it in INPUT chain:

Rule 2: iptables -I INPUT -m mac --mac-destination 00:11:22:33:44:55:66

于 2013-06-04T13:47:37.640 回答