IPsec VPN 服务器一键安装脚本及客户端使用
使用 Linux 脚本一键快速搭建自己的 IPsec VPN 服务器。支持 IPsec/L2TP, Cisco IPsec 和 IKEv2 协议。
IPsec VPN 可以加密你的网络流量,以防止在通过因特网传送时,你和 VPN 服务器之间的任何人对你的数据的未经授权的访问。在使用不安全的网络时,这是特别有用的,例如在咖啡厅,机场或旅馆房间。
我们将使用 Libreswan 作为 IPsec 服务器,以及 xl2tpd 作为 L2TP 提供者。
快速开始
首先,在你的 Linux 服务器* 上安装 Ubuntu, Debian, CentOS/RHEL, Rocky Linux, AlmaLinux, Amazon Linux 2 或者 Alpine Linux
使用以下命令快速搭建 IPsec VPN 服务器:
- 脚本安装
搭建方式1:
1 | wget https://get.vpnsetup.net -O vpn.sh && sudo sh vpn.sh |
搭建方式2:
你也可以使用 curl 下载再执行(如果上面的连接无法下载的h话):
1 | curl -fsSL https://get.vpnsetup.net -o vpn.sh && sudo sh vpn.sh |
你的 VPN 登录凭证将会被自动随机生成,并在安装完成后显示在屏幕上。
如果想自己提供VPN 登录凭证
1 | wget https://get.vpnsetup.net -O vpn.sh |
* 注:
一个安全的 IPsec PSK 应该至少包含 20 个随机字符。
在安装时用的用户的home目录下可以获取到相关证书文件,如下图所示。

- docker镜像安装
1 | docker run \ |
* 注:
【/root/vpn/ikev2-vpn-data】为宿主的映射路径,以便获取相关的证书文件。
【/etc/ipsec.d】为容器内部的路径。
【./vpn.env】为执行命令的当前目录下的一个文件,
文件内容如下:
1 | # Note: All the variables to this image are optional. |
用户管理
- 查看或更改 IPsec PSK:
IPsec PSK(预共享密钥)保存在文件 /etc/ipsec.secrets。所有的 VPN 用户将共享同一个 IPsec PSK。
查看文件内容
1 | cat /etc/ipsec.secrets |
该文件的格式如下:
1 | %any %any : PSK "你的IPsec预共享密钥" |
- 服务器启停
如果要更换一个新的 PSK,可以编辑此文件。不要在值中使用这些字符:\ “ ‘
更换完成后重启服务:
1 | service ipsec restart |
- 查看 VPN 用户:注: 以下命令的输出为:密码1的加盐哈希值
1
2cat /etc/ppp/chap-secrets #查看vpn用户
cat /etc/ipsec.d/passwd # 这个文件中的密码以加盐哈希值的形式保存。该步骤可以借助比如 openssl 工具来完成:
将你的密码用 ‘单引号’ 括起来
1 | openssl passwd -1 '密码1' |
- 更新用户信息:
1 | wget -nv -O add_vpn_user.sh https://bit.ly/addvpnuser |
或者更新用户:
1 | sudo bash add_vpn_user.sh '要更新的用户名' '新密码' |
- 删除一个 VPN 用户
下载脚本
1 | wget -nv -O del_vpn_user.sh https://bit.ly/delvpnuser# 运行脚本并按提示操作 |
删除用户:
1 | sudo bash del_vpn_user.sh '要删除的用户名' |
配置 IKEv2 VPN 客户端
Windows 7, 8, 10 和 11 屏幕录屏操作详解
- 将生成的 .p12 文件安全地传送到你的计算机。
- 右键单击 ikev2_config_import.cmd 并保存这个辅助脚本到与 .p12 文件放在 相同的文件夹。
- 右键单击保存的脚本,选择 属性。单击对话框下方的 解除锁定,然后单击 确定。
- 右键单击保存的脚本,选择 以管理员身份运行 并按提示操作。
- 要连接到 VPN:单击系统托盘中的无线/网络图标,选择新的 VPN 连接,然后单击 连接。验证一下是否成功连上。
OS X (macOS)
- 首先,将生成的 .mobileconfig 文件安全地传送到你的 Mac,然后双击并按提示操作,以导入为 macOS 配置描述文件。如果你的 Mac 运行 macOS Big Sur 或更新版本,打开系统偏好设置并转到描述文件部分以完成导入。在完成之后,检查并确保 “IKEv2 VPN” 显示在系统偏好设置 -> 描述文件中。
- 连接到 VPN
- 打开系统偏好设置并转到网络部分。
- 选择与 你的 VPN 服务器 IP(或者域名)对应的 VPN 连接。
- 选中 在菜单栏中显示 VPN 状态 复选框。
- 单击 连接。
- (可选功能)启用 VPN On Demand(按需连接) 以在你的 Mac 连接到 Wi-Fi 时自动启动 VPN 连接。要启用它,选中 VPN 连接的 按需连接 复选框,然后单击 应用。你可以自定义按需连接规则,以排除某些 Wi-Fi 网络(例如你的家庭网络)。
iOS (iPhone/iPad)
- 首先,将生成的 .mobileconfig 文件安全地传送到你的 iOS 设备,并且导入为 iOS 配置描述文件。要传送文件,你可以使用:
- AirDrop(隔空投送),或者
- 使用 文件共享 功能上传到设备(任何 App 目录),然后打开 iOS 设备上的 “文件” App,将上传的文件移动到 “On My iPhone” 目录下。然后单击它并到 “设置” App 中导入,或者
- 将文件放在一个你的安全的托管网站上,然后在 Mobile Safari 中下载并导入它们。
- 在完成之后,检查并确保 “IKEv2 VPN” 显示在设置 -> 通用 -> VPN 与设备管理(或者描述文件)中。连接到 VPN:
- 进入设置 -> VPN。选择与 你的 VPN 服务器 IP(或者域名)对应的 VPN 连接。
- 启用 VPN 连接。连接成功后,验证是否连接成功。
- (可选功能)启用 VPN On Demand(按需连接) 以在你的 iOS 设备连接到 Wi-Fi 时自动启动 VPN 连接。要启用它,单击 VPN 连接右边的 “i” 图标,然后启用 按需连接。你可以自定义按需连接规则,以排除某些 Wi-Fi 网络(例如你的家庭网络),或者在 Wi-Fi 和蜂窝网络上都启动 VPN 连接。
- 首先,将生成的 .mobileconfig 文件安全地传送到你的 iOS 设备,并且导入为 iOS 配置描述文件。要传送文件,你可以使用:
Android
- 将生成的 .sswan 文件安全地传送到你的 Android 设备。
- 从 Google Play,F-Droid 或 strongSwan 下载网站下载并安装 strongSwan VPN 客户端。
- 启动 strongSwan VPN 客户端。
- 单击右上角的 “更多选项” 菜单,然后单击 导入VPN配置。
- 选择你从服务器传送过来的 .sswan 文件。
- 要查找 .sswan 文件,单击左上角的抽拉式菜单,然后浏览到你保存文件的目录。
- 在 “导入VPN配置” 屏幕上,单击 从VPN配置导入证书,并按提示操作。
- 在 “选择证书” 屏幕上,选择新的客户端证书并单击 选择。
- 单击 导入。
- 单击新的 VPN 配置文件以开始连接。连接成功后,验证是否连接成功。
Chrome OS (Chromebook)
- 首先,在 VPN 服务器上导出 CA 证书到 ca.cer:
1
sudo certutil -L -d sql:/etc/ipsec.d -n "IKEv2 VPN CA" -a -o ca.cer
- 将生成的 .p12 文件和 ca.cer 文件安全地传送到你的 Chrome OS 设备。
- 安装用户证书和 CA 证书:
- 在 Google Chrome 中打开新标签页。
- 在地址栏中输入 chrome://settings/certificates
- (重要) 单击 导入并绑定 而不是 导入。
- 在对话框中选择你从服务器传送过来的 .p12 文件并选择 打开。
- 如果证书没有密码,单击 确定。否则输入该证书的密码。
- 单击上面的 授权机构 选项卡,然后单击 导入。
- 在对话框中左下角的下拉菜单选择 所有文件。
- 选择你从服务器传送过来的 ca.cer 文件并选择 打开。
- 保持默认选项并单击 确定。
- 添加 VPN 连接:
- 进入设置 -> 网络。
- 单击 添加连接,然后单击 添加内置 VPN。
- 在 服务名称 字段中输入任意内容。
- 在 提供商类型 下拉菜单选择 IPsec (IKEv2)。
- 在 服务器主机名 字段中输入 你的 VPN 服务器 IP(或者域名)。
- 在 身份验证类型 下拉菜单选择 用户证书。
- 在 服务器 CA 证书 下拉菜单选择 IKEv2 VPN CA [IKEv2 VPN CA]。
- 在 用户证书 下拉菜单选择 IKEv2 VPN CA [客户端名称]。
- 保持其他字段空白。
- 启用 保存身份信息和密码。
- 单击 连接。连接成功后,网络状态图标上会出现 VPN 指示。
- (可选功能)你可以选择启用 Chrome OS 上的 “始终开启的 VPN” 功能。要管理该设置,进入设置 -> 网络,然后单击 VPN。
- 首先,在 VPN 服务器上导出 CA 证书到 ca.cer:
Linux
- 在配置 Linux 客户端之前,你必须更改 VPN 服务器上的以下设置:编辑服务器上的 /etc/ipsec.d/ikev2.conf。在 conn ikev2-cp 小节的末尾添加 authby=rsa-sha1,开头必须空两格。保存文件并运行 service ipsec restart。
- 要配置你的 Linux 计算机以作为客户端连接到 IKEv2,首先安装 NetworkManager 的 strongSwan 插件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14# Ubuntu and Debian
sudo apt-get update
sudo apt-get install network-manager-strongswan
# Arch Linux
sudo pacman -Syu # 升级所有软件包
sudo pacman -S networkmanager-strongswan
# Fedora
sudo yum install NetworkManager-strongswan-gnome
# CentOS
sudo yum install epel-release
sudo yum --enablerepo=epel install NetworkManager-strongswan-gnome - 下一步,将生成的 .p12 文件安全地从 VPN 服务器传送到你的 Linux 计算机。然后提取 CA 证书,客户端证书和私钥。将下面示例中的 vpnclient.p12 换成你的 .p12 文件名。
1
2
3
4
5
6
7
8
9
10
11
12
13
14# 示例:提取 CA 证书,客户端证书和私钥。在完成后可以删除 .p12 文件。
# 注:你可能需要输入 import password,它可以在 IKEv2 辅助脚本的输出中找到。
# 如果在脚本的输出中没有 import password,请按回车键继续。
# 注:如果使用 OpenSSL 3.x (运行 "openssl version" 进行检查),
# 请将 "-legacy" 附加到下面的 3 个命令。
openssl pkcs12 -in vpnclient.p12 -cacerts -nokeys -out ca.cer
openssl pkcs12 -in vpnclient.p12 -clcerts -nokeys -out client.cer
openssl pkcs12 -in vpnclient.p12 -nocerts -nodes -out client.key
rm vpnclient.p12
# (重要)保护证书和私钥文件
# 注:这一步是可选的,但强烈推荐。
sudo chown root.root ca.cer client.cer client.key
sudo chmod 600 ca.cer client.cer client.key - 然后你可以创建并启用 VPN 连接:
- 进入 Settings -> Network -> VPN。单击 + 按钮。
- 选择 IPsec/IKEv2 (strongswan)。
- 在 Name 字段中输入任意内容。
- 在 Gateway (Server) 部分的 Address 字段中输入 你的 VPN 服务器 IP(或者域名)。
- 为 Certificate 字段选择 ca.cer 文件。
- 在 Client 部分的 Authentication 下拉菜单选择 Certificate(/private key)。
- 在 Certificate 下拉菜单(如果存在)选择 Certificate/private key。
- 为 Certificate (file) 字段选择 client.cer 文件。
- 为 Private key 字段选择 client.key 文件。
- 在 Options 部分,选中 Request an inner IP address 复选框。
- 在 Cipher proposals (Algorithms) 部分,选中 Enable custom proposals 复选框。
- 保持 IKE 字段空白。
- 在 ESP 字段中输入 aes128gcm16.
- 单击 Add 保存 VPN 连接信息。
- 启用 VPN 连接。连接成功后,
如果存在连不上请查看IKEv2 故障排除
详细的参照github连接说明:https://github.com/hwdsl2/setup-ipsec-vpn