温馨提示×

ubuntu iptables怎样封禁MAC

小樊
45
2026-10-27 10:56:27
栏目: 智能运维

在 Ubuntu 中,iptables 本身不能直接按 MAC 地址过滤所有流量,因为:

  • MAC 地址只在局域网(二层)可见
  • 对 进入本机(INPUT) 或 本机发出(OUTPUT) 的包,MAC 地址通常只在 PREROUTING / INPUT 的桥接或同一网段中有效
  • 对 转发的包(FORWARD),MAC 过滤更常用(如路由器、桥接环境)

下面按常见场景说明。


一、iptables 按 MAC 封禁(同一局域网内)

1️⃣ 封禁某个 MAC 访问本机(INPUT)

iptables -A INPUT -m mac --mac-source 00:11:22:33:44:55 -j DROP

✅ 适用:

  • 攻击者与本机在同一二层网络(如同一个交换机 / Wi-Fi)
  • 封的是 来自该 MAC 的包

❌ 不适用:

  • 跨路由器访问(MAC 会被替换)

2️⃣ 禁止本机访问某个 MAC(OUTPUT)

iptables -A OUTPUT -m mac --mac-destination 00:11:22:33:44:55 -j DROP

⚠️ 注意:

  • 很多系统 不支持 OUTPUT 的 MAC 匹配
  • 实际很少用

3️⃣ 禁止转发某个 MAC(FORWARD,路由器/网关)

iptables -A FORWARD -m mac --mac-source 00:11:22:33:44:55 -j DROP

✅ 最常用(软路由、网关)


二、持久化 iptables 规则(Ubuntu)

Ubuntu 20.04 / 22.04

apt install iptables-persistent
netfilter-persistent save

或手动:

iptables-save > /etc/iptables/rules.v4

三、更推荐的方式(按场景)

✅ 如果是 Wi-Fi / 局域网控制

用 ARP + IP 绑定,或:

  • arptables
  • ebtables(桥接)
  • 路由器端 MAC 黑名单

✅ 如果是服务器防外部攻击

❌ 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 攻击 ❌ 不可用
网关转发 ✅ 最合适
服务器防护 ❌ 不推荐

如果你能说下 具体使用场景(服务器 / 路由器 / 局域网),我可以给你更精确的规则。

0 踩