用OpenWRT劃分出訪客Guest LAN、隔離外網伺服器的兩種方法(不是無線訪客WIFI)

很多路由器都有Guest WIFI/訪客WIFI功能,但是Guest LAN好像沒有??自從小U用香橙派OrangePi 3B這塊有趣的單板電腦設爲一個外網可訪問的WordPress網站伺服器後,雖然能省下每月幾十美金的網站寄存月費,但出於資安考慮要把外網伺服器和內網的私人網路隔離開。然後就有了這篇文章。

爲什麼要設立訪客Guest LAN

用Zero Trust零信任的邏輯,我們要假設伺服器是已經被駭客攻陷的情況應對。就拿自設的網站伺服器來說,就要假設這個伺服器已經被駭客取得控制權,不僅能訪問裏面的所有文件數據,還能夠以此爲跳板,訪問這個伺服器所在的內網網段。也就是說,我們萬萬不能拿用來存儲私人資料的NAS來開放給Internet做網站伺服器,要用一部獨立的伺服器(例如兩百元的香橙派OrangePi 3B)。而且還要把這個伺服器與私人內網隔斷,即使黑客入侵了這個伺服器,也不能訪問到我的NAS、IP-CAM等設備。

圖片來源:How to Create a Guest Wi-Fi Network (stevessmarthomeguide.com)

訪客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就寫下本文,供大家和以後自己參考。

不少大廠路由器都有「訪客WIFI」功能,但是「訪客有線LAN」呢?圖片來源:[無線路由器] 如何設定訪客網路(WebGUI/App) | 官方支援 | ASUS 台灣

如何利用OpenWRT劃分出訪客Guest LAN

OpenWRT論壇的這個帖子:Creating a guest LAN (not WLAN) – Installing and Using OpenWrt / Network and Wireless Configuration – OpenWrt Forum 有網友同樣想設定“Guest LAN”,網友給出了兩種設置方法:

  1. 利用Interface劃分
  2. 利用VLAN ID劃分

小U先說這兩種方法有什麼區別。用Openwrt Interface劃分是最簡單,簡單說就是把某個LAN接口劃分出來,本文下面會詳細說明。相比之下VLAN ID劃分就在設計上複雜不少,但那麼還會有VLAN ID的劃分呢?這就涉及到更”高階“的組網方式,例如你需要分隔的LAN是在LAN1上接的十口交換機SWITCH上的”LAN-A“呢,如下圖中的Workstation 2是要隔離的對象,而Workstation 1和3都是在私人內網:

圖片來源:OpenWrt VLAN configuration with a Managed Switch – Installing and Using OpenWrt / Network and Wireless Configuration – OpenWrt Forum

如果用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。

默認的OpenWRT出廠有三個Interfaces,LAN (綁定了br-lan網橋,裏面通常涵蓋所有LAN接口),WAN外網和WAN6外網IPV6。
題外話:OpenWRT中的LAN和WAN口是哪個都是可以自有定義的。例如把OpenWRT路由器作爲交換機Switch使用的時候,就可以把WAN Interface刪除,然後把所有接口都綁定到LAN上面去:

如何用Interface劃分出Guest LAN

  1. 把你想分隔出來的LAN接口(例如LAN1)從預設的虛擬網橋br-lan中抽出來,
  2. 放進一個新的虛擬網橋guest-lan,
  3. 並對guest-lan的防火牆進行隔離配置

第一和第二步是比較簡單的,小U把截圖放上大家應該可以跟着做:

在Network-Devices裏面創建一個新網橋設備,命名爲「br-guest」
在「br-guest」中,把你想要隔離的LAN1接口加入到「Bridge ports」裏面。然後在默認的「br-lan」中把這個LAN1接口刪除。
然後,需要創建一個新的Interface,就叫「languest」吧,把剛剛創建的「br-guest」包括進去。

這樣你就已經把LAN1隔離出來了,但是現在LAN1不能訪問任何地方,是一個孤島。要爲他設立防火牆才能讓LAN1和br-lan按我們的想法運作。防火牆設定是比較有意思。主要分爲兩個部分:

  • 隔離私有LAN
  • 屏蔽訪問路由器(網關)

什麼是防火牆的zone

如果你是OpenWRT新手,必須暸解OpenWRT的防火牆是根據zone來定義的,一個zone包括什麼interfaces(或者倒過來說,一個interface綁定哪一個防火牆zone),都是自有設定的。

首先你要在「languest」中設定一個新的防火牆區域「guest-zone」:

「guest-zone」隔離私有LAN

現在就可以開始設置「guest-zone」防火牆規則了。首先要去到Firewall這個頁面:

在guestzone那裏,只加入wan爲允許forward to的destination。Input選reject,Output和Forward選accept。

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恍然大悟,這樣做更安全。我就把最佳的設定截圖放出來,之前的討論大家可以看回我在論壇帖子中的討論。

在Traffic rules頁面,創建一條新規則,From guestzone to this device,允許端口53,67和68.

測試隔離效果和實際應用

經過這樣一系列設定,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路由器:

Ups-WR30U WIFI6 AX3000 開源OpenWRT路由器 – 小U網販 (upsangel.com)

3 Comments
  1. 你好,根據你的設定好似淨係只可以分隔到實體lan port 入guest lan,因為大部份IOT 設備都係用無線,係唔係可以喺openwrt 入邊利用 mac address 去判斷邊啲設備放入去一個guest lan? 如果唔得應該點樣做才可以做到阻隔? thx

你可以一針見血

by Upsangel
Logo