Skip to content

Latest commit

 

History

History
454 lines (316 loc) · 23.2 KB

File metadata and controls

454 lines (316 loc) · 23.2 KB

English | 简体中文 | 繁體中文 | 日本語 | Русский

IPsec VPN 伺服器一鍵安裝腳本

Build Status GitHub Stars Docker Stars Docker Pulls

使用 Linux 腳本一鍵快速架設自己的 IPsec VPN 伺服器。支援 IPsec/L2TP、Cisco IPsec 和 IKEv2 協議。

IPsec VPN 可以加密你的網路流量,以防止在透過網際網路傳送時,你和 VPN 伺服器之間的任何人對你的資料進行未經授權的存取。在使用不安全的網路時,這一點特別有用,例如在咖啡廳、機場或旅館房間。

我們將使用 Libreswan 作為 IPsec 伺服器,以及 xl2tpd 作為 L2TP 提供者。

功能特性:

  • 全自動的 IPsec VPN 伺服器設定,無需使用者輸入
  • 支援具有強大且快速加密演算法(例如 AES-GCM)的 IKEv2 模式
  • 生成 VPN 設定檔以自動設定 iOS、macOS 和 Android 裝置
  • 支援 Windows、macOS、iOS、Android、Chrome OS 和 Linux 客戶端
  • 包含輔助腳本以管理 VPN 使用者和憑證

另提供:

快速開始

首先,在你的 Linux 伺服器* 上安裝支援的作業系統

使用以下命令快速架設 IPsec VPN 伺服器:

wget https://get.vpnsetup.net -O vpn.sh && sudo sh vpn.sh

你的 VPN 登入憑證將會自動隨機生成,並在安裝完成後顯示。

Tip

你可以選擇在同一台伺服器上安裝 WireGuardOpenVPN 和/或 Headscale

查看腳本的範例輸出(終端記錄)。

註: 此終端記錄僅用於示範目的。該記錄中的 VPN 憑據 無效

如果無法下載,請點這裡。

你也可以使用 curl 下載:

curl -fsSL https://get.vpnsetup.net -o vpn.sh && sudo sh vpn.sh

或者,你也可以使用這些連結:

https://github.com/hwdsl2/setup-ipsec-vpn/raw/master/vpnsetup.sh
https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/raw/master/vpnsetup.sh

如果無法下載,打開 vpnsetup.sh,然後點擊右側的 Raw 按鈕。按快捷鍵 Ctrl/Cmd+A 全選,Ctrl/Cmd+C 複製,然後貼上到你喜歡的編輯器。

IPsec VPN 也提供預先建構的 Docker 映像。如需了解其他選項以及客戶端設定,請繼續閱讀以下部分。

* 一個雲端伺服器、虛擬專用伺服器 (VPS) 或專用伺服器。

社群

  • 📬 訂閱專案更新(每月 1–2 封郵件)——獲取免費的 VPN 和 AI 部署指南(PDF,英文)
  • 💬 加入 r/selfhostedstack 社群,參與討論與專案展示
  • ⭐ 如果你覺得本專案有用,請為儲存庫加星——這能幫助更多人發現它。

系統需求

一個雲端伺服器、虛擬專用伺服器 (VPS) 或專用伺服器,安裝以下作業系統之一:

  • Ubuntu 26.04、24.04 或 22.04
  • Debian 13 或 12
  • CentOS Stream 10 或 9
  • Rocky Linux 或 AlmaLinux
  • Oracle Linux
其他受支援的 Linux 發行版。
  • Raspberry Pi OS (Raspbian)
  • Kali Linux
  • Alpine Linux
  • Red Hat Enterprise Linux (RHEL)

這也包括公共雲服務中的 Linux 虛擬機,例如 DigitalOceanVultrLinodeOVHMicrosoft Azure。公共雲使用者也可以使用使用者資料部署。

使用以下按鈕快速部署:

Deploy to Linode  Deploy to Azure

» 我想建立並使用自己的 VPN,但沒有可用的伺服器

對於有外部防火牆的伺服器(例如 EC2/GCE),請為 VPN 開啟 UDP 連接埠 500 和 4500。

IPsec VPN 也提供預先建構的 Docker 映像。進階使用者可以在 Raspberry Pi 上安裝。[1] [2]

Warning

不要 在你的 PC 或 Mac 上執行這些腳本!它們只能用在伺服器上!

安裝說明

首先,更新你的伺服器:執行 sudo apt-get update && sudo apt-get dist-upgrade (Ubuntu/Debian) 或 sudo yum update 並重新啟動。此步驟為可選,但建議執行。

要安裝 VPN,請從以下選項中選擇一個:

選項 1: 使用腳本隨機生成的 VPN 登入憑證(完成後會顯示)。

wget https://get.vpnsetup.net -O vpn.sh && sudo sh vpn.sh

選項 2: 編輯腳本並提供你自己的 VPN 登入憑證。

wget https://get.vpnsetup.net -O vpn.sh
nano -w vpn.sh
[替換為你自己的值: YOUR_IPSEC_PSK, YOUR_USERNAME 和 YOUR_PASSWORD]
sudo sh vpn.sh

Note

一個安全的 IPsec PSK 應至少包含 20 個隨機字元。

選項 3: 將你自己的 VPN 登入憑證定義為環境變數。

# 所有變數值必須用 '單引號' 括起來
# *不要* 在值中使用這些字元:  \ " '
wget https://get.vpnsetup.net -O vpn.sh
sudo VPN_IPSEC_PSK='你的IPsec預共享金鑰' \
VPN_USER='你的VPN使用者名稱' \
VPN_PASSWORD='你的VPN密碼' \
sh vpn.sh

Tip

你可以選擇在同一台伺服器上安裝 WireGuardOpenVPN 和/或 Headscale。如果你的伺服器執行 CentOS Stream、Rocky Linux 或 AlmaLinux,請先安裝 OpenVPN/WireGuard,然後再安裝 IPsec VPN。

如果無法下載,請點這裡。

你也可以使用 curl 下載。例如:

curl -fL https://get.vpnsetup.net -o vpn.sh
sudo sh vpn.sh

或者,你也可以使用這些連結:

https://github.com/hwdsl2/setup-ipsec-vpn/raw/master/vpnsetup.sh
https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/raw/master/vpnsetup.sh

如果無法下載,打開 vpnsetup.sh,然後點擊右側的 Raw 按鈕。按快捷鍵 Ctrl/Cmd+A 全選,Ctrl/Cmd+C 複製,然後貼上到你喜歡的編輯器。

我需要安裝較舊版本的 Libreswan 版本 4。

一般建議使用最新的 Libreswan 版本 5,它是本專案的預設版本。不過,如果你想要安裝較舊版本的 Libreswan 版本 4:

wget https://get.vpnsetup.net -O vpn.sh
sudo VPN_SWAN_VER=4.15 sh vpn.sh

註: 如果 Libreswan 版本 5 已經安裝,你可能需要先解除安裝 VPN,然後再安裝 Libreswan 版本 4。或者,你也可以下載升級腳本,編輯它並指定 SWAN_VER=4.15,然後執行腳本。

自訂 VPN 選項

使用其他 DNS 伺服器

在 VPN 已連線時,客戶端預設設定為使用 Google Public DNS。在安裝 VPN 時,你可以為所有 VPN 模式指定其他 DNS 伺服器。此為可選設定。示例如下:

sudo VPN_DNS_SRV1=1.1.1.1 VPN_DNS_SRV2=1.0.0.1 sh vpn.sh

使用 VPN_DNS_SRV1 指定主要 DNS 伺服器,使用 VPN_DNS_SRV2 指定次要 DNS 伺服器(可選)。

以下是一些常見的公共 DNS 提供商列表,供你參考。

提供商 主 DNS 輔助 DNS 註解
Google Public DNS 8.8.8.8 8.8.4.4 本專案預設
Cloudflare 1.1.1.1 1.0.0.1 另見:Cloudflare for families
Quad9 9.9.9.9 149.112.112.112 阻擋惡意網域
OpenDNS 208.67.222.222 208.67.220.220 阻擋網路釣魚網域,可設定。
CleanBrowsing 185.228.168.9 185.228.169.9 提供網域過濾器
NextDNS 依需求選擇 依需求選擇 廣告攔截,提供免費方案。了解更多
Control D 依需求選擇 依需求選擇 廣告攔截,可自訂設定。了解更多

如果你需要在安裝 VPN 之後更改 DNS 伺服器,請參見進階用法

Note

如果伺服器上已經設定 IKEv2,以上變數對 IKEv2 模式無效。在此情況下,如需自訂 IKEv2 選項(例如 DNS 伺服器),你可以先移除 IKEv2,然後執行 sudo ikev2.sh 重新設定。

自訂 IKEv2 選項

在安裝 VPN 時,進階使用者可以自訂 IKEv2 選項。此為可選設定。

選項 1:在安裝 VPN 時跳過 IKEv2,然後使用自訂選項設定 IKEv2。

在安裝 VPN 時,你可以跳過 IKEv2,只安裝 IPsec/L2TP 和 IPsec/XAuth("Cisco IPsec")模式:

sudo VPN_SKIP_IKEV2=yes sh vpn.sh

(可選)如果要為 VPN 客戶端指定其他 DNS 伺服器,你可以定義 VPN_DNS_SRV1VPN_DNS_SRV2(可選)。更多資訊請參見使用其他 DNS 伺服器

然後執行 IKEv2 輔助腳本,以互動方式使用自訂選項設定 IKEv2:

sudo ikev2.sh

你可以自訂以下選項:VPN 伺服器的網域名稱、第一個客戶端的名稱與憑證有效期限、VPN 客戶端的 DNS 伺服器,以及是否對客戶端設定檔進行密碼保護。

註: 如果伺服器上已經設定 IKEv2,則 VPN_SKIP_IKEV2 變數無效。在此情況下,如需自訂 IKEv2 選項,你可以先移除 IKEv2,然後執行 sudo ikev2.sh 重新設定。

選項 2:使用環境變數自訂 IKEv2 選項。

在安裝 VPN 時,你可以指定一個網域名稱作為 IKEv2 伺服器位址。此為可選設定。該網域名稱必須是完整網域名稱 (FQDN)。示例如下:

sudo VPN_DNS_NAME='vpn.example.com' sh vpn.sh

同樣地,你也可以指定第一個 IKEv2 客戶端的名稱。如果未指定,則使用預設值 vpnclient

sudo VPN_CLIENT_NAME='your_client_name' sh vpn.sh

在 VPN 已連線時,客戶端預設設定為使用 Google Public DNS。你可以為所有 VPN 模式指定其他 DNS 伺服器。示例如下:

sudo VPN_DNS_SRV1=1.1.1.1 VPN_DNS_SRV2=1.0.0.1 sh vpn.sh

預設情況下,匯入 IKEv2 客戶端設定時不需要密碼。你可以選擇使用隨機密碼保護客戶端設定檔。

sudo VPN_PROTECT_CONFIG=yes sh vpn.sh
供參考:IKEv1 和 IKEv2 參數列表。
IKEv1 參數* 預設值 自訂(環境變數)**
伺服器位址(DNS 網域名稱) - 不能,但你可以使用 DNS 網域名稱進行連線
伺服器位址(公網 IP) 自動偵測 VPN_PUBLIC_IP
IPsec 預共享金鑰 自動生成 VPN_IPSEC_PSK
VPN 使用者名稱 vpnuser VPN_USER
VPN 密碼 自動生成 VPN_PASSWORD
客戶端的 DNS 伺服器 Google Public DNS VPN_DNS_SRV1, VPN_DNS_SRV2
跳過 IKEv2 安裝 no VPN_SKIP_IKEV2=yes

* 這些 IKEv1 參數適用於 IPsec/L2TP 和 IPsec/XAuth ("Cisco IPsec") 模式。
** 在執行 vpn(setup).sh 時將這些定義為環境變數。

IKEv2 參數* 預設值 自訂(環境變數)** 自訂(互動式)***
伺服器位址(DNS 網域名稱) - VPN_DNS_NAME
伺服器位址(公網 IP) 自動偵測 VPN_PUBLIC_IP
第一個客戶端的名稱 vpnclient VPN_CLIENT_NAME
客戶端的 DNS 伺服器 Google Public DNS VPN_DNS_SRV1, VPN_DNS_SRV2
保護客戶端設定檔 no VPN_PROTECT_CONFIG=yes
啟用/停用 MOBIKE 如果系統支援則啟用
客戶端憑證有效期限 10 年(120 個月) VPN_CLIENT_VALIDITY****
CA 和伺服器憑證有效期限 10 年(120 個月)
CA 憑證名稱 IKEv2 VPN CA
憑證金鑰長度 3072 bits

* 這些 IKEv2 參數適用於 IKEv2 模式。
** 在執行 vpn(setup).sh 時,或在自動模式下設定 IKEv2 時 (sudo ikev2.sh --auto) 將這些定義為環境變數。
*** 可以在互動式設定 IKEv2 期間自訂 (sudo ikev2.sh)。參見上面的選項 1。
**** 使用 VPN_CLIENT_VALIDITY 定義客戶端憑證的有效期限(單位:月)。它必須是 1 到 120 之間的整數。

除了這些參數,進階使用者還可以在安裝時自訂 VPN 子網(簡體中文)。

下一步

其他語言版本: English, 简体中文, 繁體中文, 日本語, Русский

設定你的電腦或其他裝置使用 VPN。請參見以下連結(簡體中文):

設定 IKEv2 VPN 客戶端(推薦)

設定 IPsec/L2TP VPN 客戶端

設定 IPsec/XAuth ("Cisco IPsec") VPN 客戶端

閱讀 📖 VPN book 以存取額外內容

開始使用自己的專屬 VPN! ✨🎉🚀✨

重要提示

Windows 使用者 對於 IPsec/L2TP 模式,在首次連線之前需要修改登錄檔,以解決 VPN 伺服器或客戶端與 NAT(例如家用路由器)的相容問題。

同一個 VPN 帳戶可以在你的多個裝置上使用。但由於 IPsec/L2TP 的限制,如果需要連線到同一個 NAT(例如家用路由器)後面的多個裝置,你必須使用 IKEv2IPsec/XAuth 模式。要查看或變更 VPN 使用者帳戶,請參見管理 VPN 使用者

對於有外部防火牆的伺服器(例如 EC2/GCE),請為 VPN 開啟 UDP 連接埠 500 和 4500。阿里雲使用者請參見 #433

在 VPN 已連線時,客戶端設定為使用 Google Public DNS。如果偏好其他的網域解析服務,請參見進階用法

使用核心支援有助於提升 IPsec/L2TP 效能。它在所有支援的系統上可用。Ubuntu 系統需要安裝 linux-modules-extra-$(uname -r) 軟體套件並執行 service xl2tpd restart

這些腳本在變更現有設定檔之前會先建立備份,並使用 .old-日期-時間 作為檔名後綴。

升級 Libreswan

使用以下命令更新你的 VPN 伺服器上的 Libreswan更新日誌 | 通知清單)。

wget https://get.vpnsetup.net/upg -O vpnup.sh && sudo sh vpnup.sh
如果無法下載,請點這裡。

你也可以使用 curl 下載:

curl -fsSL https://get.vpnsetup.net/upg -o vpnup.sh && sudo sh vpnup.sh

或者,你也可以使用這些連結:

https://github.com/hwdsl2/setup-ipsec-vpn/raw/master/extras/vpnupgrade.sh
https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/raw/master/extras/vpnupgrade.sh

如果無法下載,打開 vpnupgrade.sh,然後點擊右側的 Raw 按鈕。按快捷鍵 Ctrl/Cmd+A 全選,Ctrl/Cmd+C 複製,然後貼上到你喜歡的編輯器。

目前支援的 Libreswan 最新版本是 5.4。查看已安裝版本:ipsec --version

註: xl2tpd 可以使用系統的套件管理器進行更新,例如 Ubuntu/Debian 上的 apt-get

管理 VPN 使用者

請參見管理 VPN 使用者(簡體中文)。

進階用法

請參見進階用法(簡體中文)。

移除 VPN

要移除 IPsec VPN,執行輔助腳本

Caution

此輔助腳本將從你的伺服器中刪除 IPsec VPN。所有 VPN 設定將被永久刪除,並且 Libreswan 和 xl2tpd 將被移除。此操作無法復原

wget https://get.vpnsetup.net/unst -O unst.sh && sudo bash unst.sh
如果無法下載,請點這裡。

你也可以使用 curl 下載:

curl -fsSL https://get.vpnsetup.net/unst -o unst.sh && sudo bash unst.sh

或者,你也可以使用這些連結:

https://github.com/hwdsl2/setup-ipsec-vpn/raw/master/extras/vpnuninstall.sh
https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/raw/master/extras/vpnuninstall.sh

更多資訊請參見移除 VPN

問題與回饋

授權條款

版權所有 (C) 2014-2026 Lin Song View my profile on LinkedIn
基於 Thomas Sarlandie 的工作(版權所有 2012)

Creative Commons License
此專案採用 Creative Commons 姓名標示-相同方式分享 3.0 授權條款。
必須署名:請在任何衍生作品中包含我的名字,並且讓我知道你是如何改進它的!