假设我是服务器,我想观看特定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地址。因为在android OS中。它不支持使用IP地址进行字节计数。所以请帮忙!!!
答案 0 :(得分:1)
没有--mac-destination
之类的东西。你必须move to ebtables for that。
答案 1 :(得分:0)
对于缺失的--mac-destination
,诀窍是将iptables --mac-source
与CONNMARK
结合使用:
--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
,这对此非常好。
Policy Routing on Linux based on Sender MAC Address是这个答案的灵感来源。
答案 2 :(得分:-2)
您对下载和上传规则感到困惑。
规则1: iptables -A FORWARD -m mac --mac-source 00:11:22:33:44:55:66
附加到ipchain并检查转发链中的给定mac。
现在您需要检查输入链中的mac,因此不要在FORWARD
链中应用第二条规则,而是将其应用于INPUT
链:
规则2: iptables -I INPUT -m mac --mac-destination 00:11:22:33:44:55:66