我在这样的桥中有三个接口
auto br0
iface br0 inet static
bridge_ports enp0s10 wlx00e032800384 wlx08beac0a6c1d
address 192.168.1.31
netmask 255.255.255.0
一个开放的 AP 正在第三个接口上运行,首先我想阻止除 1 个 MAC 地址之外的所有内容。我认为这样就可以了(并将该接口上的任何内容限制为只能 ssh 到 AP 框)
iptables -A INPUT -i wlx08beac0a6c1d -m mac ! --mac-source 00:30:65:05:9F:4D -j DROP
iptables -A INPUT -i wlx08beac0a6c1d -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o wlx08beac0a6c1d -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i wlx08beac0a6c1d -j DROP
iptables -A OUTPUT -o wlx08beac0a6c1d -j DROP
但事实并非如此。
我的猜测是,原因是因为iptables
只看到br0
而不关心各个接口?有办法做到这一点吗?
我想一种方法是将开放的 AP 放在不同的子网上,然后以某种方式在两个子网之间路由?
答案1
是的,与physdev
:
物理开发
该模块与从属于桥接设备的桥接端口输入和输出设备相匹配。该模块是实现透明桥接 IP 防火墙的基础设施的一部分,仅对 2.5.44 版本以上的内核版本有用。
[!] --physdev-in姓名 接收报文的桥接端口名称(仅适用于进入桥接端口的报文)输入,向前和预路由链)。如果接口名称以“+”结尾,则任何以此名称开头的接口都将匹配。如果数据包没有通过桥接设备到达,则该数据包将不匹配此选项,除非“!”用来。 [!] --physdev-out姓名 将要发送数据包的桥接端口的名称(对于进入桥接数据包的桥接数据包)向前和后布线链)。如果接口名称以“+”结尾,则任何以此名称开头的接口都将匹配。 [!] --physdev-is-in 如果数据包已通过桥接接口进入,则匹配。 [!] --physdev-已退出 如果数据包将通过桥接接口离开,则匹配。 [!] --physdev-is-bridged 如果数据包正在桥接,因此未进行路由,则匹配。这仅在 FORWARD 和 POSTROUTING 链中有用。