使用ebtables配合hostapd阻止IoT网络的出站访问
使用ebtables配合hostapd阻止IoT网络的出站访问
看起来你已经把树莓派的AP桥接环境搭起来了,但当前的ebtables规则没达到阻止IoT设备“打电话回家”的预期效果对吧?咱们来一步步排查问题并修正规则:
先说说你当前规则的核心问题
- 只处理了IPv4流量:从你的
ifconfig输出能看到br0有全局IPv6地址,很多现代IoT设备会默认用IPv6访问云服务器,这部分流量完全没被管控 - 没针对外网路径做限制:你的FORWARD链规则只处理了
wlan0到wlan0的无线设备内部流量,完全忽略了wlan0→br0→eth0这条通往外网的关键路径
修正后的ebtables规则方案
先清空现有规则避免冲突,然后重新配置:
# 清空所有规则和自定义链 ebtables -F ebtables -X # 允许无线设备和局域网内IPv4设备的双向通信 ebtables -A FORWARD -i wlan0 -p IPv4 --ip-dst 192.168.1.0/24 -j ACCEPT ebtables -A FORWARD -o wlan0 -p IPv4 --ip-src 192.168.1.0/24 -j ACCEPT # 处理IPv6流量,允许本地链路和内网IPv6段的双向通信 ebtables -A FORWARD -i wlan0 -p IPv6 --ip6-dst fe80::/10 -j ACCEPT ebtables -A FORWARD -i wlan0 -p IPv6 --ip6-dst fdaa:bbcc:ddee::/64 -j ACCEPT ebtables -A FORWARD -o wlan0 -p IPv6 --ip6-src fe80::/10 -j ACCEPT ebtables -A FORWARD -o wlan0 -p IPv6 --ip6-src fdaa:bbcc:ddee::/64 -j ACCEPT # 阻断无线设备发往外网的所有流量(wlan0→eth0路径) ebtables -A FORWARD -i wlan0 -o eth0 -j DROP # 阻止外网主动连接无线设备(额外安全防护) ebtables -A FORWARD -i eth0 -o wlan0 -p IPv4 --ip-src ! 192.168.1.0/24 -j DROP ebtables -A FORWARD -i eth0 -o wlan0 -p IPv6 --ip6-src ! fdaa:bbcc:ddee::/64 -j DROP ebtables -A FORWARD -i eth0 -o wlan0 -p IPv6 --ip6-src ! fe80::/10 -j DROP
规则说明
- 先明确放行局域网内部的双向流量,保证IoT设备之间、IoT设备和局域网内其他设备能正常通信
- 专门阻断
wlan0到eth0的跨接口流量,这就是设备通往外网的唯一路径 - 同时覆盖IPv4和IPv6,避免设备绕开限制
- 最后添加的规则能防止外网主动发起对无线设备的连接,提升IoT网络的安全性
保存规则避免重启失效
配置完成后,记得保存规则:
ebtables-save > /etc/ebtables/rules.v4
如果是Debian/Ubuntu系统,可以启用ebtables服务让规则开机自动加载:
systemctl enable ebtables
测试建议
用你的手机连接这个AP测试:
- 尝试访问外网网站(比如google.com),应该无法加载
- 尝试访问局域网内的其他设备(比如192.168.1.x的机器),应该能正常通信
备注:内容来源于stack exchange,提问作者Curtis Parfitt-Ford
相关产品推荐
相关产品推荐

