---
title: VPN与IPv6代理节点
description: 将Linux主机配置为VPN节点（cmp-agent）和IPv6代理节点：涵盖操作系统、IP地址与IPv6前缀、端口、sysctl配置、安装以及心跳机制。
url: https://nexcmp.com/zh-cn/docs/infrastructure/vpn-proxy-nodes/
applies_to: NexCMP 1.6.1
updated: 2026-11-02
---

# VPN与IPv6代理节点 {#vpn-and-ipv6-proxy-nodes}

> **管理后台位置：**Infrastructure › VPN & Proxy nodes › Agents & external nodes（`/agents`）、VPN IP pools（`/vpn/pool`）、IPv6 Proxy nodes（`/vpn/proxy6/nodes`）。服务本身位于Services › VPN和Services › IPv6 Proxy。两个模块均在System › Admin › License & updates中启用。

## 功能说明 {#what-it-does}

NexCMP支持售卖通过**您自有的IP地址**并在您运营的服务器上出口的VPN与代理访问服务。共有两种节点类型：

- **VPN节点。**由运行在Linux主机上的轻量Go程序`cmp-agent`提供支持。它会自动发现主机上的公网IPv4地址，在售出的每个地址上开启SOCKS5、HTTP和UDP监听，并通过客户连接所用的**同一IP**发出流量（同IP出口）。它每隔数秒向控制面板报告一次状态。
- **IPv6代理节点。**一种代理服务，可从路由至该主机的IPv6前缀中为客户分配地址。控制面板会通过SSH自动为您完成安装。

可用于在部署了服务器的国家或地区转售纯净IP地址。

## 前提条件 {#requirements}

### VPN节点 {#vpn-node}

| 项目 | 要求 |
|---|---|
| 操作系统 | 配备systemd且内核版本为4.15或更高（支持IPv6 free-bind）的Linux发行版。随附的Agent二进制文件仅支持**x86_64**（amd64）。 |
| 权限 | root权限（用于安装）。该服务仅保留`CAP_NET_ADMIN`、`CAP_NET_RAW`和`CAP_DAC_READ_SEARCH`。 |
| 工具 | `curl`或`wget`，以及`sha256sum`（安装程序若未检查该文件将拒绝继续）。 |
| 公网地址 | 分配在主机接口上的公网IPv4地址（每个对应一个`/32`），**或**路由至主机的前缀并作为额外子网添加（IPv4 /16至/32，IPv6 /48至/128）。私有网络、CGNAT和文档保留地址段会被忽略。 |
| 网络（入站） | 客户通过**端口65001-65535**连接到每个售出的公网IP（TCP用于SOCKS5和HTTP，UDP用于UDP associate）。每个端点使用一组三个连续端口。 |
| 网络（出站） | 到控制面板域名的HTTPS（443）。Agent还会通过`ip-api.com`（HTTP）和`ipinfo.io`（HTTPS）查询自身所在国家/地区，超时限制为3.5秒。 |
| 邮件 | 始终阻止对端口25的出站连接；没有用于开放该端口的设置。 |
| Docker、VPN和虚拟接口 | 名称为`docker*`、`veth*`、`br-*`、`cni*`、`flannel*`、`virbr*`、`cali*`、`tun*`、`tap*`、`wg*`和`tailscale*`的接口不会提供地址。 |
| 依赖项 | 模块**VPN**、区域（根据主机所在国家/地区自动创建）以及可通过HTTPS访问的NexCMP控制面板。 |

### IPv6代理节点 {#ipv6-proxy-node}

| 项目 | 要求 |
|---|---|
| 操作系统 | 运行于**x86_64**且带有systemd的Linux。必须存在命令`systemctl`、`nft`、`ip`、`ss`、`sysctl`和`useradd`；否则安装将中止并提示缺失的命令。 |
| 安装访问权限 | 公网IPv4地址（拒绝私有、回环及CGNAT地址）、SSH端口、具有root或`sudo`权限的账户及其**密码**。密码仅用于安装过程，不会被存储。 |
| 空闲端口 | **80、443以及所有大于60000的端口**必须处于空闲状态。安装程序绝不会停止或更改正在运行的服务；它会报告被占用的端口并中止。 |
| IPv6 | `2000::/3`内介于**/32与/64**之间的公网前缀，供主机用作出站流量源，交付方式为**路由**至主机或配合NDP代理**直连链路**（见下文）。 |
| 网络 | 客户通过端口80（HTTP代理）、端口443（SOCKS5）以及端口60001-65535（每个静态IP对应一个端口）连接到节点的IPv4。该节点没有证书，因此不提供HTTPS代理。流量仅通过IPv6流出，且仅流向具有IPv6地址的目标。节点通过HTTPS从面板拉取配置。 |
| 控制面板服务器上的节点软件 | 节点守护进程及其网络脚本随NexCMP发布包一同提供。面板会在安装期间将它们从安装文件夹（`/opt/nexcmp/releases/<version>/bin`，自定义构建版本上为`/opt/nexcmp/bin`）复制到每个节点。面板服务器还需要`sshpass`和SSH客户端；安装程序会添加`sshpass`，而在1.4.2之前安装的服务器上，您可以使用`sudo apt-get install -y sshpass`进行添加。 |
| 依赖项 | **IPv6 Proxy**模块，以及供节点回连的面板URL（**IPv6 Proxy › Settings › Panel URL for nodes**，默认值为`https://<your license domain>`）。 |


## 准备基础设施 {#prepare-the-infrastructure}

### VPN节点 {#vpn-node-1}

1. **配置主机**，安装受支持的Linux并配置计划出售的公网IPv4地址（可配置在网络接口上或路由至该主机）。
2. **如果您售卖路由网段**，请计划在添加节点时将其作为**Extra subnet**输入。Agent会安装路由`local <block> dev lo`以便主机接收该网段内所有地址的流量，然后上报发现的地址。Agent还会读取主机的真实路由表，绝不会售卖或捕获**网关**地址：如果该网段包含主机某条路由的下一跳（例如直连网段的路由器地址），Agent将仅针对其周围的网段部分安装`local`路由，向面板上报网关，面板则会将该地址排除在地址池及所有分配之外。当额外子网发生更改或Agent停止运行时，它会移除所安装的路由。
3. **放行防火墙。**在公网地址上放行入站TCP和UDP **65001-65535**，并放行到控制面板的出站HTTPS流量。
4. **可选：单IP字节计数器。**Conntrack统计（`net.netfilter.nf_conntrack_acct = 1`）允许监控角色统计每个IP的字节数。控制面板可通过向Agent发送`acct`命令来启用该功能，该操作还会写入`/etc/sysctl.d/99-cmp-agent.conf`。VPN角色本身不需要此项。
5. **从节点检查控制面板连接：**

   ```bash
   curl -fsS -o /dev/null -w '%{http_code}\n' https://cloud.example.com/install.sh
   ```

### IPv6代理节点 {#ipv6-proxy-node-1}

IPv6前缀通过以下两种方式之一到达节点。安装程序会使用真实的出站连接测试这两种方式，并保留有效的方式。

| 类型 | 含义 | 配置内容 |
|---|---|---|
| **路由** | 上游将一个前缀（例如 /48 或 /56）**路由到节点自身的地址**。出站数据包可以使用该前缀中的任意地址作为源地址，且回复数据包会返回到该节点。 | 向服务商申请一个下一跳为该节点的路由前缀。节点上无需额外配置：代理服务使用透明套接字、固定的策略路由表以及`nft`。 |
| **On-link** | 该 /64 前缀与节点处于同一局域网。仅当节点对每个在用地址响应邻居发现（**NDP proxy**）时，回复方可正常工作。 | 该服务仅在该接口上设置`net.ipv6.conf.<if>.accept_ra=2`、`forwarding=1`和`proxy_ndp=1`，记录旧值并在停止时予以还原，同时阻止转发池内地址，以确保节点不会成为该池的路由器。 |

检测机制：节点在 6 秒内尝试从候选前缀的随机地址向一个公共 IPv6 地址（端口 443）建立 TCP 连接。候选对象包括接口上前缀为 /64 或更短的全局地址，以及 /16 到 /64 之间类型为`local`、`unreachable`或`blackhole`的路由。若较 /64 更短的前缀内某个随机 /64 可用，则该前缀被认定为 **routed**。

::: warning 切勿重复使用同一前缀
前缀不得与其他节点的前缀重叠，且范围不得大于控制面板自身 IPv6 池中已有的前缀。允许使用控制面板池**内部**的 /64 前缀。重叠会在安装结果中报告为“assign range … (node …)”，并且该前缀会被跳过。
:::

节点自身应用的限制：客户无法从池地址发送邮件（端口 25、465、587、2525），并且守护进程自身的 IPv4 流量仅限于回复以及与控制面板和 DNS 的通信。

## 在NexCMP中连接 {#connect-in-nexcmp}

### VPN节点 {#vpn-node-2}

1. 在**System › Admin › License & updates**中，启用**VPN**开关。请参阅[Modules](https://nexcmp.com/zh-cn/docs/infrastructure/modules/)。

      ![带有 VPN 和 IPv6 Proxy 开关的 Module 卡片](https://nexcmp.com/zh-cn/docs/images/infrastructure/vpn-proxy-nodes-01-modules.webp)

2. 打开**Infrastructure › VPN & Proxy nodes › Agents & external nodes**。添加节点有两种方式。

   **a. 通过 SSH 安装。**点击 **+ Add server (SSH)** 并填写：

   | 字段 | 示例值 |
   |---|---|
   | 服务器 IPv4 地址 | `192.0.2.50` |
   | SSH 端口 | `22` |
   | SSH 用户名 | `root` |
   | SSH 密码 | `XXXX` |
   | 显示名称 | `node-ny-1`（留空：按 IP 命名） |
   | 服务器角色 | External VPN / Proxy Node |
   | 区域分配 | 根据 GeoIP 自动分配（创建/分配区域），或选择现有区域 |
   | 额外子网（可选） | 留空以自动扫描接口，或填入路由网段如`203.0.113.0/24` |
   | 安装后即可销售 | 开启以将检测到的每个地址标记为可销售 |

   点击**Connect & install**。控制面板将通过 SSH 连接，使用一次性票据在节点上运行单行安装程序，并显示节点名称、GeoIP 位置及检测到的网段范围。

      ![显示示例服务器地址与角色的 Add Node via SSH 对话框](https://nexcmp.com/zh-cn/docs/images/infrastructure/vpn-proxy-nodes-02-add-server-ssh.webp)

   **b. 手动安装。**点击**Generate manual install token**。该命令仅显示**一次**；复制并在节点上运行它：

   ```bash
   curl -fsSL https://cloud.example.com/install.sh | sudo sh -s -- --token XXXX --name node-ny-1
   ```

   使用token安装仅将机器注册用于监控：出于安全考虑，面板不允许持有共享token的机器自行授予VPN角色（在命令中添加`--roles vpn`无效）。机器出现在列表中后，打开它并自行添加**VPN**角色。通过SSH安装（选项a）则从一开始就赋予节点VPN角色。生成新token会使旧token失效；已注册的主机因使用各自的密钥，仍可正常工作。

      ![显示一次性令牌命令的安装命令对话框](https://nexcmp.com/zh-cn/docs/images/infrastructure/vpn-proxy-nodes-03-install-command.webp)

   安装程序的操作流程：从控制面板下载`cmp-agent-linux-amd64`，**校验其 SHA-256**，安装到`/usr/local/bin/cmp-agent`，使用令牌完成注册，写入`/etc/cmp-agent/agent.json`，并启动 systemd 服务`cmp-agent`。若要卸载：`curl -fsSL https://cloud.example.com/install.sh | sudo sh -s -- --uninstall`。

3. 首次心跳后，节点会出现在列表中。其所在国家/地区通过GeoIP检测（先由节点自身查询，再由控制面板数据库查询）；若尚不存在该国家/地区的**zone**，则会自动创建并设为公开，主机上发现的地址将成为IP池网段。
4. 打开**Infrastructure › VPN & Proxy nodes › VPN IP pools**可查看网段、其所属zone和节点，并可修改每个网段的zone、节点或**Sellable**开关。**Enable range**允许新订单使用其空闲IP；**Disable range**仅停止新分配，已租用的IP继续运行。

      ![显示节点上报网段的VPN IP pools](https://nexcmp.com/zh-cn/docs/images/infrastructure/vpn-proxy-nodes-04-vpn-pool.webp)

5. 打开**Services › VPN**，设置价格表并开启销售。**Subscriptions**中的**Sell VPN**开关与License & updates中的VPN模块为同一个开关。
6. **可选：重命名服务。**在**Settings › Branding**中，**VPN service display name**用于修改VPN服务在客户菜单、订购页面、详情页和部署列表中的显示名称（例如`IPv4 Proxy`、`Datacenter Proxy`或`Static Residential Proxy`；最多40个字符，留空则保留`VPN`）。它仅更改标签：路由、数据和API均不会改变。

### IPv6代理节点 {#ipv6-proxy-node-2}

1. 在**System › Admin › License & updates**中，开启**IPv6 Proxy**。
2. 打开**Infrastructure › VPN & Proxy nodes › IPv6 Proxy nodes**并点击**Add node (SSH)**。输入节点的IPv4地址、SSH端口、用户名、密码、可选名称以及**Reason**（将记录到审计日志中），然后点击**Install**。

      ![包含示例地址和原因的Add IPv6 node对话框](https://nexcmp.com/zh-cn/docs/images/infrastructure/vpn-proxy-nodes-05-proxy6-add-node.webp)

3. 控制面板随后依次执行：检查机器和端口，复制守护进程、网络脚本、服务单元及节点专属的环境变量文件（包含节点token和密码签名密钥），运行**probe**探测可用前缀，将前缀记录到IP池中，启动服务，并等待最多90秒以接收首次上报。**Install log**会显示每个步骤。
4. 新节点会创建处于**off**状态的zone（根据该节点IPv4的GeoIP生成）。在**Infrastructure › Datacenter › Zone**下开启该zone，以便客户可以选择它。
5. 为每个节点设置总**Mbps cap**（每个方向10到100000）。在**Services › IPv6 Proxy**下设置价格表并开启销售。
6. 检查**IPv6 Proxy › Settings › Panel URL for nodes**。节点会调用此地址（`https://host`，无路径）来拉取配置并发送上报。留空表示`https://<your license domain>`。它必须是指向面板的主机地址，以确保节点自身的IPv4直达面板而未经更改。

::: tip 轮换计划
客户可以设置30至600秒的自动轮换间隔。在NexCMP中，由面板运行该调度计划（以及每小时清理一次连接日志）；节点会在约5秒内获取新地址。
:::

### 节点上报机制 {#how-a-node-reports}

| | VPN节点（`cmp-agent`） | IPv6代理节点 |
|---|---|---|
| 注册 | 通过HTTPS使用一次性ticket或token，随后使用自身密钥 | 一次性SSH安装，随后使用节点token |
| 心跳 | 每**5秒**（纯监控agent为10秒）；控制面板可设置为3至300秒。失败后按5秒步进退避，最长可达60秒 | 节点大约每60秒发送一次报告并拉取配置 |
| 显示为在线 | 最近**60秒**内有心跳 | 最近**120秒**内状态为**alive**，否则为**missed heartbeat** |
| 配置变更 | 在下一次心跳时应用 | 在大约5秒内应用 |
| 更新 | 控制面板可以发送附带新版本、URL和SHA-256的`upgrade`命令 | 在节点行中重新安装 |

### VPN节点上的流量配额 {#data-allowance-on-a-vpn-node}

从NexCMP **1.5.1**开始，VPN节点agent会在每次心跳时上报其承载的流量，面板会将其累加至当前周期的套餐用量。同一数值会同时显示给客户（Overview和Bandwidth选项卡）以及您（VPN › Subscriptions、Used列及节点行）。

- **切断服务。**当套餐用尽当前周期的GB用量时，面板会停止向Agent下发该套餐的端点，因此新连接将被拒绝，已有连接将被关闭。切断操作会在一次心跳内生效，所以套餐用量可能会略微超出限制。带有Unlimited档位的套餐绝不会被切断。
- **恢复服务。**在客户购买更多流量或下一个周期开始后，套餐将在一次心跳内恢复服务。
- **未计量。**其Agent尚未发送用量的节点（例如版本较旧的Agent）显示为**Not measured**，且其套餐绝不会因GB用量而被停机。
- **更新agent。**在节点上使用**1.5.1**版本的agent。旧版agent仍会进行计费统计，但可能会丢失失败心跳、已停止端点或重启期间的流量字节，且在套餐被切断时不会关闭已打开的连接。可从节点所在行（Reinstall）或使用`upgrade`命令进行更新。
- 统计的是通过代理传输的有效载荷，因此比实际网络传输的字节数略低（约1%）。

### 已下线的VPN附加服务 {#retired-vpn-add-ons}

新订单不再提供High IP Reputation、High Concurrency和High Priority Network。现有订阅保留其附加服务选择，但续费金额中已移除已下线附加服务的费用。已付款周期不予退款。此项调整采用该附加服务当前的目录价格；如果您更改了该价格或删除了该附加服务，请在其下一次续费前核对订阅的续费金额。

## 验证 {#verify}

1. 节点行显示为在线。对于VPN节点，**Agents & external nodes**会显示其zone、国家/地区、角色及检测到的网段。
2. **VPN IP pools**列出了包含空闲IP的网段；zone的详情页会显示VPN基础设施。
3. 订购测试VPN或代理套餐。客户将获得接入点`ip:port`、用户名和密码；通过其进行连接，并确认外网可见的公网IP为该节点的IP（例如`curl --proxy socks5h://USER:XXXX@IP:PORT https://ifconfig.me`）。
4. 在IPv6节点的主机上运行：

   ```bash
   systemctl is-active <node service>
   nft list tables | grep proxy6
   ss -ltn | grep -E ':(80|443|6[0-9]{4})\b'
   ```

## 限制与注意事项 {#limits-and-notes}

- Windows主机可以运行监控agent，但无法运行VPN角色。
- VPN套餐的流量配额（每周期GB）：自NexCMP 1.5.1起，面板会汇总VPN节点agent上报的流量，并在当前周期的GB用尽时切断该套餐的代理（详见下文“Data allowance on a VPN node”）。IPv6 Proxy套餐没有GB流量配额；它们按套餐限制Mbps速率。
- VPN套餐的IPv4地址不会轮换。客户报告IP被列入黑名单时，您或分销商可批准从同一可用区中进行更换。仅IPv6 Proxy支持轮换。
- 每次心跳最多上报64个网段。
- VPN端点集在每个售出IP上使用三个端口。使用端口65001-65535时，每个IP只能提供有限数量的端点（178个端口集）；控制面板会跳过之前使用过的端口集。
- 仅当没有套餐占用节点上的IP时，才允许删除IPv6代理节点。删除会移除该节点的网段和令牌；主机上的软件不会被卸载。
- 可以转售同时承载您自己虚拟机的网段：VPN仅使用端口65001-65535，因此可与其他服务共享该IP。

## 故障排查 {#troubleshooting}

| 症状 | 原因 | 解决办法 |
|---|---|---|
| “注册失败（token无效或服务器不可达）” | 令牌错误或已被使用，或者控制面板无法访问 | 生成新令牌，或重试SSH安装。 |
| “文件签名不匹配 - STOP” | 下载的agent与发布的SHA-256不一致 | 检查控制面板的`/dl/`文件夹，并确保传输过程中下载内容未被篡改。 |
| “此安装程序仅适用于Linux” / “暂不支持架构…” | Windows，或x86_64以外的架构（发布版本仅提供适用于x86_64的agent） | 使用x86_64架构的Linux主机。 |
| 节点始终未出现 | 节点无法通过HTTPS访问控制面板 | 在节点上测试`curl https://<domain>/install.sh`；检查DNS和防火墙。 |
| 节点显示的国家/地区错误 | 国家/地区查询失败，因此使用了控制面板的地址数据库 | 允许对`ip-api.com`和`ipinfo.io`的出站访问，或在SSH表单中明确选择区域。 |
| 未检测到网段 | 非虚拟网络接口上没有公网IPv4 | 添加公网地址，或将路由网段作为**Extra subnet**填入。 |
| VPN正常工作，但流量从另一个IP出口 | 售出的IP未分配或未路由到该主机 | 确保该IP已配置在接口上或包含在`local … dev lo`中。 |
| “面板服务器未安装sshpass” | 面板主机无法使用密码登录节点 | 在面板服务器上运行`sudo apt-get install -y sshpass openssh-client`，然后重新安装节点。 |
| 安装IPv6节点时提示“not found in the installed package” | 面板版本低于1.4.2，或是缺少节点文件的自定义构建版本 | 将NexCMP更新至1.4.2或更高版本；自定义构建请使用`build.sh`，现已打包`brandy-proxy6d`和`brandy-proxy6-net`。 |
| IPv6安装开始时出现“SSH: …”或“SSH to internal/loopback addresses is not allowed” | 端口、用户名或密码错误，SSH被阻止，或者地址为私网地址 | 使用节点的公网IPv4，并使用`ssh -p PORT USER@IP`手动检查访问权限。 |
| “不支持架构…（仅限x86_64）” | 节点非x86_64架构 | 使用x86_64主机。 |
| “节点缺少命令：…” | 未安装`nft`、`ip`、`ss`、`sysctl`、`systemctl`或`useradd` | 安装相应软件包，然后重新运行安装。 |
| “节点上的端口已被其他服务占用：… — 80、443、60001-65535必须空闲” | 80、443或60000以上的端口被占用 | 迁移其他服务；安装程序不会自动停止该服务。 |
| “未在节点上发现可访问互联网的IPv6前缀（实际出站探测失败）” | 无路由前缀、无法进行NDP代理或无出站IPv6连接 | 检查前缀是否已路由至节点、接口是否具备IPv6连通性，且出站流量未被过滤。 |
| “所有检测到的网段均已属于另一个节点” | 该前缀已被另一个节点使用 | 从另一个节点中移除该前缀，或选择其他前缀。 |
| 安装结束时提示“no initial report received from node” | 服务已启动，但在90秒内未能连接到面板 | 检查提供给节点的面板URL以及节点到该URL的HTTPS路径；请查看**Install log**。 |
| 节点行显示**missed heartbeat** | 持续120秒未收到上报 | 检查节点上的服务、系统时钟以及到面板的网络路径。 |
| 客户未看到IPv6位置 | 该区域处于关闭状态 | 在**Zone**下启用该区域。 |
