Iptables

iptables 可以區分網橋的介面嗎?

  • November 8, 2020

我在這樣的網橋中有三個介面

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 放在不同的子網中,然後以某種方式在兩個子網之間路由?

是的,有physdev

物理開發

該模組匹配受制於橋接設備的橋接埠輸入和輸出設備。該模組是啟用透明橋接 IP 防火牆的基礎架構的一部分,僅對 2.5.44 以上的核心版本有用。

$$ ! $$–physdev-in名稱 接收數據包的網橋埠的名稱(僅適用於進入INPUTFORWARDPREROUTING鏈的數據包)。如果介面名稱以“+”結尾,那麼任何以此名稱開頭的介面都將匹配。如果數據包沒有通過網橋設備到達,則此數據包將不匹配此選項,除非“!” 用來。 $$ ! $$–physdev-out名稱 將通過其發送數據包的橋接埠的名稱(用於進入FORWARDPOSTROUTING鏈的橋接數據包)。如果介面名稱以“+”結尾,那麼任何以此名稱開頭的介面都將匹配。 $$ ! $$–physdev-is-in 如果數據包通過網橋介面進入,則匹配。 $$ ! $$–physdev-is-out 匹配數據包是否將通過網橋介面離開。 $$ ! $$–physdev-is-bridged 如果數據包正在被橋接,因此沒有被路由,則匹配。這僅在 FORWARD 和 POSTROUTING 鏈中有用。

引用自:https://unix.stackexchange.com/questions/618661