大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
本帖最后由 wsycqyz 于 2015-12-3 13:30 编辑
0.背景
最近升级换了上海电信50M套餐,送中兴B860A 4K IPTV机顶盒,光猫为中兴F420,电信施工完毕后,光猫的3、4口为IPTV接口,同时这两个接口也可以用来接普通的电脑上网。
做为一名具备CCIE证书的网络攻城狮,不能使用自己的路由器拨号是完全无法忍受的,所以自己动手,有了此文。
原理上,说白了,就是IPTV开机,拿到一个路由器分配的内网地址(通常是192.168.1.X),在DHCP交互过程中发现在特殊的DHCP Option,那么就往VLAN85请求一个电信内网的地址用于后续IPTV认证,认证完成后,使用VLAN85和51来进行点播和直播。我们要做的就是:
i).欺骗IPTV,让其得到想要的DHCP Option
ii).使接IPTV的网络设备支持VLAN85,51的传输(具体包内容分析见本文最后附录)
1.使用的网络设备
光猫F420,NETGEAR R6300v2(关闭WIFI,当网关做NAT),Linksys EA6500v2(AP模式,网口可以普通电脑,LAN4口专接IPTV),以上都刷同一版本的DDWRT。由于DDWRT默认只能支持小于16的VLAN号,所以重新编译的内核模块(switch-robo.ko),放入路由器/jffs/目录下,启动时重新加载这个模块,以使其支持VLAN85和VLAN51。
注:怎么为DDWRT编译内核模块不在本文讨论范围内。为什么?因为不同设备,不同固件对VLAN的支持度不一样,LZ无法全部覆盖。后续也许会有一篇文件专门讲怎么为DDWRT编译内核模块以支持VLAN85,51。本文提供已经编译好的switch-robo.ko,DDWRT版本27745(内核版本3.10.87)及以后适用,R6300v2和EA6500v2通用,不对其它设备使用情况负责。下载链接:http://pan.baidu.com/s/1o6ncN8I
网络结构如下图:
(222.47 KB, 下载次数: 10)
2015-11-16 15:37 上传
2.改造
2.1光猫配置
问电信师傅要了光猫的telecomadmin密码,进光猫把其改成桥接,其它什么都不用改。配置完后,光猫的部分截图应该是如下:
i).用于上网的连接,模式:桥模式,端口绑定到1、3、4,业务模式:INTERNET,VLAN模式UNTAG。这样1、3、4端口就可以接普通电脑上网。
1.png (31.79 KB, 下载次数: 9)
2015-11-16 20:44 上传
ii).用于看IPTV的连接,模式:桥模式,端口绑定不要选(有些同学有旧IPTV的话,应该是绑定到LAN2上的,无所谓,只要不绑定1、3、4就行了),业务模式OTHER,VLAN模式是TAG,VLAN ID:85。
2.png (33.64 KB, 下载次数: 5)
2015-11-16 20:44 上传
iii).绑定模式,LAN3和LAN4应该是已经被电信改好了的,VLAN绑定,映射规则:85/85。我自己又把LAN1改成和3、4一样的,这样我的1、3、4端口都可以既上网以上IPTV。
3.png (28.67 KB, 下载次数: 4)
2015-11-16 20:44 上传
iv).日常应用,IPTV,对_Other_B_VID_85那个的组播VLAN应该是51,电信应该是已经修改好了的。
4.png (24.22 KB, 下载次数: 5)
2015-11-16 20:44 上传
v).其它一些信息页面
5.png (26.31 KB, 下载次数: 5)
2015-11-16 20:44 上传
2.2 R6300v2配置
R6300v2接光猫的3口,因为这个口是可以又上网又看IPTV的。
R6300v2还要支持特殊的DHCP Option,在DDWRT里->Services->Services->DNSMasq->Additional DNSMasq Options里,加上:
dhcp-option-force=vi-encap:0,2,”HGW-CT”复制代码这个有些同学表示对他们的IPTV不生效,可试试下面这段完全遵守中国电信规范的格式:
dhcp-option-force=125,00:00:00:00:1a:02:06:48:47:57:2d:43:54:03:04:5a:58:48:4e:0a:02:20:00:0b:02:00:55:0d:02:00:2e复制代码对上面这行的解析为:
125(DHCP Option125)
00 00 00 00 (enterprise number)
1a (data-length,26bytes option-data)
02 06 48 47 57 2d 43 54 (subcode-2 0x4847572d4354=HGW-CT,认证关键内容)
H G W – C T
03 04 5a 58 48 4e(subcode-3,0x5a58484e=ZXHN,路由器型号,其它还见过”HG221″)
Z X H N
0a 02 20 00 (subcode-10 0x2000 untag)
0b 02 00 55 (subcode-11 0x0055=85 iptv vlanid)
0d 02 00 2e (subcode-13 0x002e=46 voice vlanid)
R6300v2在启动时要载入重新编译的内核模块,并且让指定端口支持VLAN85,51,在DDWRT里->Administration->Commands,加上:
rmmod switch_robo
insmod /jffs/switch-robo.ko
echo “0t 4t 5” > /proc/switch/eth0/vlan/85/ports
echo “0t 4t 5” > /proc/switch/eth0/vlan/51/ports
第一行:从内核中移除当前内核模块(注:怎么为DDWRT编译内核模块不在本文讨论范围内。)
第二行:加载新编译的内核模块(注:怎么为DDWRT编译内核模块不在本文讨论范围内。)
第三、四行:把内部编号为0、4的两个接口放入VLAN85,51中。(注:每个路由器的内部编号与实际的接口对应不一样,请自行研究)
其中0代表R6300v2的LAN4口,这个口下接E6500v2;4代表R6300v2的WAN口,这个口接中兴F420
关于R6300v2机身背后的LAN口是这样的:
(190.05 KB, 下载次数: 6)
2015-11-30 11:05 上传
2.3 EA6500v2配置
同理,在启动时要载入重新编译的内核模块,并且让指定端口支持VLAN85,51,在DDWRT里->Administration->Commands,加上:
rmmod switch_robo
insmod /jffs/switch-robo.ko
echo “3t 4t 5” > /proc/switch/eth0/vlan/85/ports
echo “3t 4t 5” > /proc/switch/eth0/vlan/51/ports
第一行:从内核中移除当前内核模块(注:怎么为DDWRT编译内核模块不在本文讨论范围内。)
第二行:加载新编译的内核模块(注:怎么为DDWRT编译内核模块不在本文讨论范围内。)
第三、四行:把内部编号为3、4的两个接口放入VLAN85,51中。(注:每个路由器的内部编号与实际的接口对应不一样,请自行研究)
其中3代表EA6500v2的LAN4口,这个口下接IPTV;4代表EA6500v2的WAN口。
完工
3.常见Q&A
(等待提问)
4.参考文献https://www.chiphell.com/forum.ph … 939443&pid=30156011
附录:IPTV从开机到上线全过程包分析
(I)IPTV开机,发送广播的DHCP Discover包,注意没有带VLAN,所以此包被R6300v2接收到。
1-dhcp_discover.png (223.38 KB, 下载次数: 11)
2015-11-16 16:40 上传
(II)R6300v2回复DHCP Offer包,注意红框,回复包带有DHCP Option125,内容是HGW-CT。R6300v2分配了一个192.168.1.145的地址给IPTV。
2-dhcp_offer.png (209.01 KB, 下载次数: 3)
2015-11-16 16:40 上传
(III)IPTV发包DHCP Request,无VLAN
3-dhcp_request.png (216.49 KB, 下载次数: 7)
2015-11-16 16:40 上传
(IV)R6300v2回复DHCP ACK,带DHCP Option125。
4-dhcp_ack.png (171.58 KB, 下载次数: 5)
2015-11-16 16:40 上传
(V)IPTV向VLAN85发送DHCP Discover,以得到电信内网地址。
5-vlan-dhcp-discover.png (87.94 KB, 下载次数: 7)
2015-11-16 16:40 上传
(VI)电信内部DHCP服务器从VLAN85回复的DHCP Offer。可见,IPTV又得到了一个20.155.255.16的地址。(其余流程略)
6-vlan-dhcp_offer.png (84.08 KB, 下载次数: 6)
2015-11-16 16:40 上传
(VII)IPTV得到内网IP地址后,还有登陆认证,下载一些基本信息,这些都略过,反正与我们无关。最后打开某个直播频道,IPTV发送IGMP加组,随后组播的数据包从VLAN85到达IPTV.
7-vlan-stream.png (144.23 KB, 下载次数: 11)
2015-11-16 16:40 上传
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/184602.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...