2019 大改造宅宅雲架構系列文-4 pfSense
先前工作太忙、失戀打擊過大,以致懷疑人生,導致有陣子沒寫文章,最近 Red Hat 贊助小弟來魚尾獅王國上課,趁空擋把長久以來用的一些技術經驗寫下來分享給大家,2019 大改造宅宅雲架構系列文 快速傳送門,歡迎大家把自己 HomeLab/HomeCloud 的經驗分享出來蕉流蕉流
如 Logo 所示,本篇將會承襲上篇 2019 大改造宅宅雲架構系列文-3 的結尾,到底 pfSense 放到 VM 裡面後是如何搞得?
服務太多? 切網卡! 切網段!
上篇有人如果眼睛很尖的話,應該會發現我紅框那邊有好幾個網路介面,個別 VLAN 都會定義一個服務群,把相同性質的服務全部塞在一起,避免互相干擾
Q: 是不是一定要在 VM 外插多隻腳出來才能做?
這個如同 2019 大改造宅宅雲架構系列文-3 的網路架構一樣,實際上我只有插兩張網卡在裡面,其他多張虛擬網卡都用 802.1q VLAN Subinterface 切出來
上圖可以在 Interfaces > Interface Assignments > VLANs
裡面找到,所有透過 802.1q VLAN Subinterface 都會顯示在這邊
以下我新增一個 VLAN 104
當作範例,記得要選正確的 Interface,這邊有兩張介面
- vmx0: WAN
- vmx1: LAN <-- 選他
因為在 pfSense 安裝時會需要定義 WAN / LAN,所以這個理論上要知道,記得不要選錯,不然切出來的網路介面不會動,有一次眼殘選錯,看了足足一天才發現
Q: 這樣就搞定了嗎!?
還要回到 Interfaces > Interface Assignments
正式把這張虛擬網路介面卡加進去才算數
把虛擬網路介面的設定填一填就搞定了第一階段,所以架構圖上就會像下圖一樣
還有 NAT 呢...
在 pfSense 裡面關於 NAT 的部分,其實有不少功能介紹,這邊體恤小弟是個懶人,主要會用到
- SNAT 懶人功能: Automatic NAT Rules Generation
- SNAT 正常功能: Advanced Outbound NAT
- DNAT 正常功能: Forwarding Ports with pfSense
相關設定都在 Firewall > NAT > Outbound
裡面找得到,關於 Outbound NAT Mode
毫無懸念地開 Hybrid Outbound NAT rule generation
,主要是因為 Automatic NAT Rules Generation
真的是一個好棒棒
的功能 (我被我老闆影響了...) ,當你把上一個章節的虛擬網路加進去後,他會自動加一條 SNAT Rules 進去,啥都不用設定
關於 DNAT Port Forward 的使用就是直接開 Firewall > NAT > Port Forward
裡面上 Rule 就完工了,詳細設定介紹 Forwarding Ports with pfSense
我知道你忘記了 Firewall 這件事
Q: 為什麼照文章設定完之後,還是不會動!!!???
魔鬼就在這張圖裡面,可以在 Firewall > Rules > <指定的網路介面>
找到她,關於這個問題搞了半天是防火牆預設 Firewall Deny All...意思上圖的 Rules 是表示全部不給過
All incoming connections on this interface will be BLOCKED until PASS RULES are ADDED
所以你需要多一條 Rule
- Family: IPv4
- Protocol: any
- Source: any
- S Port: any
- Destination: any
- D Port: any
基本上就會通了,其他 Rules 就是按照自己需求自己加就好
DHCP 相關
因為我個人 Lab 都不用 DHCP 都是手動配 IP,但最近 Red Hat OpenShift 4 安裝忽然要弄 DHCP,剛好 pfSense 也有支援 DHCP Static Mappings for this Interface
,所以做起來非常方便使用
還有更多嗎?
除了以上基本的功能,如果是以 pfSense 為核心的架構,你也可以把以下服務放在上面都沒什麼問題
- Time Synchronization: ntp
- DNS: bind
- VPN: OpenVPN
總結
雖然用 pfSense 自架自己用沒什麼太大問題,但如果是給小公司 (~10) 使用或者是 SMB,訂閱他們提供軟體支援 或產品會是一個比較完善的保護,倘若如果是大型企業的話,還是建議乖乖看商用方案比較好
最後我想說,企業支持開源軟體的具體實踐,用原始碼或錢實際支持這些宅宅,幫助這些軟體永續經營,宅宅們也是需要吃飯喝水養家的