使用虛擬私人網路(VPN)在這個科技時代是必要的。VPN 對於個人使用以及尤其是對於企業和企業來說越來越重要。如果你仍在考慮要選擇哪個 VPN 解決方案,為什麼不考慮 OpenConnect VPN 呢?
OpenConnect VPN 是一個具有企業級性能和功能的免費 VPN 解決方案。在這個教程中,你將學習如何設置和連接到 OpenConnect VPN 伺服器(ocserv)。
繼續閱讀,保護你的網路免受惡意實體的侵害!
先決條件
本教程包括實際演示。要跟隨本教程,請確保你已經準備好以下事項:
- A Linux server running Debian- This tutorial uses a Debian 11 Bullseye with hostname ocserv-debian.
- 管理員使用者或擁有 sudo/root 權限的非根使用者。
- A domain name pointed to your Linux server IP address – This tutorial uses a domain name vpn.atadomain.io.
- A client machine like Windows 10 or Linux Desktop – This tutorial uses a Windows 10 machine.
安裝 OpenConnect VPN 伺服器
OpenConnect VPN 伺服器是一個基於 SSL 的開源 VPN 伺服器,適用於大多數 Linux 發行版,如 Debian、Ubuntu、RHEL/CentOS 和 Fedora。
OpenConnect VPN 伺服器支援從桌面/電腦到移動裝置(Android 和 iOS)的大多數客戶端。同樣,OpenConnect VPN 伺服器支援多種身份驗證後端,如 Radius、OpenID、Kerberos 和智慧卡。
但在利用這些功能之前,你必須先安裝 OpenConnect VPN 伺服器,步驟如下:
1. 連接到您的伺服器,並執行以下 apt update
命令來更新和刷新套件索引。此命令確保您擁有最新的套件資訊。

2. 接下來,執行以下 apt install
命令來安裝 ocserv
套件。
安裝完成後,新的 systemd 服務名為 ocserv
將啟動。

3. 現在,執行以下 systemctl
命令來確保 ocserv
服務正在運行。
從輸出中可以看到,ocserv
服務的狀態為已啟用並正在運行。

生成 SSL/TLS 憑證
安裝完 OpenConnect VPN 伺服器後,下一步是確保您可以安全連接到 OpenConnect VPN 伺服器。如何?第一步是通過 Certbot 和 LetsEncrypt 生成 SSL/TLS 憑證。
但在生成證書之前,請確保您擁有一個電子郵件地址,以註冊到 LetsEncrypt,並且域名指向 Debian 伺服器的 IP 地址。
生成 SSL/TLS 證書的步驟如下:
1. 在您的 Linux 伺服器上運行以下命令以安裝 certbot
。

2. 接下來,運行以下 certbot
命令來生成 SSL/TLS 證書。請確保相應更改電子郵件地址([email protected]
)和域名(vpn.atadomain.io
)。

3. 最後,運行以下命令來驗證生成的 SSL/TLS 證書是否存在於您的域目錄中。
如果成功,您將看到以下公開(fullchain.pem)和私人(privkey.pem)密鑰。如下所示。

配置 OpenConnect VPN 伺服器
即使您擁有 SSL/TSL 證書,除非您配置 OpenConnect VPN 伺服器,否則它們將閒置在那裡。您將根據以下方式修改默認的 OpenConnect VPN 伺服器配置(/etc/ocserv/ocserv.conf):
- 更改默認的身份驗證方法。
- 禁用 OpenConnect VPN 伺服器上的 UDP。
- 更改默認的 SSL/TLS 證書。
- 為客戶端設置域名和內部網絡或 IP 地址。
要配置 OpenConnect VPN 伺服器,請按照以下步驟進行操作:
1. 首先,執行下面的cp
命令備份默認的OpenConnect VPN Server配置(ocserv.conf
)到/etc/ocserv
目錄下的ocserv.conf.orig
。
2. 接下來,使用您喜歡的編輯器打開OpenConnect VPN Server配置文件(/etc/ocserv/ocserv.conf)。
3. 將auth
參數值更改為plain[passwd=/etc/ocserv/ocpasswd]
,如下所示。這樣做將使用密碼文件替換默認的可插入身份驗證模組(PAM)身份驗證。
auth = "plain[passwd=/etc/ocserv/ocpasswd]"

4. 現在,在udp-port
參數前面加上#
以禁用默認的UDP連接。
您將使用僅TCP模式的OpenConnect VPN,您可以通過內核參數來增加速度。
tcp-port = 443
#udp-port = 443

5. 將server-cert
參數中的證書文件路徑替換為公鑰,將server-key
參數中的私鑰替換為私鑰。
server-cert = /etc/letsencrypt/live/vpn.atadomain.io/fullchain.pem
server-key = /etc/letsencrypt/live/vpn.atadomain.io/privkey.pem

6. 將 try-mtu-discovery
參數值更改為 true
以啟用 MTU 發現。這樣做可以提高 OpenConnect VPN 服務器的速度和性能。
try-mtu-discovery = true

7. 接下來,將域名輸入到 default-domain
參數中,並在 ipv4-network
參數中更改默認內部 IP 地址。
在此示例中,VPN 客戶端將使用內部網絡 10.11.0.0/24
。
default-domain = vpn.atadomain.io
ipv4-network = 10.11.0.0

8. 通過在每行開頭添加 #
字符來註釋默認的 route
參數,以禁用默認路由網關。完成後,保存文件並退出編輯器。
#route = 10.0.0.0/8
#route = 172.16.0.0/12
#route = 192.168.0.0/16
#route = fd00::/8
#route = default

9. 現在,運行以下命令來 重新啟動
ocserv
服務,應用更改並列出系統上的所有開放端口 (ss
)。
如果 OpenConnect VPN 服務器正在運行,您將在下面的輸出中看到端口 443 處於 LISTEN 狀態,並由 ocserv 服務使用。如下所示。

將用戶添加到 OpenConnect VPN 服務器
配置好 OpenConnect VPN 服務器後,您需要一種方法來連接它。如何?通過在 OpenConnect VPN 服務器上創建並添加 VPN 用戶。
要將使用者新增至OpenConnect VPN伺服器,您將按以下步驟建立VPN使用者並透過ocpasswd
工具生成密碼檔案:
執行以下ocpasswd
命令以建立新使用者。當提示時,輸入新使用者的密碼並重複輸入。本教程選擇的用戶名為atauser
,但您可以提供自己的。
使用者建立後,密碼檔案(/etc/ocserv/ocpasswd
)也會被建立。

現在,執行以下cat
命令來檢查密碼檔案的詳細資訊(/etc/ocserv/ocpasswd
)。

將UFW防火牆規則添加至Open關鍵埠
在Debian系統上,默認防火牆是IPTables,需要深入了解網絡才能設置。為什麼不簡化過程呢?在本教程中,您將安裝並配置UFW作為默認防火牆。
1.執行以下命令以安裝UFW並自動接受所有提示(-y
)

2.安裝UFW後,執行以下ufw
命令來打開OpenConnect VPN伺服器正常工作所需的關鍵埠。
在提示时,输入Y并按Enter以执行操作,如下所示。

3. 最后,运行以下命令检查UFW状态,确保UFW正在运行。
下面的输出显示了活动的UFW状态和所有添加的防火墙规则。

启用端口转发
在运行VPN服务器时,您必须通过启用端口转发将外部世界的流量定向到服务器。您将通过内核参数允许在Debian服务器上进行端口转发。
要启用端口转发,请按照以下步骤操作:
运行以下命令,该命令不会在终端上产生输出,但会创建一个名为/etc/sysctl.d/60-ocserv.conf
的新文件。此文件包含启用系统上端口转发的内核参数。
现在,运行以下sysctl
命令以应用新的内核参数并启用端口转发。

使用UFW设置NAT
启用端口转发只是其中的前几个步骤。这次,您必须通过UFW设置NAT来确保VPN客户端可以通过OpenConnect VPN服务器连接到互联网或特定网络。如何实现?通过使用UFW设置NAT。
為OpenConnect VPN伺服器設置NAT與UFW:
1.執行以下命令來檢查系統上的介面清單。
在此示例中,eth1介面將成為VPN客戶端的NAT網關。

2.接下來,使用您喜歡的編輯器打開UFW配置(/etc/ufw/before.rules),並在*filter
選項之前添加以下行。這些配置將VPN用戶(指定輸出介面)或內部網路NAT到eth1
介面。
請務必將子網路(10.11.0.0/24
)和介面(eth1
)更改為您的VPN客戶端網路和您的網路介面。
# OpenConnect VPN伺服器的NAT
# 用客戶端網路10.11.0.0/24
# 到介面eth1
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.11.0.0/24 -o eth1 -j MASQUERADE
COMMIT

3.在ufw-before-forward
選項的ok icmp code for FORWARD
部分下方添加以下行,保存文件並退出編輯器。
這些配置啟用了VPN客戶端網路的轉發(來源和目的地)。
# 允許轉發VPN客戶端網路
-A ufw-before-forward -s 10.11.0.0/24 -j ACCEPT
-A ufw-before-forward -d 10.11.0.0/24 -j ACCEPT

4.保存後,執行以下命令重新加載UFW規則並重新啟動UFW服務。這樣做可以確保NAT配置應用於系統。
5.最後,運行以下iptables
命令來檢查UFW上的NAT狀態,因為UFW的後端是IPTables。
成功時,您將收到以下類似的輸出。

通過OpenConnect-GUI連接到OpenConnect VPN伺服器
按照指示,您現在應該已經運行了一個完全功能的OpenConnect VPN伺服器。但經過所有的辛勤工作,關鍵時刻終於到來了。
OpenConnect VPN伺服器可能正在運行,但僅有一種最好的方法可以驗證——連接到OpenConnect VPN伺服器。
要連接到OpenConnect VPN伺服器,您必須安裝OpenConnect-GUI應用程序:
1. 打開您喜歡的網絡瀏覽器,並訪問OpenConnect-GUI GitHub頁面。
2. 接下來,下載並安裝Windows的OpenConnect VPN應用程序。

3. 打開OpenConnect-GUI VPN客戶端,並點擊文件菜單→配置文件→新建配置文件(高級)(或按Ctrl+Shift+N)。一個小窗口出現,您可以在其中填寫新的配置文件詳細信息(第四步)。

4. 現在,使用以下信息填寫VPN配置文件:
- 名稱–提供一個連接名稱(即,testvpn)。
- 閘道–指定您的OpenConnect VPN伺服器的域名(即,https://vpn.atadomain.io)。
- 用戶名–添加到OpenConnect VPN伺服器的用戶(atauser)。
填寫完畢後,點擊保存以確認信息並創建VPN配置文件。

5. 接下來,將您新建的 VPN 設定檔(testvpn)設定為伺服器,然後點擊連線以建立與 OpenConnect VPN 伺服器的連接。

6. 當系統提示時,輸入您的 VPN 使用者密碼,然後點擊確定。

7. 連接成功後,掛鎖的顏色會變成綠色,如下所示。

8. 最後,點擊VPN 資訊標籤以獲取詳細的連線狀態。您應該能看到從 VPN 伺服器獲得的內部 IP 位址、DNS 伺服器以及您使用的 TLS 版本。

結論
在這個教學中,您學會了如何設置 OpenConnect VPN 伺服器。同時,您還學會了使用 SSL/TLS 憑證並添加防火牆規則以建立對 OpenConnect VPN 伺服器的安全連線。
有了這些新知識,不妨將 OpenConnect VPN 伺服器與多個身份驗證後端整合,例如Radius和OpenID?或者為客戶端身份驗證添加雙因素認證的安全層?