|
本帖最后由 footlog 于 2021-5-12 16:56 编辑
说明:
1,只是实现了纯手工实现,全自动化还有一定难度
2,需要一定的网络基础,beginner就不要考虑了!
先看基本设置:在这里
https://www.right.com.cn/forum/thread-341748-1-1.html
划了两个vlan,一个给宽带,一个给iptv,udpxy、xupnpd已经配置好,可以使用igmp看直播了
在这个基础上dhcp分iptv 的ip,然后可以看rtsp视频 流
主要步骤:
1.设置vlan的mac地址和机顶盒一样
2.使用udhcp动态获得ip
3.设置路由表,路由器自动选择路由路径
4.设置iptables,内网设置可以选择路由路径
下面一步一步来:
1.设置vlan的mac地址
在这之前要获取你的机顶盒的mac,由于dhcp是广播,这个可以在路由上用tcpdump抓包获得或者电脑上用wireshark获得,同时获得运营商的ID
这个老毛子固件界面上无此功能,只能手工设置
在终端中输入:
ifconfig eth3.9 hw ether 0c:56:5c:08:xx:xx
其中eth3.9是iptv的vlan 接口,0c:56:5c:08:xx:xx 是机顶盒的mac,这样dhcp才能成功
2.udhcp动态获得ip
在这之前要获取你的运营商的ID,一般是XXITV,由于dhcp是广播,这个可以在路由上用tcpdump抓包获得或者电脑上用wireshark获得
udhcpc命令这样写,可以写一行,我分多行主要是为了看着清楚:
#udhcpc -i eth3.9 \
-s /tmp/udhcpc_viptv.script \
-p /var/run/udhcpc_viptv.pid \
-V XXITV \
-C \
-x hostname:001002990060202014050C565C0XXXXX \
-O subnet -O router -O hostname -O nisdomain \
-S -d
其中eth3.9 是vlan接口,XXITV是运营商ID,hostname好像意义不是很大,还是要自己确认一下
如果顺利的话,就会拨号成功,就能看到iptv的ip了,一般是10开关的
#ifconfig eth3.9
eth3.9 Link encap:Ethernet HWaddr 0C:56:5C:08:xx:xx
inet addr:10.132.xx.xx Bcast:10.132.63.255 Mask:255.255.224.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:995725185 errors:0 dropped:1223770 overruns:0 frame:0
TX packets:48402207 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1350473330583 (1.2 TiB) TX bytes:2906310180 (2.7 GiB)
这个时候需要先记下dhcp继租服务器的地址,这个可以通过抓包获取到。
这时只是dhcp成功了,按dhcp的机制,一般1/2租期会重发一下renew包,向服务器注册一下
这个包是发向固定的服务器的,但是老毛子固件也没有处理,只有手工加入路由表中:
我这里是222.211.168.1,
手工输入route add 222.211.168.1 gw 10.132.32.1,其中222.211.168.1是注册服务器ip,10.132.32.1是dhcp分到的网关的地址,以后rtsp都要走这个网关
也可以使用ip route 命令 ip route add 222.211.168.1 via 10.132.32.1
这个Ip 222.211.168.1 可以通过抓包获取到 , 我编译的固件可以自动加上这个路由,
这样udhcpc 发送renew包的时候会直接发到服务器,否则就可能renew不到,租约到期后就会失效,就需要手工再次dhcp,关键是如果看视频就要断一下。
3.设置路由表和iptables,路由器自动选择路由路径
其实上面最后一个也是设置路由表的一部分
这里主要是设置到rtsp服务器的路由,首先你要知道rtsp的地址,这个只有自己想办法获取了,不同的地区肯定不一样,一个省里都可能不一样
一般有3种方法:1,抓包神器;2,端口映射;3,机顶盒导出。
我这里是182.139.x.x,但是需要注意了,一般这个只是一个中间服务器,还会跳转一下,怎么看最终服务器,一会再说,先把这个服务器处理好
我用ip route 命令
ip route add 182.139.0.0/16 via 10.132.32.1
设置了route 只是路由器里面的请求会自动选择路径了,
# traceroute -n 182.139.x.x
traceroute to 182.139.x.x , 30 hops max, 38 byte packets
1 10.132.32.1 3.897 ms 1.162 ms 1.570 ms <---------第一跳是dhcp网关地址,说明路径对了,否则就不对
2 118.112.212.125 1.787 ms 1.714 ms 2.281 ms
.......
内网的设备还需要设置一下ip tables规则
iptables -t nat -A POSTROUTING -s 192.168.x.0/24 -d 182.139.0.0/16 -o eth3.9 -j MASQUERADE
-s后面是你内网的ip网段
这个时候,到中间服务器的路径就已经通了,
可以在电脑 上输入tracert -d 182.139.x.x 看看路径对不对
S C:\Users\x> tracert -d 182.139.x.x
Tracing route to 182.139.x.x over a maximum of 30 hops
1 <1 ms <1 ms <1 ms 192.168.x.1 <---------第一跳是你的路由器ip
2 3 ms 2 ms 2 ms 10.132.32.1 <---------第二跳是iptv dhcp网关地址,说明路径对了,否则就不对
..............
这个时候,就基本上成功了,但是还要找到最终视频服务器的地址,这个也有很多方法
1,用EasyRTSPClient 工具,输入你的rtsp流地址,就能看到各种信息,里面可以找到跳转到的服务器。也可以使用wireshark抓包,包里包含的有跳转服务器的地址。
2,直接用视频 播放器看rtsp流,抓包,应该也能看到,这个是我猜想的:)
3,经验值,一般是182.138.x.x
4,不管那么多,直接用182.0.0.0/8,这个有可能 影响上网,但是也不确定。事实证明这个是不对的,有些地方跳转到125.x.x.x了,这个方法明显不行了。
另:播放器不要用vlc,之前帮别人设置的时候,明明都设置好了,就是看不了,折腾了好几次,结果换了个播放器就好了,我测试用smplayer,ffmpeg中的ffplay也可以播放。--2021.05
找到跳转服务器后,参照上面的步骤
1,添加路由,ip route add 182.138.0.0/16 via 10.132.32.1
2,添加iptables规则,iptables -t nat -A POSTROUTING -s 192.168.x.0/24 -d 182.138.0.0/16 -o eth3.9 -j MASQUERADE
再在路由器上和电脑上分别 试验一下路由路径,走iptv网关说明配置正确
这个时候就可以使用Rtsp流看视频了,这个可以看直播,也可以看回放
看回放要自己组请求字符串了
playseek后面是时间年年年年月月日日百度云严禁赌博秒秒
rtsp://182.139.x.x/PLTV/88888896 ... 0000-20190728223000
potplay 都可以看,但是好像看回放的时候不能拖放
上面都是手工输入,需要一定的网络基础,beginner就不要考虑了!
我写的也比较乱,时间久了,自己也就忘了,所以发在这里,一方面给有需要的做参考,一方面给自己留个备份。
|
|