AimiliVPN 出口代理对接教程:cfnew、3x-ui 和 edgetunnel 怎么配置

这篇文章整理一次实际折腾记录:VPS 上已经运行 AimiliVPN,希望让 cfnew、3x-ui 或 edgetunnel 这类项目,在需要时走 VPS 上的 AimiliVPN 出口代理。这样做的目的不是“无条件提速”,而是把出口 IP 切到 AimiliVPN 当前连接的节点,用于个人学习、合规网络测试和故障排查。

本文只写配置思路和排查方法,示例里的域名、账号和密码都用占位符表示。实际使用时请换成自己的 VPS IP、域名、端口和代理密码,不要把真实代理密码公开到网页、群聊或截图里。

一、先理解这套链路

AimiliVPN 运行在 VPS 上,本质上给 VPS 提供一个本地 HTTP/SOCKS5 代理网关。其他程序只要能连到这个代理端口,就可以通过 AimiliVPN 当前选择的节点出网。

本机程序,例如 3x-ui:
3x-ui -> 127.0.0.1:39662 -> AimiliVPN -> 目标网站

外部程序,例如 cfnew / edgetunnel:
cfnew 或 Cloudflare Worker -> VPS公网IP:39662 -> AimiliVPN -> 目标网站

这里最容易混淆的是 127.0.0.1。只有运行在 VPS 本机上的程序,才能填 127.0.0.1。如果项目跑在 Cloudflare Workers、Pages 或你的 Windows 电脑上,就必须填 VPS 公网 IP 或灰云 DNS 域名。

二、准备信息

  • 一台已经部署 AimiliVPN 的 VPS。
  • AimiliVPN 面板域名,例如 panel.example.com
  • VPS 公网 IP,例如 203.0.113.10
  • 一个对外代理端口,例如 39662
  • 一个代理账号和强密码,例如 proxyuseryour-strong-password
  • 如果使用域名连接代理,建议单独准备 socks.example.com,并设置为 DNS only,不要开启 Cloudflare 橙云代理。

三、在 VPS 上确认 AimiliVPN 服务

先确认 AimiliVPN 服务正常运行,并看清楚 systemd 服务文件位置。

systemctl status aimilivpn.service --no-pager
systemctl cat aimilivpn.service

常见服务文件里会看到类似配置:WorkingDirectory 指向 /opt/aimilivpn,ExecStart 使用 python3 vpngate_manager.py,并读取 /etc/default/aimilivpn 环境变量。

四、把 AimiliVPN 代理端口改成外部可访问

默认情况下,AimiliVPN 代理端口可能是 127.0.0.1:7928,只适合 VPS 本机内部调用。如果要让 cfnew 或 edgetunnel 从外部连接,就需要监听到 0.0.0.0,并换成一个不容易冲突的端口。

在 VPS 终端执行前,建议先备份配置。

cp -a /opt/aimilivpn/vpngate_data/ui_auth.json \
  "/opt/aimilivpn/vpngate_data/ui_auth.json.bak.$(date +%F-%H%M%S)" 2>/dev/null || true

cp -a /etc/default/aimilivpn \
  "/etc/default/aimilivpn.bak.$(date +%F-%H%M%S)" 2>/dev/null || true

然后修改 AimiliVPN 的代理端口。下面示例使用 39662,你也可以换成自己的端口。

python3 - <<'PY'
import json
from pathlib import Path

path = Path("/opt/aimilivpn/vpngate_data/ui_auth.json")

try:
    config = json.loads(path.read_text(encoding="utf-8"))
except Exception:
    config = {}

config["proxy_port"] = 39662

path.write_text(
    json.dumps(config, ensure_ascii=False, indent=2),
    encoding="utf-8"
)

print("proxy_port =", config["proxy_port"])
PY

继续写入监听地址、端口和认证账号。强烈建议外部开放代理时一定加用户名和密码。

cat >/etc/default/aimilivpn <<'EOF'
LOCAL_PROXY_HOST="0.0.0.0"
LOCAL_PROXY_PORT="39662"
LOCAL_PROXY_USER="proxyuser"
LOCAL_PROXY_PASS="your-strong-password"
EOF

systemctl daemon-reload
systemctl restart aimilivpn.service
systemctl status aimilivpn.service --no-pager

正常日志里应该能看到代理监听在 0.0.0.0:39662

ss -lntp | grep 39662

五、放行 VPS 防火墙和安全组

如果 VPS 使用 firewalld,可以放行这个端口。云服务器控制台里的安全组也要同步放行 TCP 端口。

firewall-cmd --permanent --add-port=39662/tcp
firewall-cmd --reload
firewall-cmd --query-port=39662/tcp

最后一条返回 yes,说明系统防火墙已放行。云厂商面板里还要添加一条入站规则:TCP 39662,来源可以按需限制;临时测试可以用 0.0.0.0/0

六、在 Windows 上测试代理端口

先测端口是否能从本机连到 VPS。

Test-NetConnection 203.0.113.10 -Port 39662

如果看到 TcpTestSucceeded : True,说明端口已经通了。然后再测试 SOCKS5 代理本身是否可用。

curl.exe --proxy "socks5h://proxyuser:your-strong-password@203.0.113.10:39662" https://ipinfo.io/json

能返回 IP、地区、运营商等 JSON 信息,就说明代理可以正常出网。

七、cfnew 里应该怎么填

cfnew 的代理配置框一般叫 代理配置(S)。这里不要填完整网页链接,只填代理本身。

proxyuser:your-strong-password@203.0.113.10:39662

如果通过 URL 参数临时打开,可以使用下面这种形式。

https://c.example.com/?s=proxyuser:your-strong-password@203.0.113.10:39662&qj=no

如果页面提示“不写前缀默认按 s5 处理”,通常不需要写 socks5://。如果代理框左边已经有协议选择,例如 socks5 和中间的 ://,右边输入框也不要再重复写协议。

八、3x-ui 走 AimiliVPN 怎么填

3x-ui 如果和 AimiliVPN 在同一台 VPS 上,出站代理可以填本机地址。注意,是 3x-ui 的出站 outbound,不是入站监听地址。

类型:socks5
地址:127.0.0.1
端口:39662
用户名:proxyuser
密码:your-strong-password

不要把 3x-ui 的入站监听地址改成 127.0.0.1,否则外部客户端可能连不上节点。

客户端 -> 3x-ui 入站
3x-ui 出站 -> 127.0.0.1:39662
AimiliVPN -> 目标网站

九、edgetunnel 走 VPS AimiliVPN 怎么填

edgetunnel 跑在 Cloudflare Workers 或 Pages 上,不在你的 VPS 本机上,所以不能填 127.0.0.1:39662。必须填 VPS 公网 IP 或一个 DNS only 的代理域名。

在 edgetunnel 后台找到 Cloudflare CDN 访问设置,把反代模式切换到其他代理,代理协议选 socks5,右侧输入框填写:

proxyuser:your-strong-password@203.0.113.10:39662

如果有“启用全局代理”,想让全部出站都走 AimiliVPN 就勾选。只想部分规则走代理,就不要开全局,按项目规则单独配置。

如果使用路径方式,常见写法是:

/socks5://proxyuser:your-strong-password@203.0.113.10:39662

十、要不要把 IP 换成域名

长期使用建议换成域名,例如 socks.example.com。这样 VPS IP 变更时,只需要改 DNS,不用到处修改 cfnew、edgetunnel 或其他项目配置。

DNS 类型:A
名称:socks
内容:203.0.113.10
代理状态:DNS only / 仅 DNS

如果使用 Cloudflare DNS,这条记录一定不要开橙云。SOCKS5/HTTP 代理端口不是普通网页流量,开橙云后大概率无法直连代理端口。

十一、7928 和 39662 的关系

7928 通常是 AimiliVPN 早期或默认的本机代理端口。如果你已经把 proxy_port 改成 39662,服务一般只监听新端口,不会同时保留 7928。

可以用下面命令确认当前到底监听了哪个端口:

ss -lntp | grep -E ':7928|:39662'

如果只看到 0.0.0.0:39662,那内部程序也应该改用 127.0.0.1:39662

十二、会不会比直接走 VPS 更快

不一定。这个方案的主要价值是更换出口 IP 类型,而不是保证速度更快。链路会多一跳 AimiliVPN 或 VPNGate 节点,延迟和稳定性可能变差。

  • 如果慢是因为 VPS 出口 IP 质量差、被识别为机房 IP,走 AimiliVPN 可能会改善访问结果。
  • 如果慢是因为 VPS 本身 CPU、带宽、入口线路差,多走一层代理通常不会变快。
  • 如果只是普通代理访问,直接走 VPS 或换更好的 VPS 线路往往更稳。
  • 如果需要住宅出口或特定地区出口,这套方案才更有意义。

十三、常见问题排查

1. Windows 端口测试一直没反应

通常是防火墙或云安全组没有放行。先在 VPS 上确认服务监听,再检查 firewalld 和云控制台安全组。

ss -lntp | grep 39662
firewall-cmd --query-port=39662/tcp

2. 端口通,但 curl 代理失败

优先检查协议、用户名和密码。AimiliVPN 这个端口可以是 HTTP/SOCKS5 网关,但多数场景建议用 SOCKS5 测试。

curl --max-time 30 \
  --proxy "socks5h://proxyuser:your-strong-password@127.0.0.1:39662" \
  https://ipinfo.io/json

3. cfnew 代理框填了完整链接导致失败

代理框只填 user:pass@host:port,不要把 https://c.example.com/?s=... 整条链接填进去。

4. edgetunnel 填 127.0.0.1 不生效

这是正常的。edgetunnel 在 Cloudflare 上运行,127.0.0.1 指的是 Cloudflare 运行环境自己,不是你的 VPS。

十四、恢复默认配置

如果测试完不想继续对外开放代理,可以恢复到本机端口,例如 127.0.0.1:7928,并删除外部防火墙端口。

python3 - <<'PY'
import json
from pathlib import Path

path = Path("/opt/aimilivpn/vpngate_data/ui_auth.json")
config = json.loads(path.read_text(encoding="utf-8"))
config["proxy_port"] = 7928
path.write_text(json.dumps(config, ensure_ascii=False, indent=2), encoding="utf-8")
print("proxy_port =", config["proxy_port"])
PY

if [ -f /etc/default/aimilivpn ]; then
  sed -i \
    -e '/^LOCAL_PROXY_HOST=/d' \
    -e '/^LOCAL_PROXY_PORT=/d' \
    -e '/^LOCAL_PROXY_USER=/d' \
    -e '/^LOCAL_PROXY_PASS=/d' \
    /etc/default/aimilivpn
fi

firewall-cmd --permanent --remove-port=39662/tcp 2>/dev/null || true
firewall-cmd --reload
systemctl restart aimilivpn.service
ss -lntp | grep -E ':7928|:39662'

十五、安全提醒

  • 外部开放代理端口时必须设置强密码。
  • 不要在公开文章、截图、订阅链接里暴露真实代理账号和密码。
  • 能用域名就用 DNS only 的灰云记录,不要让 Cloudflare 橙云代理 SOCKS5 端口。
  • 用完临时测试端口后,及时关闭安全组或恢复本机监听。
  • 本文仅用于个人学习、合规网络测试和自有服务器运维,请遵守当地法律法规和相关平台服务条款。

参考资料

总结

这套对接的核心规则其实很简单:VPS 本机上的 3x-ui 填 127.0.0.1:39662,跑在外部或 Cloudflare 上的 cfnew、edgetunnel 填 VPS公网IP:39662 或灰云代理域名。配置完成后,先用端口测试,再用 curl 测代理,最后再放到项目里,这样排查起来最省时间。

滚动至顶部