很多路由器都有Guest WIFI/訪客WIFI功能,但是Guest LAN好像沒有??自從小U用香橙派OrangePi 3B這塊有趣的單板電腦設爲一個外網可訪問的WordPress網站伺服器後,雖然能省下每月幾十美金的網站寄存月費,但出於資安考慮要把外網伺服器和內網的私人網路隔離開。然後就有了這篇文章。
摘要節點
爲什麼要設立訪客Guest LAN
用Zero Trust零信任的邏輯,我們要假設伺服器是已經被駭客攻陷的情況應對。就拿自設的網站伺服器來說,就要假設這個伺服器已經被駭客取得控制權,不僅能訪問裏面的所有文件數據,還能夠以此爲跳板,訪問這個伺服器所在的內網網段。也就是說,我們萬萬不能拿用來存儲私人資料的NAS來開放給Internet做網站伺服器,要用一部獨立的伺服器(例如兩百元的香橙派OrangePi 3B)。而且還要把這個伺服器與私人內網隔斷,即使黑客入侵了這個伺服器,也不能訪問到我的NAS、IP-CAM等設備。
訪客WIFI其實也是這種思路,連線訪客WIFI的手機、電腦是不能訪問到內網LAN和私人WIFI,只能與Internet連線。但是網站伺服器,例如我用到的香橙派OrangePi 3B,是通過有線LAN來連接路由器的。例如連線到LAN1接口,這個LAN1和LAN2、LAN3、LAN4以及WIFI都是不通的,也不能訪問路由器的admin panel(例如192.168.1.1),只能與Internet溝通。但小U不知道哪款家用Router的原廠固件有 “Guest LAN”的分隔,甚至在OpenWRT上也不是一個很多人用到的功能,所以小U就寫下本文,供大家和以後自己參考。
如何利用OpenWRT劃分出訪客Guest LAN
OpenWRT論壇的這個帖子:Creating a guest LAN (not WLAN) – Installing and Using OpenWrt / Network and Wireless Configuration – OpenWrt Forum 有網友同樣想設定“Guest LAN”,網友給出了兩種設置方法:
- 利用Interface劃分
- 利用VLAN ID劃分
小U先說這兩種方法有什麼區別。用Openwrt Interface劃分是最簡單,簡單說就是把某個LAN接口劃分出來,本文下面會詳細說明。相比之下VLAN ID劃分就在設計上複雜不少,但那麼還會有VLAN ID的劃分呢?這就涉及到更”高階“的組網方式,例如你需要分隔的LAN是在LAN1上接的十口交換機SWITCH上的”LAN-A“呢,如下圖中的Workstation 2是要隔離的對象,而Workstation 1和3都是在私人內網:
如果用Interface劃分的方式,那麼整個十口交換機SWITCH上的所有LAN A-J口都會被隔離,但是如果你只想隔離一個LAN-A呢?這就要用到交換機的VLAN來tag LAN-A的數據,讓後告訴路由器針對這個VLAN所做的隔離。VLAN隔離更靈活也更抽象,大多數家用用家應該不會用大所以本文我們只集中討論簡單的Interface劃分方式,如果需要VLAN設定的內容可以參考上面那個論壇帖子。
利用Interface劃分訪客Guest LAN
利用Interface劃分比較簡單明瞭,就是把你想分隔出來的LAN接口(例如LAN1)從預設的虛擬網橋br-lan中抽出來,放進一個新的虛擬網橋guest-lan,並對guest-lan的防火牆進行隔離配置。
Interface是什麼?
如果你是OpenWRT新手,可能已經暈車,什麼是Interface?簡單說Openwrt有一個頁面叫Interface,裏面是給每個或每組網路接口定義一個容易容易管理的名字。例如最常見的LAN和WAN。
如何用Interface劃分出Guest LAN
- 把你想分隔出來的LAN接口(例如LAN1)從預設的虛擬網橋br-lan中抽出來,
- 放進一個新的虛擬網橋guest-lan,
- 並對guest-lan的防火牆進行隔離配置
第一和第二步是比較簡單的,小U把截圖放上大家應該可以跟着做:
這樣你就已經把LAN1隔離出來了,但是現在LAN1不能訪問任何地方,是一個孤島。要爲他設立防火牆才能讓LAN1和br-lan按我們的想法運作。防火牆設定是比較有意思。主要分爲兩個部分:
- 隔離私有LAN
- 屏蔽訪問路由器(網關)
什麼是防火牆的zone
如果你是OpenWRT新手,必須暸解OpenWRT的防火牆是根據zone來定義的,一個zone包括什麼interfaces(或者倒過來說,一個interface綁定哪一個防火牆zone),都是自有設定的。
首先你要在「languest」中設定一個新的防火牆區域「guest-zone」:
「guest-zone」隔離私有LAN
現在就可以開始設置「guest-zone」防火牆規則了。首先要去到Firewall這個頁面:
Openwrt中,默認的私人的LAN zone在已經起名叫「lan」。要隔離的話,不要把原有的「lan」放入 「guest-zone」 允許的forward destination 或 forward source,那麼lan zone 和 guest zone就不能互相訪問。
屏蔽guest-zone訪問路由器(網關)的能力
我們不允許guest-zone訪問路由器的設定界面(通常是80端口),但是又要允許guest-zone與路由器的DNS和DHCP溝通(53 , 67, 68端口)。小U原本用的是”黑名單“方法,在Traffic Rule中屏蔽guest-zone對路由器網關的80端口訪問。但經過大神提點,應該是用”白名單“方法,默認屏蔽所有從guest-zone訪問路由器網關的能力,然後用Traffic Rule放行53 , 67, 68端口。讓小U恍然大悟,這樣做更安全。我就把最佳的設定截圖放出來,之前的討論大家可以看回我在論壇帖子中的討論。
測試隔離效果和實際應用
經過這樣一系列設定,Guest LAN上的設備是不能PING通 內網網段(例如192.168.1.2~254)以及 路由器/網關 (192.168.1.1),只能與Internet溝通。
至此,小U的網站伺服器就能放心的接在LAN1上面,即使有黑客駭進,損失也是僅限LAN1上的設備。而LAN2~4和整個WIFI網路的設備、以及路由器,LAN1都是觸及不到的。
結合Cloudflare Tunnel安全性更上一層次
最後還有一個tips:傳統的自建網站伺服器,需要在路由器上添加80端口的端口映射(Port Forward)到伺服器的內網IP。這樣做會把你的80端口和私有IP地址都暴露在公網Internet上。現在可以透過免費的Cloudflare Tunnel服務,不需要在路由器上放行80端口就能做到”內網穿透“,讓Cloudflare Tunnel幫你完全隱密你的私有IP,也不需要打開80端口,實在是感嘆技術進步!(詳細實施方法請見前文WordPress搭建分享)
還沒有OpenWRT路由器?不妨看看本年度性價比最高的選擇:$2xx跑滿1Gbps的路由器:MTK WIFI6+原生OpenWRT 是否本年度最抵玩選擇? – by Upsangel
最後是自我業配時間,如果你想體驗OpenWRT的強大功能但又沒有時間去刷機改固件,不妨考慮小U預刷固件、於裝VPN和擋廣告的Ups-WR30U開源OpenWRT路由器:
你好,根據你的設定好似淨係只可以分隔到實體lan port 入guest lan,因為大部份IOT 設備都係用無線,係唔係可以喺openwrt 入邊利用 mac address 去判斷邊啲設備放入去一個guest lan? 如果唔得應該點樣做才可以做到阻隔? thx
這一篇 guest wifi 的可能更適合你? -> https://upsangel.com/openwrt/openwrt-%e8%a8%aa%e5%ae%a2wifi-%e8%a8%ad%e5%ae%9a%e6%95%99%e5%ad%b8guest-wlan/
nice