VPN与IPv6代理节点
**管理后台位置:**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中启用。
功能说明
NexCMP支持售卖通过您自有的IP地址并在您运营的服务器上出口的VPN与代理访问服务。共有两种节点类型:
- VPN节点。由运行在Linux主机上的轻量Go程序
cmp-agent提供支持。它会自动发现主机上的公网IPv4地址,在售出的每个地址上开启SOCKS5、HTTP和UDP监听,并通过客户连接所用的同一IP发出流量(同IP出口)。它每隔数秒向控制面板报告一次状态。 - **IPv6代理节点。**一种代理服务,可从路由至该主机的IPv6前缀中为客户分配地址。控制面板会通过SSH自动为您完成安装。
可用于在部署了服务器的国家或地区转售纯净IP地址。
前提条件
VPN节点
| 项目 | 要求 |
|---|---|
| 操作系统 | 配备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代理节点
| 项目 | 要求 |
|---|---|
| 操作系统 | 运行于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>)。 |
准备基础设施
VPN节点
配置主机,安装受支持的Linux并配置计划出售的公网IPv4地址(可配置在网络接口上或路由至该主机)。
如果您售卖路由网段,请计划在添加节点时将其作为Extra subnet输入。Agent会安装路由
local <block> dev lo以便主机接收该网段内所有地址的流量,然后上报发现的地址。Agent还会读取主机的真实路由表,绝不会售卖或捕获网关地址:如果该网段包含主机某条路由的下一跳(例如直连网段的路由器地址),Agent将仅针对其周围的网段部分安装local路由,向面板上报网关,面板则会将该地址排除在地址池及所有分配之外。当额外子网发生更改或Agent停止运行时,它会移除所安装的路由。**放行防火墙。**在公网地址上放行入站TCP和UDP 65001-65535,并放行到控制面板的出站HTTPS流量。
**可选:单IP字节计数器。**Conntrack统计(
net.netfilter.nf_conntrack_acct = 1)允许监控角色统计每个IP的字节数。控制面板可通过向Agent发送acct命令来启用该功能,该操作还会写入/etc/sysctl.d/99-cmp-agent.conf。VPN角色本身不需要此项。从节点检查控制面板连接:
bashcurl -fsS -o /dev/null -w '%{http_code}\n' https://cloud.example.com/install.sh
IPv6代理节点
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。
切勿重复使用同一前缀
前缀不得与其他节点的前缀重叠,且范围不得大于控制面板自身 IPv6 池中已有的前缀。允许使用控制面板池内部的 /64 前缀。重叠会在安装结果中报告为“assign range … (node …)”,并且该前缀会被跳过。
节点自身应用的限制:客户无法从池地址发送邮件(端口 25、465、587、2525),并且守护进程自身的 IPv4 流量仅限于回复以及与控制面板和 DNS 的通信。
在NexCMP中连接
VPN节点
在System › Admin › License & updates中,启用VPN开关。请参阅Modules。

打开Infrastructure › VPN & Proxy nodes › Agents & external nodes。添加节点有两种方式。
**a. 通过 SSH 安装。**点击 + Add server (SSH) 并填写:
字段 示例值 服务器 IPv4 地址 192.0.2.50SSH 端口 22SSH 用户名 rootSSH 密码 XXXX显示名称 node-ny-1(留空:按 IP 命名)服务器角色 External VPN / Proxy Node 区域分配 根据 GeoIP 自动分配(创建/分配区域),或选择现有区域 额外子网(可选) 留空以自动扫描接口,或填入路由网段如 203.0.113.0/24安装后即可销售 开启以将检测到的每个地址标记为可销售 点击Connect & install。控制面板将通过 SSH 连接,使用一次性票据在节点上运行单行安装程序,并显示节点名称、GeoIP 位置及检测到的网段范围。

b. 手动安装。点击Generate manual install token。该命令仅显示一次;复制并在节点上运行它:
bashcurl -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失效;已注册的主机因使用各自的密钥,仍可正常工作。
安装程序的操作流程:从控制面板下载
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。首次心跳后,节点会出现在列表中。其所在国家/地区通过GeoIP检测(先由节点自身查询,再由控制面板数据库查询);若尚不存在该国家/地区的zone,则会自动创建并设为公开,主机上发现的地址将成为IP池网段。
打开Infrastructure › VPN & Proxy nodes › VPN IP pools可查看网段、其所属zone和节点,并可修改每个网段的zone、节点或Sellable开关。Enable range允许新订单使用其空闲IP;Disable range仅停止新分配,已租用的IP继续运行。

打开Services › VPN,设置价格表并开启销售。Subscriptions中的Sell VPN开关与License & updates中的VPN模块为同一个开关。
可选:重命名服务。在Settings › Branding中,VPN service display name用于修改VPN服务在客户菜单、订购页面、详情页和部署列表中的显示名称(例如
IPv4 Proxy、Datacenter Proxy或Static Residential Proxy;最多40个字符,留空则保留VPN)。它仅更改标签:路由、数据和API均不会改变。
IPv6代理节点
在System › Admin › License & updates中,开启IPv6 Proxy。
打开Infrastructure › VPN & Proxy nodes › IPv6 Proxy nodes并点击Add node (SSH)。输入节点的IPv4地址、SSH端口、用户名、密码、可选名称以及Reason(将记录到审计日志中),然后点击Install。

控制面板随后依次执行:检查机器和端口,复制守护进程、网络脚本、服务单元及节点专属的环境变量文件(包含节点token和密码签名密钥),运行probe探测可用前缀,将前缀记录到IP池中,启动服务,并等待最多90秒以接收首次上报。Install log会显示每个步骤。
新节点会创建处于off状态的zone(根据该节点IPv4的GeoIP生成)。在Infrastructure › Datacenter › Zone下开启该zone,以便客户可以选择它。
为每个节点设置总Mbps cap(每个方向10到100000)。在Services › IPv6 Proxy下设置价格表并开启销售。
检查IPv6 Proxy › Settings › Panel URL for nodes。节点会调用此地址(
https://host,无路径)来拉取配置并发送上报。留空表示https://<your license domain>。它必须是指向面板的主机地址,以确保节点自身的IPv4直达面板而未经更改。
轮换计划
客户可以设置30至600秒的自动轮换间隔。在NexCMP中,由面板运行该调度计划(以及每小时清理一次连接日志);节点会在约5秒内获取新地址。
节点上报机制
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节点上的流量配额
从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附加服务
新订单不再提供High IP Reputation、High Concurrency和High Priority Network。现有订阅保留其附加服务选择,但续费金额中已移除已下线附加服务的费用。已付款周期不予退款。此项调整采用该附加服务当前的目录价格;如果您更改了该价格或删除了该附加服务,请在其下一次续费前核对订阅的续费金额。
验证
节点行显示为在线。对于VPN节点,Agents & external nodes会显示其zone、国家/地区、角色及检测到的网段。
VPN IP pools列出了包含空闲IP的网段;zone的详情页会显示VPN基础设施。
订购测试VPN或代理套餐。客户将获得接入点
ip:port、用户名和密码;通过其进行连接,并确认外网可见的公网IP为该节点的IP(例如curl --proxy socks5h://USER:XXXX@IP:PORT https://ifconfig.me)。在IPv6节点的主机上运行:
bashsystemctl is-active <node service> nft list tables | grep proxy6 ss -ltn | grep -E ':(80|443|6[0-9]{4})\b'
限制与注意事项
- 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。
故障排查
| 症状 | 原因 | 解决办法 |
|---|---|---|
| “注册失败(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下启用该区域。 |