028 用了快一年的 NAT4 电信还是转网到了移动

20 小时 49 分钟前
 sayoll

最近把用了 10 年的电信换为了移动,光猫改为了桥接,OpenWrt 拨号。有无大佬知道如何实现 单线复用 & 双线 IPTV

尝试过以下配置,但仍无法播放:

组播地址来源:四川移动组播地址

OpenWrt 配置

Wan 口配置

config interface 'wan'
	option proto 'pppoe'
	option device 'eth2.101'
	option username 'xxxxxx'
	option password 'xxxxxx'
	option ipv6 'auto'

IPTV 口配置

config interface 'IPTV'
	option proto 'dhcp'
	option device 'eth2.102'

其他 VLAN (ID: 102)

config device
	option type '8021q'
	option ifname 'eth2'
	option vid '102'
	option name 'eth2.102'

上网 VLAN (ID: 101)

config device
	option type '8021q'
	option ifname 'eth2'
	option vid '101'
	option name 'eth2.101'

omcproxy 配置

防火墙 配置

config rule
	option src 'iptv'
	option name 'Allow-IGMP-IPTV'
	list proto 'icmp'
	option target 'ACCEPT'
config rule
	option src 'iptv'
	option dest 'lan'
	option name 'Allow-Multicast-IPTV'
	list proto 'udp'
	list dest_ip '239.0.0.0/8'
	option target 'ACCEPT'
config zone
	option name 'iptv'
	option input 'ACCEPT'
	option forward 'ACCEPT'
	option output 'ACCEPT'
	option masq '1'	

光猫 配置

  1. 模式: 桥接 端口绑定:业务模式: 互联网 Vlan 模式: 改写 Tag VlanID: 101
  2. 模式: 桥接 端口绑定:业务模式: 其他 Vlan 模式: 改写 Tag VlanID: 102

绑定模式

LAN1 101/102

903 次点击
所在节点    宽带症候群
12 条回复
sayoll
20 小时 36 分钟前
补充一下,机顶盒上有个像 U 盘一样的设备不知道是不是 鉴权设备
wtks1
19 小时 44 分钟前
一般来说除了上海之外的 iptv 都挺好搞单线复用 iptv 的,如果自己搞不定,可以直接买现成的交换机,HTK-SG1008D-ITV
xqzr
18 小时 58 分钟前
VLAN 模式:透传
应该是,电口入 Tag 不改变直接出光口?如果是,那可以试试...
ruoyutx
17 小时 30 分钟前
0838 裝寬帶默認就是 v4 動態。無需申請
Ipsum
12 小时 52 分钟前
那个 usb 设备是遥控器的语音接收器。
ysxb1145
12 小时 23 分钟前
@sayoll 那不是遥控器接收器吗
很多地方不交钱看不了组播地址的
Qazxcv123
12 小时 4 分钟前
网上教程挺多的,给你个参考: https://github.com/luckyyyyy/blog/issues/75
还有 iptv 代理的,可以用这个 OP 的插件: https://www.v2ex.com/t/971817
glaucus
11 小时 20 分钟前
已经退掉 IPTV 用移动内网源了,虽然清晰度差点,省事多了
bfdh
10 小时 59 分钟前
同 028 移动。
1 、你前面链接中给出的地址已经转成 http 了,如果你直接用的话,肯定是播不了的。
2 、如果你使用了正确的组播地址仍不能播放,有可能是组播代理的问题,可以尝试不经过路由器直接有线接 PC ,用 VLC 播放试试。
3 、以下是我之前自己折腾的记录,你可以参考下。

# 基本背景

- 成都移动 IPTV 使用组播进行播放,使用 IPoE 认证( dhcp option 60 )。
- 抓取直播源的目的是希望可以抛弃机顶盒,直接使用电视、手机、电脑等设备直接观看电视节目。
- 抓取直播源之后可以多台设备同时观看 IPTV (设备间互不干扰),且无需向运营商申请额外的机顶盒。
- 可以使得网络部署更加灵活,不必专门为所有的设备准备单独的 IPTV 网线。

# 抓包

抓取机顶盒正常连接 IPTV 时的所有报文,从机顶盒开机到播放任意频道时止。抓到的报文将用于后续分析。具体抓包过程此处不做赘述。

# 解决 IPoE 认证问题

## 提取认证信息(不确定是否一定需要,后来好像没有这些也能用)

认证信息包含以下三项内容,均可从 dhcp discover 报文中提取

> Vendor class identifier 每次 dhcp 请求都会变,但通过测试发现提取任意一次的数据进行重放也可以通过认证。

- mac
- Host Name: android-xxxxxxxxxxxxxxxx
- Vendor class identifier:(长度为 61 字节,转化为 16 进制文本则长度为 122 ) 00001545acd5xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx8a9342eac

## 路由器配置

在 openwrt 路由器( MT7621+7530 方案)`/etc/config/network`中添加如下配置

> port 3 原本是在其他 switch_vlan 的配置中,需要将其从中删除。
>
> 在配置之前,需要修改`/lib/netifd/proto/dhcp.sh`, 找到`${vendorid:+-V "$vendorid"} \`,修改为`${vendorid:+-V '' "-x 0x3c:$vendorid"} \`使得 dhcp vendorid 可以支持 16 进制数据.

```
config switch_vlan
option device 'switch0'
option vlan '3'
option vid '102'
option ports '3 5t'

config interface 'iptv'
option proto 'dhcp'
option hostname 'android-xxxxxxxxxxxxxxxx'
option vendorid '00001545acd5xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx8a9342eac'
option macaddr 'xx:xx:xx:xx:xx:xx'
option ifname 'eth1.102'
option delegate '0'
option defaultroute '0'
option peerdns '0'
```

完成以上配置之后,执行`/etc/init.d/network reload`,然后将光猫 iptv 口用网线连接到路由器 port 3 ,此时路由器的 iptv interface 已经可以获取到 IP 。

# 提取直播源

继续分析抓包数据不难发现直播源是通过如下 http 请求明文传输的

```
GET /taipan-search/getChannelIndexs.json?channelIndexUrl=............ HTTP/1.1
Host: vipersearch.t.taipan.sca.bcs.ottcn.com:8080
Connection: Keep-Alive
Accept-Encoding: gzip
User-Agent: okhttp/3.12.0
```

提取该 http 请求的响应报文,得到如下 json ,livePlayUrl 即为每个频道的直播地址。

```json
[{
"index": "1",
"uuid": "ysten-cctv-1",
"channelName": "CCTV-1",
"channelIcon": "http://zbtvlookbackepg.sc.ysten.com:8080/logo/CCTV1.png",
"livePlayUrl": "rtp://239.11.0.65:5140?channelFECPort=5142&ChannelFCCPort=8027&ChannelFCCIP=183.223.164.65",
"isShowBack": 1,
"channel_code_bd": null,
"channelType": "OpenChannel",
"aiChannelUuid": null
}, {
"index": "2",
"uuid": "cctv-2",
"channelName": "CCTV-2",
"channelIcon": "http://zbtvlookbackepg.sc.ysten.com:8080/logo/CCTV2.png",
"livePlayUrl": "rtp://239.11.0.108:5140?channelFECPort=5142&ChannelFCCPort=8027&ChannelFCCIP=183.223.164.65",
"isShowBack": 1,
"channel_code_bd": "cctv2&CCTV2&cctv-2&CCTV-2",
"channelType": "OpenChannel",
"aiChannelUuid": null
}, {
"index": "3",
"uuid": "cctv-3",
"channelName": "CCTV-3",
"channelIcon": "http://zbtvlookbackepg.sc.ysten.com:8080/logo/CCTV3.png",
"livePlayUrl": "rtp://239.11.0.101:5140?channelFECPort=5142&ChannelFCCPort=8027&ChannelFCCIP=183.223.164.65",
"isShowBack": 1,
"channel_code_bd": "cctv3",
"channelType": "OpenChannel",
"aiChannelUuid": null
},
......
]
```

> 如果将前面提取到的 mac 地址以及通过 dhcp 获取的 IP/mask 均设置在一台 PC 上,并将 IPTV 网线也接入 PC ,此时 PC 可以通过 VLC 播放器直接播放每个 livePlayUrl 。

# 配置 udpxy

> 使用 udprxy 的目的是将组播流转换为 http 流,使得局域网内的设备可以更方便地播放直播源。理论上,配置好组播代理、igmpsnooping 局域网中的设备也可以直接播放组播源。不过 wifi 对组播支持不好,某些路由器可能无法通过 wifi 播放。

在路由器安装好 udprxy ,并配置如下,然后执行`/etc/init.d/udpxy reload`

```sh
root@Openwrt:~# cat /etc/config/udpxy

config udpxy
option respawn '1'
option verbose '0'
option status '1'
option port '4022'
option disabled '0'
option bind 'br-lan'
option source 'eth1.102'

```

至此,局域网的设备便可以通过`http://<router-ip>:4022/<proto>/<multicast-addr>`播放每个直播源。比如 CCTV1 的播放地址为:`http://192.168.0.1:4022/rtp/239.11.0.65:5140`。

# 生成 m3u8

将前面提取到的 json 保存为文件,通过下面这个脚本(`gen_m3u8.sh`)可生成 m3u8 文件。

命令格式为:`./gen_m3u8.sh <json file> <target file>`

```sh
#!/bin/bash

set -e

function clean(){
[ -n "$msg" ] && rm -f $TMPF
[ -n "$msg" ] && {
echo $msg
return
}
echo "Failed"
}

JSON=$1
TARGET=$2
[ -z "$JSON" -o -z "$TARGET" ] && {
echo "$0 <json file> <target file>"
exit
}

[ -r "$JSON" ] || {
echo "Can't open $JSON"
exit
}

trap clean EXIT
TMPF=$(mktemp)
cat $1 | jq . | grep -E "channelName|livePlayUrl" > $TMPF
echo "#EXTM3U" > "$TARGET"
cat $TMPF | while true; do
read name || break
read url
name=$(echo $name | cut -d'"' -f4)
proto=$(echo $url | cut -d'"' -f4 | cut -d':' -f1)
url=$(echo $url | cut -d'"' -f4 | cut -d'/' -f3)
echo "#EXTINF:-1,$name" >> "$TARGET"
echo "http://192.168.0.1:4022/$proto/$url" >> "$TARGET"
done
msg=Success
```

> 将生成的 m3u8 文件上传至[http://epg.51zmt.top:8000/]( http://epg.51zmt.top:8000/%E5%8F%AF%E8%87%AA%E5%8A%A8%E5%8C%B9%E9%85%8D%E5%8F%B0%E6%A0%87)可自动匹配台标
lilu0826
7 小时 32 分钟前
同 028 移动,如果你只看 iptv 组播的话不需要像楼上那样获取机顶盒 ipoe 认证,直接通过链接 iptv 口或者 vlan 单线复用也可以,然后设置一个光猫 lan 的静态 ip 地址,比如 192.168.1.5 ,然后配和一个组播转单播插件比如 udpxy ,然后用上面那个组播源的 ip 改成你的路由器 ip 和插件端口导入播放器就可以看了
sayoll
6 小时 55 分钟前
终结,又换回了电信,逼电信说什么套餐取消不了 。协商了 239 月费 现在 5 折 2 年
Damn
4 小时 45 分钟前
你们的宽带绑定的手机套餐是有多么豪华?都这么愿意被电信宰的么。。
之前 028 联通不是才 29 块钱就有 1000M 宽带+电视+手机套餐 8G 流量了么。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1173619

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX