一、 背景环境

  • 硬件: 玩客云(CPU 架构为 ARMv7 32位)。
  • 系统: CasaOS (基于 Armbian)。
  • 网络: * 内置网口 eth0 接局域网(IP: 192.168.124.24)。
    • USB 网卡 enx3cab72beff30 接光猫 ITV 口(用于接收组播信号)。

二、 操作步骤

1. 离线获取匹配架构的 Docker 镜像

由于玩客云无法直接拉取外网镜像,且架构特殊,必须在可联网的电脑上强制下载 ARMv7 版本。

  • 拉取命令:Bashdocker pull --platform linux/arm/v7 vistalba/udpxy
  • 导出镜像:Bashdocker save -o udpxy_armv7.tar vistalba/udpxy
2. 镜像传输与加载
  1. 通过 CasaOS 的 Files 浏览器,将 udpxy_armv7.tar 上传到 /DATA/Downloads 目录。
  2. 通过 SSH 登录玩客云,进入该目录加载镜像:Bashdocker load -i /DATA/Downloads/udpxy_armv7.tar
3. 准备 USB 网卡环境(关键)

Linux 系统中,如果网卡没有 IPv4 地址或处于 Down 状态,udpxy 无法抓包。

  • 激活网卡:Baship link set enx3cab72beff30 up
  • 分配“假地址”(静态 IP):Bash# 只要是不冲突的私有 IP 即可,目的是激活网口的 IPv4 协议栈 ip addr add 192.168.200.1/24 dev enx3cab72beff30
4. 部署 Docker 容器

使用环境变量 UDPXY_OPTS 传递参数,并开启 host 网络模式。

  • 部署命令:Bashdocker run -d \ --name udpxy \ --restart always \ --net=host \ -e UDPXY_OPTS="-p 4022 -c 30 -T -a eth0 -m enx3cab72beff30" \ vistalba/udpxy
    • -p 4022: 监听端口。
    • -T: 必须包含,防止容器作为后台进程直接退出。
    • -a eth0: 绑定分发信号的网卡。
    • -m enx3cab72beff30: 绑定接收信号的 USB 网卡。

三、 验证与播放

  1. 状态页验证: 浏览器访问 http://192.168.124.24:4022/status
  2. 播放地址格式:
    • 原始组播地址:udp://239.254.200.9:8264
    • udpxy 转发地址:http://192.168.124.24:4022/udp/239.254.200.9:8264

四、 进阶:如何让“假地址”在开机后自动生效?

玩客云重启后,手动执行的 ip addr 命令会失效。你可以把激活命令写进 CasaOS 的启动脚本或系统的 rc.local 中。

简单方法: 在 CasaOS 的终端执行:

Bash

crontab -e

在末尾添加一行(重启后自动激活网卡并补全 IP):

Bash

@reboot sleep 30 && ip link set enx3cab72beff30 up && ip addr add 192.168.200.1/24 dev enx3cab72beff30


心得总结: 这次成功的核心在于:

  1. 镜像架构锁定:确保了 ARMv7 版本的正确性。
  2. 环境变量传参:顺应了镜像作者定义的 UDPXY_OPTS 规则。
  3. 激活物理链路:通过“假地址”解决了 Linux 接口无载波(No Carrier)导致程序崩溃的问题。