让 NPC 通过 HTTP 或 SOCKS5 代理连接 NPS
在 NPC 无法直连外网时通过上游 HTTP 或 SOCKS5 代理建立 TCP 桥接
当 NPC 所在网络只允许通过企业代理访问外部地址时,可以让 NPC 先连接上游 HTTP 或 SOCKS5 代理,再由代理连接 NPS 的桥接端口。
这里配置的是 NPC 出站代理,不是对外提供 HTTP 正向代理或 SOCKS5 隧道。
命令行启动
SOCKS5 代理:
HTTP 代理:
代理不需要认证时,可省略 proxy-user:proxy-password@。用户名或密码包含 @、:、/ 等 URL 保留字符时,必须先做百分号编码。命令行参数可能被同一主机的其他用户从进程列表看到,长期运行时建议改用权限受限的配置文件。
npc.conf 配置
在 [common] 中设置 proxy_url:
限制配置文件只能被运行 NPC 的账号读取。Linux 上可使用:
代理端必须允许的连接
- HTTP 代理必须支持
CONNECT nps.example.com:8024并返回 200。只允许浏览器访问 80/443 的代理可能拒绝 NPS 桥接端口。 - SOCKS5 代理必须允许连接 NPS 的主机名和 TCP 桥接端口。
- NPS 所在主机的安全组和防火墙仍需放通桥接端口,来源地址通常显示为上游代理的出口地址。
限制与安全边界
- 出站代理只用于
conn_type=tcp或-type=tcp。KCP 使用 UDP,不会经过这个 HTTP/SOCKS5 代理参数。 - 通过代理建立通道后,
tls_enable=true会继续执行到 NPS 的 TLS 握手和证书校验;应连接 TLS 桥接端口(通常为8025),并按桥接证书与身份验证 配置 CA 或公钥指纹。 - HTTP
CONNECT和普通 SOCKS5 连接本身不提供端到端加密。未启用 TLS 桥接时,代理能够读取桥接数据。 - 不支持 PAC 脚本或自动读取操作系统代理,必须显式填写代理 URL。
验证与排障
- 先在 NPC 主机上验证代理端口可达,再启动 NPC。
- 检查 NPC 日志是否出现
Successful connection with server,并在 Web 管理中确认客户端在线。 - HTTP 代理返回
proxy CONNECT failed: 403或类似错误时,请检查CONNECT目标端口策略和代理认证信息。 - 代理连接成功但验证失败时,检查 NPS 地址、桥接端口和客户端验证密钥,不要将上游代理密码与 NPS
vkey混淆。