站内搜索

搜索

06-02 13:26
05-31 17:11

IPsec VPN 服务器自动设置脚本

494

主题

45

点数

1224

积分

管理员

积分
1224

柴到了三倍冰淇淋无人之境【一阶】立华奏小樱(小丑装)⑨的冰沙

发表于 2025-3-13 03:01:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x

项目地址: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 公共 DNS 8.8.8.8 8.8.4.4 本项目中的默认设置
Cloudflare 1.1.1.1 1.0.0.1 另请参阅:适用于家庭的 Cloudflare
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 服务器,参见高级用法

注: 如果服务器上已经配置了 IKEv2,则以上变量对 IKEv2 模式无效。在这种情况下,如需自定义 IKEv2 选项(例如 DNS 服务器),你可以首先 移除 IKEv2,然后运行 sudo ikev2.sh 重新配置。

自定义 IKEv2 选项

在安装 VPN 时,高级用户可以自定义 IKEv2 选项。这是可选的。

选项 1: 在安装 VPN 时跳过 IKEv2,然后使用自定义选项配置 IKEv2。 在安装 VPN 时,你可以跳过 IKEv2,仅安装 IPsec/L2TP 和 IPsec/XAuth ("Cisco IPsec") 模式: ```shell sudo VPN_SKIP_IKEV2=yes sh vpn.sh ``` (可选)如需为 VPN 客户端指定另外的 DNS 服务器,你可以定义 `VPN_DNS_SRV1` 和 `VPN_DNS_SRV2`(可选)。有关详细信息,参见[使用其他的 DNS 服务器](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/README-zh.md#%E4%BD%BF%E7%94%A8%E5%85%B6%E4%BB%96%E7%9A%84-dns-%E6%9C%8D%E5%8A%A1%E5%99%A8)。 然后运行 IKEv2 辅助脚本以使用自定义选项以交互方式配置 IKEv2: ```shell sudo ikev2.sh ``` 你可以自定义以下选项:VPN 服务器的域名,第一个客户端的名称和证书有效期,VPN 客户端的 DNS 服务器以及是否对客户端配置文件进行密码保护。 **注:** 如果服务器上已经配置了 IKEv2,则 `VPN_SKIP_IKEV2` 变量无效。在这种情况下,如需自定义 IKEv2 选项,你可以首先 [移除 IKEv2](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/ikev2-howto-zh.md#%E7%A7%BB%E9%99%A4-ikev2),然后运行 `sudo ikev2.sh` 重新配置。
选项 2: 使用环境变量自定义 IKEv2 选项。 在安装 VPN 时,你可以指定一个域名作为 IKEv2 服务器地址。这是可选的。该域名必须是一个全称域名(FQDN)。示例如下: ```shell sudo VPN_DNS_NAME='vpn.example.com' sh vpn.sh ``` 类似地,你可以指定第一个 IKEv2 客户端的名称。如果未指定,则使用默认值 `vpnclient`。 ```shell sudo VPN_CLIENT_NAME='your_client_name' sh vpn.sh ``` 在 VPN 已连接时,客户端默认配置为使用 [Google Public DNS](https://developers.google.com/speed/public-dns/)。你可以为所有的 VPN 模式指定另外的 DNS 服务器。示例如下: ```shell sudo VPN_DNS_SRV1=1.1.1.1 VPN_DNS_SRV2=1.0.0.1 sh vpn.sh ``` 默认情况下,导入 IKEv2 客户端配置时不需要密码。你可以选择使用随机密码保护客户端配置文件。 ```shell 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`)。参见上面的选项 2。 使用 `VPN_CLIENT_VALIDITY` 定义客户端证书的有效期(单位:月)。它必须是 1 到 120 之间的整数。 除了这些参数,高级用户还可以在安装时 [自定义 VPN 子网](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/advanced-usage-zh.md#%E8%87%AA%E5%AE%9A%E4%B9%89-vpn-%E5%AD%90%E7%BD%91)。 ## 下一步 配置你的计算机或其它设备使用 VPN。请参见: **[配置 IKEv2 VPN 客户端(推荐)](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/ikev2-howto-zh.md)** **[配置 IPsec/L2TP VPN 客户端](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/clients-zh.md)** **[配置 IPsec/XAuth ("Cisco IPsec") VPN 客户端](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/clients-xauth-zh.md)** 开始使用自己的专属 VPN! ✨🎉🚀✨ ## 重要提示 **Windows 用户** 对于 IPsec/L2TP 模式,在首次连接之前需要 [修改注册表](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/clients-zh.md#windows-%E9%94%99%E8%AF%AF-809),以解决 VPN 服务器或客户端与 NAT(比如家用路由器)的兼容问题。 同一个 VPN 账户可以在你的多个设备上使用。但是由于 IPsec/L2TP 的局限性,如果需要连接在同一个 NAT(比如家用路由器)后面的多个设备,你必须使用 [IKEv2](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/ikev2-howto-zh.md) 或者 [IPsec/XAuth](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/clients-xauth-zh.md) 模式。要查看或更改 VPN 用户账户,请参见 [管理 VPN 用户](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/manage-users-zh.md)。 对于有外部防火墙的服务器(比如 [EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security-groups.html)/[GCE](https://cloud.google.com/vpc/docs/firewalls)),请为 VPN 打开 UDP 端口 500 和 4500。阿里云用户请参见 [#433](https://github.com/hwdsl2/setup-ipsec-vpn/issues/433)。 在 VPN 已连接时,客户端配置为使用 [Google Public DNS](https://developers.google.com/speed/public-dns/)。如果偏好其它的域名解析服务,请参见 [高级用法](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/advanced-usage-zh.md)。 使用内核支持有助于提高 IPsec/L2TP 性能。它在所有 [受支持的系统](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/README-zh.md#%E7%B3%BB%E7%BB%9F%E8%A6%81%E6%B1%82) 上可用。Ubuntu 系统需要安装 `linux-modules-extra-$(uname -r)` 软件包并运行 `service xl2tpd restart`。 这些脚本在更改现有的配置文件之前会先做备份,使用 `.old-日期-时间` 为文件名后缀。 ## 升级Libreswan 使用以下命令更新你的 VPN 服务器上的 [Libreswan](https://libreswan.org/)([更新日志](https://github.com/libreswan/libreswan/blob/main/CHANGES) | [通知列表](https://lists.libreswan.org/mailman/listinfo/swan-announce))。 ```shell 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 用户](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/manage-users-zh.md)。 * [使用辅助脚本管理 VPN 用户](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/manage-users-zh.md#%E4%BD%BF%E7%94%A8%E8%BE%85%E5%8A%A9%E8%84%9A%E6%9C%AC%E7%AE%A1%E7%90%86-vpn-%E7%94%A8%E6%88%B7) * [查看 VPN 用户](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/manage-users-zh.md#%E6%9F%A5%E7%9C%8B-vpn-%E7%94%A8%E6%88%B7) * [查看或更改 IPsec PSK](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/manage-users-zh.md#%E6%9F%A5%E7%9C%8B%E6%88%96%E6%9B%B4%E6%94%B9-ipsec-psk) * [手动管理 VPN 用户](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/manage-users-zh.md#%E6%89%8B%E5%8A%A8%E7%AE%A1%E7%90%86-vpn-%E7%94%A8%E6%88%B7) # 高级用法 ## 选择 VPN 模式 使用此 Docker 映像,IPsec/L2TP 和 IPsec/XAuth(“Cisco IPsec”)模式默认启用。此外,如果在创建 Docker 容器时在命令中指定 `-v ikev2-vpn-data:/etc/ipsec.d`该选项,则会启用 IKEv2 模式。[](https://github.com/hwdsl2/docker-ipsec-vpn-server/blob/master/README.md#start-the-ipsec-vpn-server)`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 `。 ## 指定 VPN 服务器的公共 IP `VPN_PUBLIC_IP`在具有多个公共 IP 地址的 Docker 主机上,高级用户可以使用文件中的变量为 VPN 服务器指定一个公共 IP `env`,然后重新创建 Docker 容器。例如,如果 Docker 主机具有 IP `192.0.2.1`和 `192.0.2.2`,并且您希望 VPN 服务器使用 `192.0.2.2`: ``` VPN_PUBLIC_IP=192.0.2.2 ``` 请注意,如果 Docker 容器中已设置 IKEv2,则此变量对 IKEv2 模式无效。在这种情况下,您可以删除 IKEv2 并使用自定义选项重新设置。请参阅[配置和使用 IKEv2 VPN](https://github.com/hwdsl2/docker-ipsec-vpn-server/blob/master/README.md#configure-and-use-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 地址](https://www.google.com/search?q=my+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_ADDRS`在 `env`文件中声明变量,然后重新创建 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.2`,`user3`并为 IPsec/XAuth(“Cisco IPsec”)模式分配静态 IP `192.168.43.2`。`user4`、 和 的内部 IP `user1`将 `user2`自动 `user5`分配。`user3`IPsec/XAuth 模式的内部 IP 和 IPsec/L2TP 模式的内部 IP `user4`也将自动分配。您可以使用 `*`指定自动分配的 IP,或将这些用户放在列表末尾。 您为 IPsec/L2TP 模式指定的静态 IP 必须在 到 范围内 `192.168.42.2`。`192.168.42.9`您为 IPsec/XAuth(“Cisco IPsec”)模式指定的静态 IP 必须在 到 范围 `192.168.43.2`内 `192.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_POOL`和 `VPN_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](https://github.com/hwdsl2/docker-ipsec-vpn-server/blob/master/docs/advanced-usage.md#bash-shell-inside-container),然后编辑 `/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](https://github.com/hwdsl2/docker-ipsec-vpn-server/blob/master/README.md#configure-and-use-ikev2-vpn)中的“删除 IKEv2” 。 或者,Windows 用户可以通过手动添加路由来启用拆分隧道。有关更多详细信息,请参阅[拆分隧道](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/advanced-usage.md#split-tunneling)。 ## 关于主机网络模式 高级用户可以通过在命令中添加以下内容,以[主机网络模式](https://docs.docker.com/network/host/)运行此映像。此外,如果以非特权模式运行,您可能还需要将其替换为 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 内核。 详细部署方法请参考[此文档](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/bbr.md)。完成后重启Docker容器: ``` docker restart ipsec-vpn-server ``` ## 卸载 VPN 要卸载 IPsec VPN,运行[辅助脚本](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/extras/vpnuninstall.sh): **警告:** 此辅助脚本将从你的服务器中删除 IPsec VPN。所有的 VPN 配置将被**永久删除**,并且 Libreswan 和 xl2tpd 将被移除。此操作**不可撤销**! ```shell wget https://get.vpnsetup.net/unst -O unst.sh && sudo bash unst.sh ``` 更多信息请参见 [卸载 VPN](https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/uninstall-zh.md)。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入社群

加入社群

Pixtech

Powered by Pixtech

© 2025 Pixtech Team.