返回列表 发布新帖

[用户教程] 家庭综合远控与IPTV映射公网播放(最终版)实现公网播放家里的IPTV组播源和远控j

653 0
发表于 2026-4-10 15:30:07 | 查看全部 阅读模式 IP:–浙江–绍兴

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
家庭综合远控与IPTV映射公网播放(最终版)实现公网播放家里的IPTV组播源和远控j

本文较长,阅读需要耐心,因为我写也花了很多的耐心

经过了前面的折腾,你现在的环境前提条件

1、电信光猫接主路由器,实现了单线复用

电信光猫单线复用方法

2、K3路由器刷好了OpenWrt 24.10.4

K3路由器刷OpenWrt

3、电视已经打开了ADB

海信电视开ADB方法

4、浙江电信IPTV组播源。这一步本身是需要抓包的,我也抓包折腾了获取的地址,如果有需要后面单开一篇来讲如何进行抓包。后来在网上找到了个提供浙江电信IPTV组播源的项目,可以直接拿来用

浙江电信IPTV组播源

最终实现的效果:

<span data-type="text" style="color: var(--b3-font-color1);">1、IPTV外网和局域网均能播放。</span>

【图片未上传:iShot_2026-04-10_10.59.29-20260410110003-se2wouh.jpg】

iShot_2026-04-10_11.01.12-20260410110136-nyb1mv4.jpg

<span data-type="text" style="color: var(--b3-font-color1);">2、通过开心助手远控家里的电视。</span>本来自己简单写了一个web版的远控,但是发现效果很差,偶尔用下就直接用现成的了。

image-20260410144838-3v1rkfb.png

硬件连接参考第一篇文章中画的拓扑图,旁路由(K3)如果需要改IP地址直接在WEB端就可以改了

家庭综合远控与IPTV映射公网播放
  1. flowchart LR
  2.     A["电信光猫"] --> B["中兴路由器 192.168.35.1"]
  3.     B --> C["斐讯K3路由器 192.168.36.1"]
  4.     B --> H["电视机"]
  5.     B --> J["无线网络"]
  6.     C --> D["Tailscle路由 192.169.35.x"]
  7.     C --> E["Tailscle路由 192.169.36.x"]
  8.     C --> F["udpxy"]
  9.     C --> G["有公网IP直接域名解析"]
  10.     C --> I["无公网IP转绿联云解析"]
复制代码

---

软件安装开始

一、K3安装Tailscale,为了后续随时能够远程回来访问家里的设备,特别是本次重点目标控制电视。

先 SSH 登录 K3:
复制代码

然后安装 Tailscale:
  1. opkg update
  2. opkg install tailscale
复制代码

装完以后,先设置服务开机自启并启动:
  1. /etc/init.d/tailscale enable
  2. /etc/init.d/tailscale start
复制代码

接着执行登录命令。这里要把你自己的 auth key 换进去:

怎么申请自己的[auth key]()见这篇文章
  1. tailscale up \
  2.   --auth-key '<你的-auth-key>' \
  3.   --accept-routes=true \
  4.   --advertise-routes=192.168.35.0/24,192.168.36.0/24
复制代码

这条命令就三件事:

让 K3 加入你的 Tailscale 网络
告诉它接收必要路由
广播两条家里局域网路由

这里我广播的是两段:

192.168.35.0/24:主路由那一侧,电视和机顶盒相关设备都在这里
192.168.36.0/24:K3 自己的管理网段

执行完以后,还差一步,你必须去 Tailscale 后台批准这两条子网路由(如何批准看这里) 。  很多人就是卡在这里,以为命令敲完就结束了,其实没批准之前,远端设备是拿不到这两条网段的。

批准后,输入以下命令看状态:
  1. /etc/init.d/tailscale status
  2. tailscale status
  3. tailscale debug prefs | sed -n '1,120p'
复制代码

你要看到的是:

服务状态是 running
节点在线
AdvertiseRoutes 里面确实有 192.168.35.0/24 和 192.168.36.0/24

这一步跑通以后,你在外面就能直接 通过 Tailscale 访问家里的电视和主路由了。

二、K3 上安装 udpxy,把 IPTV 从组播变成单播

先安装 udpxy:
  1. opkg update
  2. opkg install udpxy
复制代码

K3 的网络再确认一下:

LAN1 接主路由出来的 IPTV 专线
LAN2 接机顶盒
LAN1/LAN2 组成一个单独的透明桥

这一步配置好以后,再写 udpxy:
  1. uci set udpxy.config=udpxy
  2. uci set udpxy.config.disabled='0'
  3. uci set udpxy.config.respawn='1'
  4. uci set udpxy.config.verbose='0'
  5. uci set udpxy.config.status='1'
  6. uci set udpxy.config.port='4022'
  7. uci set udpxy.config.bind='br-lan'
  8. uci set udpxy.config.maxclients='8'
  9. uci commit udpxy
  10. /etc/init.d/udpxy enable
  11. /etc/init.d/udpxy restart
复制代码

然后用下面这几条确认服务已经起来:
  1. /etc/init.d/udpxy status
  2. logread | grep -i udpxy | tail -n 20
  3. curl -I http://192.168.36.1:4022/status
复制代码

正常的话,你会看到 status 页能打开,也可以直接浏览器里输入http://192.168.36.1:4022/status。后面本地播放地址格式就固定了:
  1. http://192.168.36.1:4022/udp/组播地址:5140
复制代码

比如:
  1. http://192.168.36.1:4022/udp/233.50.201.118:5140
复制代码

到这里,连接K3路由器的这段局域网已经能播放了。

三、有公网地址跟着下面一段走,以阿里云域名为例,无公网地址的直接跳下面无公网地址

如何判断公网地址:

进路由器,看你播号端口出来的地址,和你直接进IP138查出来的地址是一样,就是公网地址,像我下面这样的,就是凉了,没有公网地址。

image-20260410141908-r8anym1.png

1、进入阿里云控制台,单独建一个 RAM 子用户专门给 DDNS 用。步骤是:

1. 登录阿里云控制台,进入 RAM控制台
2. 新建一个用户,比如 openwrt-ddns。
3. 给这个用户开启 AccessKey。
4. 给它授权阿里云 DNS 解析相关权限AliyunDNSFullAccess。

    image-20260410143131-7o92hhd.png

准备完成以后,你手上会有两样东西:

AccessKey ID
AccessKey Secret

这两个值后面要写进 K3 的 DDNS 配置文件里。

2、开通阿里域名解析

进入阿里云云解析界面,找到你的域名,新增一条二级或三级域名解析的A记录,地址随便填1.1.1.1先占位,后续通过K3把地址解析过去。

image-20260410143647-z99l0mk.png

3. 把阿里云 DDNS 脚本放到 K3

我当时在 K3 上用的是一个很轻量的 Shell 脚本,不依赖什么复杂插件,核心逻辑就是:

自动检测当前公网 IPv4
调阿里云 DNS API
如果记录变了就更新 A 记录

先把脚本传到 K3:
  1. scp -O alidns-ddns.sh [email protected]:/usr/local/bin/
复制代码

这里的 192.168.36.1 是我这台 K3 当时的管理地址,你如果改过,就换成你自己的 K3 地址。

然后 SSH 进去,给脚本执行权限:
  1. ssh [email protected]
  2. chmod +x /usr/local/bin/alidns-ddns.sh
复制代码

4. 在 K3 上写 DDNS 配置文件

接着在 K3 上创建配置文件:
  1. cat >/etc/alidns-ddns.conf <<'EOF'
  2. ALIYUNDOMAIN='XXXX.top'
  3. ALIYUNRR='XX'
  4. ALIYUNTYPE='A'
  5. ALIYUNACCESSKEYID='你的AccessKeyId'
  6. ALIYUNACCESSKEYSECRET='你的AccessKeySecret'
  7. EOF
复制代码

这几项的含义:

ALIYUNDOMAIN 你的主域名
ALIYUNRR 子域名前缀
ALIYUNTYPE 一般就填 A
ALIYUNACCESSKEYID 刚才 RAM 生成的 AccessKey ID
ALIYUNACCESSKEYSECRET 刚才 RAM 生成的 AccessKey Secret

按上面的例子,最终更新的就是:
  1. xx.XXXX.top
复制代码

5. 手工执行一次,先确认 DDNS 能跑通
  1. /usr/local/bin/alidns-ddns.sh
  2. logread | grep -i alidns
复制代码

如果一切正常,你会看到类似“新增记录”或者“更新记录”的日志。然后去阿里云 DNS 控制台里刷新一下,也应该能看到 xx.xxxx.top 已经指向当前出口公网 IPv4。

6. 配置定时任务,让域名自动跟着宽带 IP 变化

手工验证通过以后,再把它加进 cron:
  1. chmod +x 你的地址/alidns-ddns.sh
  2. echo '/10     你的地址/alidns-ddns.sh >/dev/null 2>&1' >> /etc/crontabs/root
  3. /etc/init.d/cron restart
复制代码

这样以后每 10 分钟它就会检查一次公网 IPv4,有变化就自动更新。

7. 把 K3 的 WAN 地址固定住

这一步是很多人会漏掉的。

因为你后面要在主路由上把公网端口转发给 K3,如果 K3 的 WAN 地址每次重启都变,那端口映射也会跟着失效。

所以要去主路由里做一条 DHCP 静态绑定,把 K3 的 WAN 固定成一个不变的地址。比如:
  1. 192.168.35.100
复制代码

8. 主路由做第一层端口映射

主路由这边要做的是把外网访问的 18080 端口,转发给 K3 的 WAN 地址。

如果你前一步固定的是:
  1. 192.168.35.100
复制代码

那么主路由里应该做类似这样的端口映射:
  1. 外网 TCP 18080 -> 192.168.35.100:18080
复制代码

这里用 TCP 就行,因为 udpxy 对外提供的是 HTTP 服务。

image-20260410144925-s7g6dut.png

9. K3 自己再做第二层转发,把 18080 导到 udpxy

因为 udpxy 实际监听的是 K3 内网侧的:
  1. 192.168.36.1:4022
复制代码

所以 K3 自己还要做一条防火墙转发,把 WAN 口进来的 18080 再导到 4022。

用命令行可以直接这样配:
  1. uci -q delete firewall.udpxypublic
  2. uci set firewall.udpxypublic='redirect'
  3. uci set firewall.udpxypublic.name='Forward-udpxy-public'
  4. uci set firewall.udpxypublic.src='wan'
  5. uci set firewall.udpxypublic.srcdport='18080'
  6. uci set firewall.udpxypublic.dest='lan'
  7. uci set firewall.udpxypublic.destip='192.168.36.1'
  8. uci set firewall.udpxypublic.destport='4022'
  9. uci set firewall.udpxypublic.proto='tcp'
  10. uci set firewall.udpxypublic.target='DNAT'
  11. uci set firewall.udpxypublic.family='ipv4'
  12. uci commit firewall
  13. /etc/init.d/firewall restart
复制代码

注意这里的 192.168.36.1 和 4022 也是我这套环境里的实际值。如果你的 K3 管理网段或者 udpxy 端口改过,按你自己的实际配置替换。

10. 最后用域名直接测试播放

走到这里,如果你家真的是公网 IPv4,理论上外网就已经能播了。

测试地址格式就是:
  1. http://你的域名:18080/udp/组播地址:端口
  2. http://你的域名:18080/udp/233.50.201.118:5140
复制代码

你可以直接拿 VLC、IINA 或者 PotPlayer 打开这个地址测试。

如果外网能正常出画面,那这条有独立IP方案到这里就结束了

四、无公网地址方案

异地有公网地址的绿联 NAS 做公网入口。

家里的 K3 继续负责 udpxy
K3 主动出站连接异地 NAS
NAS 上跑 frps
K3 上跑 frpc
NAS 再用 Lucky 把最终播放地址反代成 HTTPS

整条链路长这样:
  1. K3 udpxy (192.168.36.1:4022)
  2.   -> frpc
  3.   -> 绿联域名:7007
  4.   -> Lucky TCP 转发到 frps 7000
  5.   -> frps 对外暴露播放端口
  6.   -> Lucky HTTPS 反代
  7.   -> 绿联域名/udp/组播地址:5140
复制代码

这个方案解决的是:家里无公网 IP,K3 能主动连出去。

1、绿联 NAS 上部署 frps

frps 放在:
  1. /volume1/docker/frps
复制代码

docker-compose.yaml
  1. services:
  2.   frps:
  3.     image: fatedier/frps:v0.51.3
  4.     containername: frps
  5.     restart: unless-stopped
  6.     ports:
  7.       - "7000:7000/tcp"
  8.       - "7500:7500/tcp"
  9.       - "60013:18080/tcp"
  10.     volumes:
  11.       - ./frps.ini:/etc/frp/frps.ini:ro
  12.     command:
  13.       - -c
  14.       - /etc/frp/frps.ini
复制代码

frps.ini
  1. [common]
  2. bindport = 7000
  3. token = 这里换成你自己的长 token
  4. dashboardaddr = 0.0.0.0
  5. dashboardport = 7500
  6. dashboarduser = admin
  7. dashboardpwd = 这里换成你的后台密码
  8. logfile = console
  9. loglevel = info
  10. allowports = 18080
复制代码

这两个文件都放在/volume1/docker/frps这个目录里,在NAS里部署yaml

image-20260410150205-5rcdjhs.png

正常的话,你会看到:

7000 给 frpc 控制连接用
7500 给 frps 面板用
60013 映射到容器内的 18080,给 Lucky 回源用

2、K3 上配置 frpc

先SSH进入K3
  1. opkg update
  2. opkg install frpc
复制代码

然后写配置:
  1. uci set frpc.config=init
  2. uci set frpc.config.stdout='1'
  3. uci set frpc.config.stderr='1'
  4. uci set frpc.config.user='frpc'
  5. uci set frpc.config.group='frpc'
  6. uci set frpc.config.respawn='1'
  7. uci set frpc.common=conf
  8. uci set frpc.common.serveraddr='你的域名'
  9. uci set frpc.common.serverport='7007'
  10. uci set frpc.common.token='这里换成你自己的 token'
  11. uci set frpc.udpxy=conf
  12. uci set frpc.udpxy.name='udpxy'
  13. uci set frpc.udpxy.type='tcp'
  14. uci set frpc.udpxy.localip='192.168.36.1'
  15. uci set frpc.udpxy.localport='4022'
  16. uci set frpc.udpxy.remoteport='18080'
  17. uci commit frpc
  18. /etc/init.d/frpc enable
  19. /etc/init.d/frpc restart
复制代码

这里的逻辑是:

serveraddr 指向你的 NAS 公网入口域名
serverport 指向 Lucky 暴露出来的 TCP 转发口 7007
localip 和 localport 指向 K3 本地的 udpxy
remoteport 还是 18080,因为这是容器内 frps 监听的业务口

启动后,用这两条验收:
  1. /etc/init.d/frpc status
  2. logread | grep -i frpc | tail -n 30
复制代码

你要看到的关键日志是:

login to server success
proxy added: [udpxy]
* start proxy success

只要这三条出来,说明家里 K3 到异地 NAS 的链路已经打通了。

3、Lucky 和NAS所在光猫端口配置

新增一条WEB服务规则

image-20260410151141-nwn6v68.png

新增端口TCP 转发规则

image-20260410151257-eu2t1r5.png

NAS端电信光猫设置端口转发

image-20260410151509-j5ce65m.png

4、最终验证外网播放
  1. https://你的NAS反代地址:8088/udp/233.50.201.118:5140
复制代码

这条能播以后,你就可以把它写进 M3U 了,最后保存M3U文件。

比如:
  1. #EXTM3U
  2. #EXTINF:-1,CCTV-1 高清
  3. https://你的NAS反代域名/udp/233.50.201.118:5140
复制代码

后面不管是 VLC、IINA、PotPlayer,还是支持 M3U 的电视 App,都能直接播。

评论

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2026 绿联NAS私有云社区 版权所有 All Rights Reserved. 粤公网安备44030002002555号| 粤ICP备12028978号
关灯 在本版发帖
联系技术支持
返回顶部
快速回复 返回顶部 返回列表