本文最后更新于 2024-08-14,

若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益, 请联系我 删除。

本站只有Telegram群组为唯一交流群组, 点击加入

文章内容有误?申请成为本站文章修订者或作者? 向站长提出申请

项目地址:https://github.com/hwdsl2/setup-ipsec-vpn/tree/master

只需几分钟即可使用 IPsec/L2TP、Cisco IPsec 和 IKEv2 设置您自己的 IPsec VPN 服务器。

IPsec VPN 会加密您的网络流量,这样您和 VPN 服务器之间的任何人都无法窃听您的数据在互联网上传输。这在使用不安全的网络(例如在咖啡店、机场或酒店房间)时尤其有用。

快速开始

首先,准备好您的 Linux 服务器,安装 Ubuntu、Debian 或 CentOS。

使用以下一行命令设置 IPsec VPN 服务器:

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

您的 VPN 登录详细信息将随机生成,并在完成后显示。

可选:在同一服务器上安装WireGuardOpenVPN 。

查看脚本的运行情况(终端录制)

注意:此录制仅用于演示目的。此录制中的 VPN 凭据无效

您也可以使用 curl下载:

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

备选设置 URL:

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 服务器设置,无需用户输入
  • 支持具有强大和快速密码的 IKEv2(例如 AES-GCM)
  • 生成 VPN 配置文件以自动配置 iOS、macOS 和 Android 设备
  • 支持 Windows、macOS、iOS、Android、Chrome OS 和 Linux 作为 VPN 客户端
  • 包括用于管理 VPN 用户和证书的帮助脚本

要求

云服务器、虚拟专用服务器 (VPS) 或专用服务器,安装以下内容:

  • Ubuntu 24.04、22.04 或 20.04
  • Debian 12、11 或 10
  • CentOS 7 或 CentOS Stream 9
  • Rocky Linux 或 AlmaLinux 9/8
  • Oracle Linux 9、8 或 7
  • 亚马逊Linux 2

其他受支持的 Linux 发行版

  • 树莓派操作系统 (Raspbian)
  • 卡利Linux
  • Alpine Linux
  • 红帽企业 Linux(RHEL)
  • 请勿在您的 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
[Replace with your own values: YOUR_IPSEC_PSK, YOUR_USERNAME and YOUR_PASSWORD]
sudo sh vpn.sh

注意:安全的 IPsec PSK 应至少包含 20 个随机字符。

选项 3:将您的 VPN 凭据定义为环境变量。

# All values MUST be placed inside 'single quotes'
# DO NOT use these special characters within values: \ " '
wget https://get.vpnsetup.net -O vpn.sh
sudo VPN_IPSEC_PSK='your_ipsec_pre_shared_key' \
VPN_USER='your_vpn_username' \
VPN_PASSWORD='your_vpn_password' \
sh vpn.sh

Docker容器安装

安装Docker🐳

使用此命令在 Docker 上设置 IPsec VPN 服务器:

docker run \
    --name ipsec-vpn-server \
    --restart=always \
    -v ikev2-vpn-data:/etc/ipsec.d \
    -v /lib/modules:/lib/modules:ro \
    -p 500:500/udp \
    -p 4500:4500/udp \
    -d --privileged \
    -e VPN_USER=8i7P3BSBAVU4CaC4LvoF \  # 固定内容可选
    -e VPN_PASSWORD=8i7P3BSBAVU4CaC4LvoF \  # 固定内容可选
    -e VPN_PUBLIC_IP=你的公网ip \  # 可选
    hwdsl2/ipsec-vpn-server

不指定内容的话 VPN 登录详细信息将随机生成。

自定义 VPN 选项

使用备用 DNS 服务器

默认情况下,当 VPN 处于活动状态时,客户端设置为使用Google 公共 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 公共 DNS8.8.8.88.8.4.4本项目中的默认设置
Cloudflare1.1.1.11.0.0.1另请参阅:适用于家庭的 Cloudflare
Quad99.9.9.9149.112.112.112阻止恶意域名
OpenDNS208.67.222.222208.67.220.220阻止网络钓鱼域名,可配置。
CleanBrowsing185.228.168.9185.228.169.9可用的域过滤器
NextDNS各不相同各不相同广告拦截,提供免费套餐。了解更多
Control D各不相同各不相同广告拦截,可配置。了解更多

如果你需要在安装 VPN 之后更改 DNS 服务器,参见高级用法

注: 如果服务器上已经配置了 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 用户名vpnuserVPN_USER
VPN 密码自动生成VPN_PASSWORD
客户端的 DNS 服务器Google Public DNSVPN_DNS_SRV1, VPN_DNS_SRV2
跳过 IKEv2 安装noVPN_SKIP_IKEV2=yes

这些 IKEv1 参数适用于 IPsec/L2TP 和 IPsec/XAuth ("Cisco IPsec") 模式。

在运行 vpn(setup).sh 时将这些定义为环境变量。

IKEv2 参数默认值自定义(环境变量)自定义(交互式)
服务器地址(DNS域名)-VPN_DNS_NAME
服务器地址(公网IP)自动检测VPN_PUBLIC_IP
第一个客户端的名称vpnclientVPN_CLIENT_NAME
客户端的 DNS 服务器Google Public DNSVPN_DNS_SRV1, VPN_DNS_SRV2
保护客户端配置文件noVPN_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)。参见上面的选项 2。
使用 VPN_CLIENT_VALIDITY 定义客户端证书的有效期(单位:月)。它必须是 1 到 120 之间的整数。

除了这些参数,高级用户还可以在安装时 自定义 VPN 子网

下一步

配置你的计算机或其它设备使用 VPN。请参见:

配置 IKEv2 VPN 客户端(推荐)

配置 IPsec/L2TP VPN 客户端

配置 IPsec/XAuth ("Cisco IPsec") VPN 客户端

开始使用自己的专属 VPN! ✨🎉🚀✨

重要提示

Windows 用户 对于 IPsec/L2TP 模式,在首次连接之前需要 修改注册表,以解决 VPN 服务器或客户端与 NAT(比如家用路由器)的兼容问题。

同一个 VPN 账户可以在你的多个设备上使用。但是由于 IPsec/L2TP 的局限性,如果需要连接在同一个 NAT(比如家用路由器)后面的多个设备,你必须使用 IKEv2 或者 IPsec/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

当前支持的 Libreswan 最新版本是 5.0。查看已安装版本:ipsec --version

注: xl2tpd 可以使用系统的软件包管理器进行更新,例如 Ubuntu/Debian 上的 apt-get

管理 VPN 用户

请参见 管理 VPN 用户

高级用法

选择 VPN 模式

使用此 Docker 映像,IPsec/L2TP 和 IPsec/XAuth(“Cisco IPsec”)模式默认启用。此外,如果在创建 Docker 容器时在命令中指定 -v ikev2-vpn-data:/etc/ipsec.d该选项,则会启用 IKEv2 模式。docker run

高级用户可以通过在文件中设置以下变量来有选择地禁用 VPN 模式 env,然后重新创建 Docker 容器。

禁用 IPsec/L2TP 模式:VPN_DISABLE_IPSEC_L2TP=yes
禁用 IPsec/XAuth(“Cisco IPsec”)模式:VPN_DISABLE_IPSEC_XAUTH=yes
禁用 IPsec/L2TP 和 IPsec/XAuth 模式:VPN_IKEV2_ONLY=yes

访问 Docker 主机上的其他容器

连接到 VPN 后,VPN 客户端通常可以访问同一 Docker 主机上其他容器中运行的服务,而无需进行额外的配置。

例如,如果 IPsec VPN 服务器容器具有 IP 172.17.0.2,并且具有 IP 的 Nginx 容器 172.17.0.3正在同一 Docker 主机上运行,则 VPN 客户端可以使用 IP 172.17.0.3访问 Nginx 容器上的服务。要找出分配给容器的 IP,请运行 docker inspect <container name>

指定 VPN 服务器的公共 IP

VPN_PUBLIC_IP在具有多个公共 IP 地址的 Docker 主机上,高级用户可以使用文件中的变量为 VPN 服务器指定一个公共 IP env,然后重新创建 Docker 容器。例如,如果 Docker 主机具有 IP 192.0.2.1192.0.2.2,并且您希望 VPN 服务器使用 192.0.2.2

VPN_PUBLIC_IP=192.0.2.2

请注意,如果 Docker 容器中已设置 IKEv2,则此变量对 IKEv2 模式无效。在这种情况下,您可以删除 IKEv2 并使用自定义选项重新设置。请参阅配置和使用 IKEv2 VPN

如果您希望 VPN 客户端在 VPN 连接处于活动状态时使用指定的公共 IP 作为其“传出 IP”,并且指定的 IP 不是 Docker 主机上的主 IP(或默认路由),则可能需要进行其他配置。在这种情况下,您可以尝试 SNAT在 Docker 主机上添加 IPTables 规则。要在重启后继续保留,您可以将命令添加到 /etc/rc.local

继续上面的例子,如果 Docker 容器有内部 IP 172.17.0.2(使用 检查 docker inspect ipsec-vpn-server),Docker 的网络接口名称是 docker0(使用 检查 iptables -nvL -t nat),并且你想要的“传出 IP”是 192.0.2.2

iptables -t nat -I POSTROUTING -s 172.17.0.2 ! -o docker0 -j SNAT --to 192.0.2.2

要检查已连接的 VPN 客户端的“传出 IP”,您可以在客户端上打开浏览器并在 Google 上查找 IP 地址

为 VPN 客户端分配静态 IP

使用 IPsec/L2TP 模式连接时,VPN 服务器(Docker 容器)192.168.42.1在 VPN 子网内具有内部 IP 192.168.42.0/24。客户端被分配从 192.168.42.10到 的内部 IP 192.168.42.250。要检查分配给客户端的 IP,请查看 VPN 客户端上的连接状态。

使用 IPsec/XAuth(“Cisco IPsec”)或 IKEv2 模式连接时,VPN 服务器(Docker 容器)在 VPN 子网内没有内部 IP 192.168.43.0/24。客户端被分配了从 192.168.43.10到 的内部 IP 192.168.43.250

高级用户可以选择为 VPN 客户端分配静态 IP。IKEv2 模式不支持此功能。要分配静态 IP,请 VPN_ADDL_IP_ADDRSenv文件中声明变量,然后重新创建 Docker 容器。示例:

VPN_ADDL_USERS=user1 user2 user3 user4 user5
VPN_ADDL_PASSWORDS=pass1 pass2 pass3 pass4 pass5
VPN_ADDL_IP_ADDRS=* * 192.168.42.2 192.168.43.2

在此示例中,我们为 IPsec/L2TP 模式分配静态 IP 192.168.42.2user3并为 IPsec/XAuth(“Cisco IPsec”)模式分配静态 IP 192.168.43.2user4、 和 的内部 IP user1user2自动 user5分配。user3IPsec/XAuth 模式的内部 IP 和 IPsec/L2TP 模式的内部 IP user4也将自动分配。您可以使用 *指定自动分配的 IP,或将这些用户放在列表末尾。

您为 IPsec/L2TP 模式指定的静态 IP 必须在 到 范围内 192.168.42.2192.168.42.9您为 IPsec/XAuth(“Cisco IPsec”)模式指定的静态 IP 必须在 到 范围 192.168.43.2192.168.43.9

如果需要分配更多静态 IP,则必须缩小自动分配 IP 地址池。示例:

VPN_L2TP_POOL=192.168.42.100-192.168.42.250
VPN_XAUTH_POOL=192.168.43.100-192.168.43.250

192.168.42.2这将允许您为 IPsec/L2TP 模式分配从到范围内的静态 IP ,并为IPsec/XAuth(“Cisco IPsec”)模式 192.168.42.99分配从到范围内的静态 IP。192.168.43.2``192.168.43.99

VPN_XAUTH_POOL请注意,如果您在文件中指定 env,并且 IKEv2 已在 Docker 容器中设置,则必须在重新创建 Docker 容器之前手动 /etc/ipsec.d/ikev2.conf在容器内编辑并替换 rightaddresspool=192.168.43.10-192.168.43.250为与相同的值。否则,IKEv2 可能会停止工作。VPN_XAUTH_POOL

**注意:**在您的 env文件中,请勿在值周围放置 ""或,或在 周围添加空格。请勿在值内使用这些特殊字符:。''``=``\ " '

自定义 VPN 子网

默认情况下,IPsec/L2TP VPN 客户端将使用内部 VPN 子网 192.168.42.0/24,而 IPsec/XAuth(“Cisco IPsec”)和 IKEv2 VPN 客户端将使用内部 VPN 子网 192.168.43.0/24。有关更多详细信息,请阅读上一节。

对于大多数用例,没有必要也不建议自定义这些子网。但是,如果您的用例需要,您可以在文件中指定自定义子网 env,然后必须重新创建 Docker 容器。

# Example: Specify custom VPN subnet for IPsec/L2TP mode
# Note: All three variables must be specified.
VPN_L2TP_NET=10.1.0.0/16
VPN_L2TP_LOCAL=10.1.0.1
VPN_L2TP_POOL=10.1.0.10-10.1.254.254
# Example: Specify custom VPN subnet for IPsec/XAuth and IKEv2 modes
# Note: Both variables must be specified.
VPN_XAUTH_NET=10.2.0.0/16
VPN_XAUTH_POOL=10.2.0.10-10.2.254.254

**注意:**在您的 env文件中,请勿在值周围放置 ""'',或在周围添加空格 =

在上面的例子中,VPN_L2TP_LOCAL是 IPsec/L2TP 模式下 VPN 服务器的内部 IP。VPN_L2TP_POOLVPN_XAUTH_POOL是 VPN 客户端的自动分配 IP 地址池。

VPN_XAUTH_POOL请注意,如果您在文件中指定 env,并且 IKEv2 已在 Docker 容器中设置,则必须在重新创建 Docker 容器之前手动 /etc/ipsec.d/ikev2.conf在容器内编辑并替换 rightaddresspool=192.168.43.10-192.168.43.250为与相同的值。否则,IKEv2 可能会停止工作。VPN_XAUTH_POOL

分割隧道

使用拆分隧道,VPN 客户端将仅通过 VPN 隧道发送特定目标子网的流量。其他流量将不会通过 VPN 隧道。这样,您就可以通过 VPN 安全地访问网络,而无需通过 VPN 路由所有客户端的流量。拆分隧道有一些限制,并非所有 VPN 客户端都支持。

高级用户可以选择为 IKEv2 模式启用拆分隧道。将变量添加 VPN_SPLIT_IKEV2到您的 env文件,然后重新创建 Docker 容器。例如,如果目标子网是 10.123.123.0/24

VPN_SPLIT_IKEV2=10.123.123.0/24

请注意,如果 Docker 容器中已设置 IKEv2,则此变量无效。在这种情况下,您有两个选择:

**选项 1:**首先在容器内启动 bash shell,然后编辑 /etc/ipsec.d/ikev2.conf并替换 leftsubnet=0.0.0.0/0为所需的子网。完成后,exit容器并运行 docker restart ipsec-vpn-server

选项 2:删除 Docker 容器和 ikev2-vpn-data卷,然后重新创建 Docker 容器。所有 VPN 配置将被永久删除。请参阅配置和使用 IKEv2 VPN中的“删除 IKEv2” 。

或者,Windows 用户可以通过手动添加路由来启用拆分隧道。有关更多详细信息,请参阅拆分隧道

关于主机网络模式

高级用户可以通过在命令中添加以下内容,以主机网络模式运行此映像。此外,如果以非特权模式运行,您可能还需要将其替换为 Docker 主机的网络接口名称。--network=hostdocker run eth0

除非您的用例需要,否则不建议对此映像使用主机网络模式。在此模式下,容器的网络堆栈与 Docker 主机不隔离,VPN 客户端在使用 IPsec/L2TP 模式连接后,可能能够使用其内部 VPN IP 访问 Docker 主机上的端口或服务。请注意,当您不再使用此映像时,您需要通过run.sh 192.168.42.1手动清除对 IPTables 规则和 sysctl 设置的更改,或者重新启动服务器。

由于使用了 nftables,某些 Docker 主机操作系统(例如 Debian 10)无法在主机网络模式下运行此映像。

启用 Libreswan 日志

为了保持 Docker 镜像较小,默认情况下不启用 Libreswan (IPsec) 日志。如果您需要启用它以进行故障排除,请首先在正在运行的容器中启动 Bash 会话:

docker exec -it ipsec-vpn-server env TERM=xterm bash -l

然后运行以下命令:

# For Alpine-based image
apk add --no-cache rsyslog
rsyslogd
rc-service ipsec stop; rc-service -D ipsec start >/dev/null 2>&1
sed -i '\|pluto\.pid|a rm -f /var/run/rsyslogd.pid; rsyslogd' /opt/src/run.sh
exit
# For Debian-based image
apt-get update && apt-get -y install rsyslog
rsyslogd
service ipsec restart
sed -i '\|pluto\.pid|a rm -f /var/run/rsyslogd.pid; rsyslogd' /opt/src/run.sh
exit

注意:rsyslogd: imklog: cannot open kernel log如果您在没有特权模式的情况下使用此 Docker 镜像,则出现错误是正常的。

完成后,你可以使用以下命令检查 Libreswan 日志:

docker exec -it ipsec-vpn-server grep pluto /var/log/auth.log

要检查 xl2tpd 日志,请运行 docker logs ipsec-vpn-server

检查服务器状态

检查 IPsec VPN 服务器的状态:

docker exec -it ipsec-vpn-server ipsec status

显示当前建立的VPN连接:

docker exec -it ipsec-vpn-server ipsec trafficstatus

从源代码构建

高级用户可以从GitHub下载并编译源代码:

git clone https://github.com/hwdsl2/docker-ipsec-vpn-server
cd docker-ipsec-vpn-server
# To build Alpine-based image
docker build -t hwdsl2/ipsec-vpn-server .
# To build Debian-based image
docker build -f Dockerfile.debian -t hwdsl2/ipsec-vpn-server:debian .

或者如果不修改源代码的话使用这个:

# To build Alpine-based image
docker build -t hwdsl2/ipsec-vpn-server github.com/hwdsl2/docker-ipsec-vpn-server
# To build Debian-based image
docker build -f Dockerfile.debian -t hwdsl2/ipsec-vpn-server:debian \
  github.com/hwdsl2/docker-ipsec-vpn-server

容器内的 Bash shell

要在正在运行的容器中启动 Bash 会话:

docker exec -it ipsec-vpn-server env TERM=xterm bash -l

(可选)安装 nano编辑器:

# For Alpine-based image
apk add --no-cache nano
# For Debian-based image
apt-get update && apt-get -y install nano

然后在容器内运行命令。完成后,退出容器并重新启动(如果需要):

exit
docker restart ipsec-vpn-server

绑定挂载环境文件

作为该选项的替代 --env-file,高级用户可以绑定挂载 env文件。此方法的优点是,更新文件后 env,您可以重新启动 Docker 容器以使其生效,而不是重新创建它。要使用此方法,您必须首先编辑文件 env并使用单引号 ''将所有变量的值括起来。然后(重新)创建 Docker 容器(将第一个替换 vpn.env为您自己的 env文件):

docker run \
    --name ipsec-vpn-server \
    --restart=always \
    -v "$(pwd)/vpn.env:/opt/src/env/vpn.env:ro" \
    -v ikev2-vpn-data:/etc/ipsec.d \
    -v /lib/modules:/lib/modules:ro \
    -p 500:500/udp \
    -p 4500:4500/udp \
    -d --privileged \
    hwdsl2/ipsec-vpn-server

部署Google BBR拥塞控制

设置 VPN 服务器后,可以通过在 Docker 主机上部署 Google BBR 拥塞控制算法来提高性能。

这通常是通过修改配置文件来完成的 /etc/sysctl.conf。但是,某些 Linux 发行版可能还需要更新 Linux 内核。

详细部署方法请参考此文档。完成后重启Docker容器:

docker restart ipsec-vpn-server

卸载 VPN

要卸载 IPsec VPN,运行辅助脚本

警告: 此辅助脚本将从你的服务器中删除 IPsec VPN。所有的 VPN 配置将被永久删除,并且 Libreswan 和 xl2tpd 将被移除。此操作不可撤销

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

更多信息请参见 卸载 VPN