在 Ubuntu 中,iptables 本身不能直接按 MAC 地址过滤所有流量,因为:
PREROUTING / INPUT 的桥接或同一网段中有效下面按常见场景说明。
iptables -A INPUT -m mac --mac-source 00:11:22:33:44:55 -j DROP
✅ 适用:
❌ 不适用:
iptables -A OUTPUT -m mac --mac-destination 00:11:22:33:44:55 -j DROP
⚠️ 注意:
iptables -A FORWARD -m mac --mac-source 00:11:22:33:44:55 -j DROP
✅ 最常用(软路由、网关)
apt install iptables-persistent
netfilter-persistent save
或手动:
iptables-save > /etc/iptables/rules.v4
用 ARP + IP 绑定,或:
arptablesebtables(桥接)❌ MAC 没用
✅ 用:
iptables -A INPUT -s 1.2.3.4 -j DROP
或 fail2ban
iptables -L -v -n
iptables -L INPUT -v -n | grep MAC
| 场景 | 是否可用 MAC |
|---|---|
| 同局域网攻击 | ✅ 可用 |
| 公网 IP 攻击 | ❌ 不可用 |
| 网关转发 | ✅ 最合适 |
| 服务器防护 | ❌ 不推荐 |
如果你能说下 具体使用场景(服务器 / 路由器 / 局域网),我可以给你更精确的规则。