使用 DD-WRT 阻止 Wi-Fi 介面上的所有 WAN 存取

使用 DD-WRT 阻止 Wi-Fi 介面上的所有 WAN 存取

我有一個帶有兩個 Wi-Fi 介面的 dd-wrt ​​路由器 ( ath0, ath1)。我希望所有設備都ath0沒有任何類型的 WAN 存取。僅 LAN(往返於設備)。

我該如何以最簡單、最穩健的方式做到這一點?

在我嘗試使用 ath1 之前,還新增了虛擬 AP、AP 的新橋接器以及一些進階路由和防火牆設定。但這太複雜了,我認為使用我的、未使用的ath0(5GHz)介面來實現此目的應該會容易得多。

我使用 OpenVPN 作為客戶端,這讓事情變得有點複雜。當使用舊方法使用 iptables 防火牆時,我總是必須手動重新設置防火牆設置,因為 /etc/ 中的一個文件-I由於 VPN 的原因會覆蓋我的規則(在頂部),允許所有 WAN 訪問,只要它結束VPN 。由於squashFS,我找不到一種方法來防止這種情況發生,而且在保存設定/重新啟動路由器後總是必須手動覆蓋它,這不太好。我也不確定以後是否會再覆蓋它。

我也不想ath0存取 VPN。我無法將 iptables 與來源 IP 一起使用,因為它應該適用於該 SSID/介面上的所有客戶端,一旦它們連接,我就不會真正提前知道 IP。

我嘗試尋找此內容,但除了過於先進的虛擬 AP/橋接解決方案之外,我找不到任何適合我的情況的東西。

答案1

假設除了路由器上還有ebtables(或) 之外,且所有 (W)LAN 介面都是同一個主介面的橋接從屬介面(例如名為):ebtables-nftiptablesbridge0

ebtables -I INPUT -i ath0 -j mark --set-mark 0xabcd
iptables -I FORWARD -i bridge0 -m mark --mark 0xabcd -j DROP

(請注意,標記值0xabcd是任意的。)

這會導致從「LAN 端」進入路由器的所有流量「停留在」廣播網域內。原因是,ebtables'INPUT不包括從網橋從站/連接埠到另一個網橋從站/連接埠的流量(即 L2 轉送)。對於以路由器本身為目標的內容(來自ath0並因此被標記),我們不希望它們在 L3 上轉送(即能夠從“LAN”到“WAN”/VPN/...) 。

作為替代方案,您也可以不依賴 iptables 或資料包標記來完成此操作:

ebtables -I INPUT -i ath0 -d Unicast -p ip ! --ip-dst $ROUTER_LAN_IP -j DROP

雖然未經測試,但-d Unicast應保持 DHCP 等工作。如果您還需要 IPv6(流量對於 L3 上的路由器)要工作,您可能需要/想要一個額外的鏈來處理更多例外情況(這也將允許您使用另一種方​​法允許 DHCP),例如:

ebtables -N ATH0
ebtables -A ATH0 -p ip --ip-dst $ROUTER_LAN_IP -j ACCEPT # unicast
ebtables -A ATH0 -p ip --ip-dport 67 -j ACCEPT # broadcast
ebtables -A ATH0 -p ip ... -j ACCEPT
...
ebtables -A ATH0 -p ip6 ... -j ACCEPT
...
ebtables -A ATH0 -j DROP
ebtables -I INPUT -i ath0 -j ATH0

但正如您所看到的,後一種方法要笨拙得多。

PS 我對所有 WRT 或類似的經驗都為零,所以我不知道如何使 xtables 規則在它們上持久存在。 (公平地說,據我所知,即使在「典型」Linux 發行版上,它也是特定於發行版的。)

相關內容