01 OpenVPN 的設定- Server(pfsense)與Client(Win10) cover 1024x512

OpenVPN 架在pfsense上面,讓手機、電腦可以連線

  • Post category:Firewall
  • Reading time:24 mins read

為什麼會想要自架防火牆( pfsense )呢?又為什麼想要架設虛擬私人網路( OpenVPN )呢?說穿了,都是因為當初走上自架 WordPress 部落格這條不歸路所造成的結果!

一直以來,在 WordPress 後臺,幾乎每天都可以看到非法連線、惡意攻擊…的紀錄,雖然都沒有造成嚴重的傷害,部落格都活得好好的,但是每天看到那些不正常的連線,心裡難免毛毛的。

而在部落格中,並沒有任何會員資料(因為非營利用途),而電腦硬碟也僅是監視器錄影檔與家人生活照片、影片( 因為使用 Plex 做影音串流)而已,真的也沒有任何有價值的資料值得被破壞或盜取。

不過,就是想要把那些礙眼的紀錄,從生活中移除。怎麼實現呢?大約花了一年左右的時間,在 Google 爬文、看 Youtube 頻道、加入 Facebook 社團學習…,現在終於實現了當初設定的目標了。在 WordPress 後臺中的非法連線紀錄,終於減少許多了~

免費防火牆只能選擇 pfsense 嗎?

要做一件完全陌生的事之前,千萬不要一開始就行動,不然會有很大的機率做白工!

畢竟自己不是理工科系的背景,所以大概花了一年左右的時間,了解什麼是防火牆?什麼是 VPN ?

16 款免費防火牆

雖然這一篇不是最新的文章,但是卻能讓外行人一看就可以把範圍收斂下來: Best free Linux router and firewall distributions of 2020

作者把 16 款免費防火牆的優缺點都列出來了,當然在文中也可以找到相關的關鍵字,然後做深入的了解。

  1. IPCop – avoid at all cost
  2. Smoothwall – long dead
  3. DD-WRT – no longer competitive
  4. M0n0wall – retired
  5. Tomato – not for new routers
  6. Zeroshell – poor choice
  7. VyOS – no Web interface
  8. OpenBSD and FreeBSD – use only if you have 10+ years of the command line experience
  9. Debian and Ubuntu – don’t use general purpose OS for your router
  10. Untangle – is it really free if OS asks you to upgrade to a paid version?
  11. Sophos – small fish in an enterprise pond
  12. Endian – you really have to pay to use it fully
  13. OPNsense – a raising star
  14. OpenWRT – a proven veteran
  15. pfSense – most popular
  16. IPFire – contender

以上紅色字體的防火牆,就是曾經進行安裝,卻卡在安裝過程;而有些則是完成安裝,但是遇到問題時,居然找不到教學文來解決問題。綠色字體的防火牆,是完成安裝也使用了一陣子的產品。

3 款集中式威脅管理( Unified Threat Management,UTM)

在了解免費防火牆的過程中,無意間看到網友偶而會拿 UTM ( Unified Threat Management )來比較。剛開始,的確是看的一頭霧水,有看沒有懂。不過,在閱讀幾篇文章後,衡量自己的背景、能力,於是就決定使用 pfSense 來架設家庭防火牆了。

雖然 UTM 也有防火牆的功能,而且操作介面幾乎都比上述 16 款免費防火牆直覺,然而最不適合非理工科系背景使用的原因就是:

  • 討論文章少
  • 幾乎都要尋求原開發商的技術支援
  • 門檻高,因為功能太多,設定複雜
  • 需具備網路知識背景才能理解專業術語

假使你有興趣玩玩 UTM 的話,可以自行 Google 以下產品:

  1. ClearOS
    • 開發商是 HPE 
    • 放棄考慮的原因: 實用的外掛幾乎都要付費
  2. Sophos
    • 網路上的討論文章極少,幾乎只能到官方論壇去求援
    • 有網友分享這款產品是免費的,但是下載過程極繁瑣
  3. Simplewall
    • 連到官網發現,版本似乎很久沒更新了

也許你有興趣:搭配 HiNet 光世代 500M / 250M 的平價 Mesh WiFi 無線路由器是哪一款呢?

安裝 pfsense 防火牆

需要執行額外程式才能架設 OpenVPN Server 嗎?

使用了 Vigor 2120n plus 入門款防火牆,也有好幾年的時間,當初就是看上它支援許多 VPN 的協定,同時價錢也不會太貴,所以剛入手時,馬上就設定了幾種 VPN 連線方式(紅色),讓家人可以成功翻牆( Vigor 2120n plus 翻牆實例: 請點我)。

  • PPTP
  • L2TP
  • IPsec
  • L2TP over IPsec
  • IKEv2
  • SSL

畢竟這是一款入門防火牆的產品,所以無法以國家為物件,進行封鎖連線;即使想要手動新增封鎖 IP 的話,就會遇到數量上限的問題。

所以,現在既然有念頭要自架防火牆了,當然就要找到一個新產品,可以解決眼前的問題–>【封鎖特定國家 IP 】;同時還要能提供已經在使用的服務–> 【翻牆必備, VPN 服務】。

回過頭來看看,其實 pfsense 就已經內建了,所以不需要安裝額外程式,只要設定正確就可以直接使用了。很方便,不是嗎?

為什麼要使用 OpenVPN 呢?

一開始在爬文時,觀念中還停留在 SSL VPN 的設定是最方便的。可是卻找不到一款免費防火牆產品,有內建 SSL VPN 的功能。雖然覺得很奇怪,但是又不想花時間去了解原因。在過程中,卻看到了大多數人都是正面評價,讓我也不得不改變目標,來試試看好了。

PPTPL2TP/IPsecOpen VPN
加密等級128-bit256-bit256-bit
安全等級普通最高
連線速度較快較慢
作業系統微軟、
Mac、
Android
微軟、
Mac、
iOS、
Android
微軟、
Mac、
iOS、
Android
硬體相容電腦、
手機、
平板。
電腦、
手機、
平板。
電腦、
手機、
平板。
專家評比普通尚可推薦
結論速度快,
但是安全性低。
可做為
第 2 選擇
最推薦,
速度快、
安全可靠、
用戶端設定簡單。
VPN 的比較

安裝 pfsense 的硬體需求

首先要找一台舊電腦、USB隨身碟、至少有兩個網路孔,這樣子就可以開始安裝 pfsense 了。不然,也可以連上官網檢查自己的硬體配備,是否在支援清單裡面: FreeBSD 12.2-RELEASE Hardware Notes

假使想省事,乾脆買一台硬體來安裝 pfsense 也是可以: netgate線上商店Protectli(全球出貨,包含臺灣)

最低要求建議配備
處理器500 Mhz1 GHz
記憶體512 MB1 GB
磁碟1 GB 4 GB
網路卡Intel晶片Intel晶片
pfSense 2.x 硬體需求

圖文並茂的安裝過程

官網下載安裝檔後,使用 Win32 Disk Imager 或 Rufus 把映像檔寫入 USB 隨身碟,然後把電腦改成 USB 隨身碟開機,接下來參考官網的圖片,應該也可以像我一樣,完成安裝 pfsense 了。

不過要注意一點,下載映像檔的時候記得選【Console: VGA】這個選項,這樣子才能用螢幕與鍵盤來操作安裝,不然的話,只能一直使用指令透過 COM port 來操作安裝。

完成映像檔寫入磁碟後,記得把 USB隨身碟拔掉,讓下一次重開機時,直接由磁碟開機進入初始設定畫面。因為 pfsense 的預設設定僅是把 WAN 端設定成 DHCP 模式而已,而 LAN 端的設定都是空白。

02 pfsense image type download 480
pfsense 映像檔下載

pfsense 初始設定

現在我們要針對 LAN 端做設定,完成後才能從其他區網的電腦,透過網路連線到這一台防火牆做客製化的設定。在防火牆電腦的螢幕畫面,可以看到選單中,有 16 個分類,基本上只要設定紅色標示的那兩項就可以了。

  • 0) Logout (SSH only)
  • 1) Assign Interface
  • 2) Set interface(s) IP address
  • 3) Reset webConfigurator password
  • 4) Reset to factory defaults
  • 5) Reboot system
  • 6) Halt system
  • 7) Ping host
  • 8) Shell
  • 9) pfTop
  • 10) Filter Logs
  • 11) Restart webConfigurator
  • 12) PHP shell + pfSense tools
  • 13) Update fromconsole
  • 14) Enable Secure Shell (sshd)
  • 15) Restore recent configuration
  • 16) Restart PHP-FPM

設定完成後,將防火牆重新開機就好了。現在,可以在區域網路中的任一台電腦連線到防火牆做客制化的設定了。第一次登入 pfsense 時,要使用預設的帳號密碼:

  • Username
    • admin
  • Password
    • pfsense

以我的例子而言,WAN 端設定成 DHCP 模式,而 LAN 端設定成靜態 IP: 192.168.101.1,所以只要在網址列打上 IP 就可以進入登入畫面了。

03 pfsense log in default username password 380

設定 OpenVPN Server

在使用服務之前,需要先在 Server 端完成以下 6 個設定:

  1. 建立 Server 端的憑證
  2. 啟動設定精靈
  3. 設定 Client 端的連線資訊
  4. 安裝 OpenVPN Client Export Package
  5. 新增連線使用者帳號
  6. 匯出 Client 端的連線檔案

現在就開始來看細部設定囉~

建立 Server 端的憑證

第 1 步在導覽列中,進入【System】->【Cert. Manager】後,可以在【CAs】找到【+Add】

04 create openvpn Certificate Authorities 800
按下 ‘+Add‘ 新增一個憑證
05 create internal ca 800
CA Method 選擇【Create an Internal Certificate Authority】
06 create internal ca 800
然後按下’Save

第 2 步就是在 pfsense 新增 Server 的憑證

07 create openvpn server certificate
在 Certificates 頁面中,按下 ‘+ Add/Sign‘.
08 create openvpn server certificate
Method 選擇【Create an Internal Certificate】; Descriptive name 可以隨便填
09 create openvpn server certificate
Certificate Type 選擇【Server Certificate】,然後按下’Save

啟動設定精靈

10 openvpn setup on pfsense
進入設定畫面
11 openvpn wizards
點選【Wizards】

接下來的設定,比較簡單,直接參考下面 3 點進行設定:

  1. Type of Server: Local User Access
  2. Certificate Authority: 下拉選單中,指定剛剛建立的憑證
  3. Certificate: 下拉選單中,指定剛剛建立的憑證

接著就是開始輸入連線資訊:

12 openvpn wizards General Server Indormation
local port 可改可不改,看自己需求決定
13 openvpn wizards General Server Indormation
在 Cryptographic 的區塊內,所有的設定保持預設值,只需要更改【Auth Digest Algorithm】。然而【Hardware Crypto】,就看你的硬體有沒有支援,再來決定要不要啟動。
14 openvpn wizards Tunnel Settings
Local Network 填入你使用的 LAN 網段,其餘紅色方塊可根據你的需求作修改

接著就按’Next‘,來到【Traffic from clients to server】與【Traffic from clients through VPN】,直接在方塊中打勾,這樣子 pfsense 會自動將 rule 新增道防火牆設定中。最後,就完成設定精靈的所有設定了。

設定 Client 端的連線資訊

其實當我們完成上述兩章節的步驟後,server 就已經被啟動並且正在運作了。而當我們在建立 VPN 連線使用者的帳號之前,需要先針對用戶端的 VPN 連線做連線方式的設定。

15 set up openvpn client on pfsense
按下‘+Add‘來輸入連線方式

接下來會有 5 個部分需要設定:

  1. General information
  2. User Authentication Settings
  3. Cryptographic Settings
  4. Tunnel Settings、Ping settings
  5. Advanced Configuration

以上 5 個部分,需要根據之前完成的 Server 端資料,作相對應的設定才能讓使用者成功連線。

1. General information

在 General information 的部分,需要在 Server host or address 當中,輸入防火牆對外的 IP。其餘的欄位,保持預設值也可以。

16 General information setting
Server host or address: 輸入 WAN IP

2. User Authentication Settings

這裡是要輸入要連線的使用者帳號與密碼,待會在新增使用者的時候,要跟這裡輸入的帳號密碼一致才能成功連線。

17 User Authentication Settings
連線的使用者帳號與密碼

3. Cryptographic Settings

在 Peer Certificate Authority、Client Certificate、Auth digest algorithm 修改成下圖的設定;Hardware Crypto,就看你的硬體有沒有支援再來決定了。

18 Cryptographic Settings
19 Cryptographic Settings

4. Tunnel Settings、Ping settings

這一部分,我並沒有做修改,使用預設值也可以連線。

5. Advanced Configuration

選擇【IPv4 only】,然後按下【Save】,就完成 Client 端的連線資訊的設定了。

20 Advanced Configuration

安裝 Client Export Package

為了要方便將使用者連線檔案匯出,方便在電腦或手機完成認證,所以需要安裝一個外掛程式: OpenVPN_Client_Export_Package

在 System / Package Manager / Available Packages –> Search term 欄位中,輸入open,就可以找到了,直接安裝在 pfsense 就可以了。

21 安裝 OpenVPN Client Export Package

新增連線使用者帳號

要注意這裡的使用者帳號與密碼,需要與前面【設定 Client 端的連線資訊】/ 【2. User Authentication Settings】的帳號密碼一致,並且要把【Certificate】打勾。

22 User Properties for openvpn
將 Certificate 打勾

Certificate authority 要選擇前面【建立OpenVPN_Server端的憑證】->【System】->【Cert. Manager】新增的憑證,然後按下’Save’就可以了。

23 Create Certificate for User

匯出 Client 端的連線檔案

在 pfsense 導覽列中,前往【OpenVPN/Client Export Utility】後,按下【Client Export】就可以下載用戶端 VPN 連線檔案了。

25 openvpn export
  • Most Clients:
    • 這個檔案是給電腦使用的
  • Android:
    • 這個檔案是給 Android 手機使用的
  • OpenVPN Connect(iOS/Android):
    • 這個檔案是給蘋果裝置使用的
24 openvpn export

用戶端連線實例

本身使用過 Windows 10 的電腦與Android手機,都可以連線成功。坦白說,比之前使用 Vigor 2120n plus 翻牆( SSLVPN )來的方便,速度也不會比較慢。

Windows 10 用戶端連線 OpenVPN Server

首先要先下載官方連線軟體,然後將之前匯出的【Most Clients】檔案,匯入連線軟體後,就可以翻牆了!是不是很簡單呢?

Step 1:匯入檔案後,輸入帳號與密碼,即可連線

26-openvpn-client-connect-software

Step 2:Windows 10 用戶端翻牆成功

27-openvpn-client-connect-windows-10

Android 手機用戶端連線 OpenVPN Server

在 Google Play 搜尋【OpenVPN Connect – Fast & Safe SSL VPN Client】,然後安裝在手機當中。然後將之前匯出的【Android】檔案,匯入 APP 後,就可以翻牆了!

Step 1:匯入檔案後,輸入帳號與密碼,即可連線

28 openvpn client connect Android 450

Step 2:Android 用戶端翻牆成功

29-openvpn-client-connect-Android

常見問題

1. pfsense 安裝失敗,如何解決呢?

其實我也遇過相同問題,在社團求救後,版主建議在 BIOS 當中,改成 UEFI 開機,就可以安裝成功了。

2. opensense 不好用嗎?

不論是 opensense 或 pfsense,我都有安裝過。最後為什麼會改用 pfsense 呢?
就個人而言,原因就是 pfsense 的使用者真的很多,相對的討論文章也很多。這樣子,要在網路上找答案解決問題,真的比較容易。
另外一點,以外掛程式的數量而言, pfsense 還是比較多。
但是,兩個防火牆比較後,個人喜歡 opensense 的介面,因為比較直覺!

3. OpenVPN連線穩定嗎?

過去壹季的時間,幾乎每天都會使用 VPN 。至少還沒遇到連線失敗或是中途斷線的狀況。VPN連線算是穩定了~

4. 可以使用其它用戶端連線軟體/APP嗎?

應該是可以吧,因為我有一陣子都無法連線成功,從記錄檔看到連線正常但是無法取得IP。自從在社團中看到有人建議安裝【OpenVPN官方連線軟體】後,就可以正常使用了。

5. OpenVPN Server / Client / Export / Account 設定太複雜了,該放棄嗎?

說真的,一點都不複雜。我也是跟著文章中的圖,一直設定下來就成功了,千萬不要被上面那些圖片或文字給嚇到了。

你可能有興趣>>> DIY 居家監控系統,不能少了 VPN 連線功能!