Docker 上的 IPsec VPN 服务器
使用这个 Docker 镜像快速搭建 IPsec VPN 服务器。支持 IPsec/L2TP,Cisco IPsec 和 IKEv2 协议。
本镜像以 Alpine 3.15 或 Debian 11 为基础,并使用 Libreswan (IPsec VPN 软件) 和 xl2tpd (L2TP 服务进程)。
IPsec VPN 可以加密你的网络流量,以防止在通过因特网传送时,你和 VPN 服务器之间的任何人对你的数据的未经授权的访问。在使用不安全的网络时,这是特别有用的,例如在咖啡厅,机场或旅馆房间。
首先安装docker
快速开始
使用以下命令在 Docker 上快速搭建 IPsec VPN 服务器:
要了解更多有关如何使用本镜像的信息,请继续阅读以下部分。
功能特性
支持具有强大和快速加密算法(例如 AES-GCM)的 IKEv2 模式
生成 VPN 配置文件以自动配置 iOS, macOS 和 Android 设备
支持 Windows, macOS, iOS, Android 和 Linux 作为 VPN 客户端
包括辅助脚本以管理 IKEv2 用户和证书
如何使用本镜像
环境变量
注: 所有这些变量对于本镜像都是可选的,也就是说无需定义它们就可以搭建 IPsec VPN 服务器。你可以运行 touch vpn.env
创建一个空的 env
文件,然后跳到下一节。
这个 Docker 镜像使用以下几个变量,可以在一个 env
文件中定义(参见示例):
这将创建一个用于 VPN 登录的用户账户,它可以在你的多个设备上使用*。 IPsec PSK (预共享密钥) 由 VPN_IPSEC_PSK
环境变量指定。 VPN 用户名和密码分别在 VPN_USER
和 VPN_PASSWORD
中定义。
支持创建额外的 VPN 用户,如果需要,可以像下面这样在你的 env
文件中定义。用户名和密码必须分别使用空格进行分隔,并且用户名不能有重复。所有的 VPN 用户将共享同一个 IPsec PSK。
注: 在你的 env
文件中,不要为变量值添加 ""
或者 ''
,或在 =
两边添加空格。不要在值中使用这些字符: \ " '
。一个安全的 IPsec PSK 应该至少包含 20 个随机字符。
运行 IPsec VPN 服务器
使用本镜像创建一个新的 Docker 容器 (将 ./vpn.env
替换为你自己的 env
文件):
在该命令中,我们使用 docker run
的 -v
选项来创建一个名为 ikev2-vpn-data
的新 Docker 卷,并且将它挂载到容器内的 /etc/ipsec.d
目录下。IKEv2 的相关数据(比如证书和密钥)在该卷中保存,之后当你需要重新创建 Docker 容器的时候,只需指定同一个卷。
推荐在使用本镜像时启用 IKEv2。如果你不想启用 IKEv2 而仅使用 IPsec/L2TP 和 IPsec/XAuth ("Cisco IPsec") 模式连接到 VPN,可以去掉上面 docker run
命令中的第一个 -v
选项。
获取 VPN 登录信息
如果你在上述 docker run
命令中没有指定 env
文件,VPN_USER
会默认为 vpnuser
,并且 VPN_IPSEC_PSK
和 VPN_PASSWORD
会被自动随机生成。要获取这些登录信息,可以查看容器的日志:
在命令输出中查找这些行:
在命令输出中也会包含 IKEv2 配置信息(如果启用)。要开始使用 IKEv2,请参见 配置并使用 IKEv2 VPN。
(可选步骤)备份自动生成的 VPN 登录信息(如果有)到当前目录:
更新 Docker 镜像
要更新 Docker 镜像和容器,首先 下载 最新版本:
如果 Docker 镜像已经是最新的,你会看到提示:
否则将会下载最新版本。要更新你的 Docker 容器,首先在纸上记下你所有的 VPN 登录信息。然后删除 Docker 容器: docker rm -f ipsec-vpn-server
。最后按照 如何使用本镜像 的说明来重新创建它。
配置并使用 IKEv2 VPN
IKEv2 模式是比 IPsec/L2TP 和 IPsec/XAuth ("Cisco IPsec") 更佳的连接模式,该模式无需 IPsec PSK, 用户名或密码。更多信息请看这里。
首先,查看容器的日志以获取 IKEv2 配置信息:
注: 如果你无法找到 IKEv2 配置信息,IKEv2 可能没有在容器中启用。尝试按照 更新 Docker 镜像 一节的说明更新 Docker 镜像和容器。
在 IKEv2 安装过程中会创建一个 IKEv2 客户端(默认名称为 vpnclient
),并且导出它的配置到 容器内 的 /etc/ipsec.d
目录下。你可以将配置文件复制到 Docker 主机:
最后更新于