Docker上的IPsec-VPN服务器

AI摘要:Docker上的IPsec-VPN服务器是一款易于搭建的VPN服务,支持多种协议和设备,包括Windows、安卓、iOS等,无需安装第三方软件。通过简单命令即可快速搭建,并支持自动配置iOS、macOS和Android设备。

Powered by AISummary.

    这个项目是我用过的最好用的vpn服务,你可以直接搭建在openwrt软路由上,而且windows、安卓、ios三端都是原生支持的,不许要安装第三方软件,非常nice。

    它支持 IPsec/L2TP,Cisco IPsec 和 IKEv2 协议。

    功能特性

    支持具有强大和快速加密算法(例如 AES-GCM)的 IKEv2 模式

    生成 VPN 配置文件以自动配置 iOS, macOS 和 Android 设备

    支持 Windows, macOS, iOS, Android, Chrome OS 和 Linux 客户端

一、快速开始

    使用以下命令在 Docker 上快速搭建 IPsec VPN 服务器:

sudo docker run \
   --name ipsec-vpn-server \
   --restart=always \
   -v /home/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

    推荐在使用本镜像时启用 IKEv2。如果你不想启用 IKEv2 而仅使用 IPsec/L2TP 和 IPsec/XAuth ("Cisco IPsec") 模式连接到 VPN,可以去掉上面 docker run 命令中的第二个 -v 选项。

二、后续使用

1.修改配置文件

    你的 VPN 登录凭证将会被自动随机生成。

    执行命令: docker logs ipsec-vpn-server 来查看配置文件生成的内容

    你会看到如下内容:

Connect to your new VPN with these details:

Server IP: 你的VPN服务器IP
IPsec PSK: 你的IPsec预共享密钥
Username: 你的VPN用户名
Password: 你的VPN密码
在命令输出中也会包含 IKEv2 配置信息(如果已启用)。

    你可以通过编辑/home/ikev2-vpn-data目录内的“vpn-gen.env”文件来修改这些变量

    比如修改成这样:

VPN_DNS_NAME='你的公网ip或域名' #等号右侧自行修改
VPN_IPSEC_PSK='密码'
VPN_USER='用户名'
VPN_PASSWORD='密码'

2.配置你的设备,以使用 IKEv2 VPN

     首先 开放500和4500端口,配置到这里,已经可以用IPsec/L2TP等协议进行连接了,但我还是建议配置带证书的IKEv2协议进行连接,这样更稳定。

     第二步 ,更改 IKEv2 服务器地址,这里利用官方提供的脚本,非常方便。

    进入容器内,执行命令 wget https://get.vpnsetup.net/ikev2addr -O ikev2addr.sh sudo bash ikev2addr.sh 根据提示修改地址为自己的公网ip或者域名就可以了,其他都不需要动。

     第三步 就是配置客户端了。

windows

    Windows 8, 10 和 11 用户可以自动导入 IKEv2 配置:

    将生成的 .p12 文件安全地传送到你的客户端计算机。

    右键单击 ikev2_config_import.cmd 并保存这个辅助脚本到与 .p12 文件 相同的文件夹。

    右键单击保存的脚本,选择 属性。单击对话框下方的 解除锁定,然后单击 确定。

    右键单击保存的脚本,选择 以管理员身份运行 并按提示操作。

    要连接到 VPN:单击系统托盘中的无线/网络图标,选择新的 VPN 连接,然后单击 连接。

Linux

    在配置 Linux 客户端之前,你必须更改 VPN 服务器上的以下设置:编辑服务器上的 /etc/ipsec.d/ikev2.conf。在 conn ikev2-cp 小节的末尾添加 authby=rsa-sha1,开头必须空两格。保存文件并运行 service ipsec restart。(以上是官方的教程,但是改了这个配置后,安卓和windows客户端就连不上了,所以我没有改这个配置,linux客户端一样可以连接)

    要配置你的 Linux 计算机以作为客户端连接到 IKEv2,首先安装 NetworkManager 的 strongSwan 插件:

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 文件名。

  • 示例:提取 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 连接。

OS X (macOS)

    首先,将生成的 .mobileconfig 文件安全地传送到你的 Mac,然后双击并按提示操作,以导入为 macOS 配置描述文件。如果你的 Mac 运行 macOS Big Sur 或更新版本,打开系统偏好设置并转到描述文件部分以完成导入。对于 macOS Ventura 和更新版本,打开系统设置并搜索描述文件。在完成之后,检查并确保 "IKEv2 VPN" 显示在系统偏好设置 -> 描述文件中。

要连接到 VPN:

  • 打开系统偏好设置并转到网络部分。
  • 选择与 你的 VPN 服务器 IP(或者域名)对应的 VPN 连接。
  • 选中 在菜单栏中显示 VPN 状态 复选框。对于 macOS Ventura 和更新版本,你可以到系统设置 -> 控制中心 -> 仅菜单栏部分配置该选项。
  • 单击 连接,或启用 VPN 连接。

    (可选功能)启用 VPN On Demand(按需连接) 以在你的 Mac 连接到 Wi-Fi 时自动启动 VPN 连接。要启用它,选中 VPN 连接的 按需连接 复选框,然后单击 应用。对于 macOS Ventura 和更新版本,首先单击 VPN 连接右边的 "i" 图标,然后配置该选项。

    你可以自定义按需连接规则,以排除某些 Wi-Fi 网络(例如你的家庭网络)。有关更多详细信息,请参阅 📖 Book: 搭建自己的 IPsec VPN, OpenVPN 和 WireGuard 服务器 中的 "指南:为 macOS 和 iOS 自定义 IKEv2 VPN On Demand 规则" 一章。

  • 注: macOS 14 (Sonoma) 存在一个小问题,可能会导致 IKEv2 VPN 每 24-48 分钟断开并重新连接一次。其他 macOS 版本不受影响。

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 网络(例如你的家庭网络)。

Android

    Android 11+ 用户也可以使用系统自带的 IKEv2 客户端连接。

    将生成的 .p12 文件安全地传送到你的 Android 设备。

    启动 设置 App。

    进入 安全 -> 高级 -> 加密与凭据。

    单击 安装证书。

    单击 VPN 和应用用户证书。

    选择你从服务器传送过来的 .p12 文件。

    注: 要查找 .p12 文件,单击左上角的抽拉式菜单,然后浏览到你保存文件的目录。

    为证书输入名称,然后单击 确定。

    进入 设置 -> 网络和互联网 -> VPN,然后单击 "+" 按钮。

    为 VPN 配置文件输入名称。

    在 类型 下拉菜单选择 IKEv2/IPSec RSA。

    在 服务器地址 字段中输入 你的 VPN 服务器 IP (或者域名)。

    注: 它必须与 IKEv2 辅助脚本输出中的服务器地址 完全一致。

    在 IPSec 标识符 字段中输入任意内容(例如 empty)。

    注: 该字段不应该为必填。它是 Android 的一个 bug。

    在 IPSec 用户证书 下拉菜单选择你导入的证书。

    在 IPSec CA 证书 下拉菜单选择你导入的证书。

    在 IPSec 服务器证书 下拉菜单选择 (来自服务器)。

    单击 保存。然后单击新的 VPN 连接并单击 连接。

     其他客户端配置就不一一列举了,具体请参考 官方文档

打赏
评论区
头像
文章目录

本站已运行: