Chiphell - 分享与交流用户体验

 找回密码
 加入我们
搜索
      
查看: 18015|回复: 59

[网络] 上海电信4K盒子+华硕路由器原厂固件/R7000实现拨号

[复制链接]
发表于 2015-11-6 18:27 | 显示全部楼层 |阅读模式
本帖最后由 zhao511117 于 2016-10-12 20:39 编辑

10/21更新一个ASUS-Merlin固件R7000的实例。过程由坛友xworm整理。


背景介绍:
国庆期间有坛友PM我,询问关于上海4K IPTV连接和设置问题,其实坛子里已经有不少这方面帖子了,但本次的连接方式比较少见,所以才觉得有必要记录下来。这里算个笔记,如果能帮到其他人,也算是物尽其用了。
目前看到主要有下面两种拓扑:
iptv1.jpg
上面这种拓扑没什么好说,认证、VLAN处理和流量转发全部靠路由,这也是那位坛友目前在用的方式。
iptv2.jpg
上面这种拓扑,VLAN处理和IPTV流量转发都走光猫,认证经由红线从路由走(如果没有这条红线,机顶盒无法进入到路由的LAN,也就没法走到公网做认证)。这也是这个帖子目前的方式。
那位坛友想换到上面第二种方式,他的出发点是:

1.    让路由集中处理上网类业务,IPTV的VLAN处理和流量转发不占用路由资源
2.    在IPTV观看过程中,即便路由宕机,也不会影响IPTV的观看
先不说这些观点对错或者是否有价值,从技术实现上,我觉得应该问题不大,就远程登上去,看看能不能帮他设置一下:

初试无果:
他的设备情况:路由R7000(ASUS-Merlin固件,开DHCP),光猫烽火HG220GS(关DHCP),机顶盒HG680-J
据他反应,这种连接情况下,机顶盒根本无法访问路由。但R7000刷Tomato时,这种连接是没问题的。
为便于调试,用PC暂代机顶盒,发现把光猫到路由的LAN-LAN那条红线接起来后,PC能拿到路由分配的地址,但PC到路由丢包严重,丢包率超过90%。推测发生环路了。
iptv3.jpg
后续检查了R7000上的交换机配置,发现R7000和AC55U的交换机设置略有不同,AC55U的原厂固件上有2个CPU网口,分别放在WAN和LAN的网段,交换机不处理VLAN数据包。R7000只有1个CPU网口,这个网口放在WAN和LAN网段,通过VLAN来区分网段。同时因为2个VLAN网口的MAC地址相同,所以造成环路。

解决思路:

经过多次尝试解决不了环路问题,所以准备将拓扑改成单臂路由的形式。
iptv4.jpg
这种情况下,路由器WAN的物理端口既要负责上行到外网,又要负责在内网处理与机顶盒的连接——这其实是一个单臂路由的拓扑。唯一与传统单臂路由不同的地方在于: PPPoE逻辑连接的另外一个锚点不在光猫,而在局端的BARS上,但从路由器WAN物理端口的视角看,它就是在完成单臂路由的功能。虽然只有1个物理接口,但是有2条逻辑链路,1条为公网PPPoE链路,1条为和光猫LAN口相连的链路。
接下来就需要在WAN物理端口上部署虚拟端口:PPPoE是一个,负责面向公网;还需要一个面向内网,能与机顶盒互通的虚拟端口,在R7000(ASUS-Merlin固件)上,这个虚拟接口就是eth0。如下图:
iptv5.jpg
需要注意的是这个eth0新加的IPTV网与路由器原来的LAN是分开的,也没必要去考虑如何把这两个网段合并起来——我们的目的是让eth0与光猫上接的机顶盒互通,并将IPTV访问公网的流量转发到PPPoE的虚拟端口去,所以整个过程跟路由器原来的LAN没有关系——完全是eth0和PPPoE这两个虚拟端口间的事。
备注一下:按下面的配置操作,IPTV网可以访问外网和LAN,如以后有需求,通过修改iptables脚本可以只允许访问外网。

实际操作:
接下来就在eth0建立内网,
首先,eth0自己要有地址:

  1. /usr/sbin/ip addr add 192.168.2.1/24 dev eth0
复制代码


接下来,要让eth0为这个新的内网提供DHCP(也就是给机顶盒),为调试方便,我在/jffs/configs/dnsmasq.d下建立个文件,比如iptv.dnsmasq,其他位置只要能被dnsmasq调用的文件应该都可以,内容如下:

  1. interface=eth0

  2. dhcp-range=interface:eth0,192.168.2.2,192.168.2.10,255.255.255.0,86400s

  3. dhcp-option=interface:eth0,3,192.168.2.1

  4. dhcp-option=interface:eth0,252,"\n"

  5. dhcp-option=interface:eth0,15

  6. dhcp-option=interface:eth0,28

  7. dhcp-option-force=interface:eth0,125,00:00:00:00:14:02:06:48:47:57:2d:43:54:0a:02:20:00:0b:02:00:55:0d:02:00:2e
复制代码
配置好以后重启dnsmasq服务。

接着,考虑eth0内网流量到PPPoE接口ppp0的转发:

  1. /usr/sbin/iptables -I INPUT 4 -i eth0 -m state --state NEW -j ACCEPT

  2. /usr/sbin/iptables -I FORWARD 3 -i eth0 -o ppp0 -j ACCEPT
复制代码

配置完成后,把机顶盒换成PC,试试PC能否拿到192.168.2.x的地址,到192.168.2.1是否正常不丢包,是否能上外网。都没问题了,再接机顶盒,这样做可以把IP层故障和DHCP故障清楚的区分开。


启动脚本:
为方便大家配置,我将上面命令的启动脚本粘贴在这里。大家只需要根据自己的实际环境修改地址以后放入指定的文件就可以生效。
ASUS-Merlin固件,创建文件/jffs/configs/dnsmasq.d/iptv.dnsmasq
interface=eth0
dhcp-range=interface:eth0,192.168.2.2,192.168.2.10,255.255.255.0,86400s
dhcp-option=interface:eth0,3,192.168.2.1
dhcp-option=interface:eth0,252,"\n"
dhcp-option=interface:eth0,15
dhcp-option=interface:eth0,28
dhcp-option-force=interface:eth0,125,00:00:00:00:14:02:06:48:47:57:2d:43:54:0a:02:20:00:0b:02:00:55:0d:02:00:2e
ASUS-Merlin固件,覆盖文件/jffs/scripts/nat-start
#!/bin/sh
dbus fire onnatstart
/usr/sbin/ip addr add 192.168.2.1/24 dev eth0
/usr/sbin/iptables -I INPUT 4 -i eth0 -m state --state NEW -j ACCEPT
/usr/sbin/iptables -I FORWARD 3 -i eth0 -o ppp0 -j ACCEPT




原帖内容




借同学的号和大家分享下4K盒子下路由器的设置。


我的环境:
贝尔 RG2010-CA猫
中兴 黑色的4K盒子
华硕 AC55U

适用范围:
1、上海电信用户(每个地区的Option值应该不同)。
2、华硕路由器,但又不想/不能刷第三方固件的用户。
3、光猫可以关闭DHCP服务器。如果光猫的DHCP能设定网关可以参考http://www.kdslife.com/thread_1_15_8115520__.html。过程会比较简单。

需要准备的设备:
1、网线1根
2、U盘1个,大小任意。需要一直插在路由器上。

简单介绍下原理:
4K盒子正常工作需要Option 60和Option 125。
4K盒子在获取发送DHCP报文(DHCP Request)时会携带Option 60属性,电信猫的DHCP服务器在返回(DHCP Response)时会对带有这个属性的请求返回Option 60。
如果你的设备在发送请求时不带有Option 60,通过Wireshark抓包时是看不到这个返回值的。
Option 125在任何情况下都会在DHCP返回值中。
非上海用户或者想自己获得Option值。可以用交换机的端口镜像/双网口Bridge的方式去抓取4K盒子和DHCP服务器的交互流程获得。

华硕路由器的原厂固件本身就会自动执行U盘上的脚本,具体可以看代码


  1. GPL_RT_AC55U_30043766001\asuswrt\release\src\router\rc\usb.c

  2. D:\GPL_RT_AC55U_30043766001\asuswrt\release\src\router\rom\apps_scripts
复制代码


路由器在U盘插入以后会执行U盘根目录/asusware.mipsbig/.asusrouter。中间的asusware.mipsbig目录根据不同的机型,名字会不一样。我附件中给每个机型都建了文件夹。不出意外的话,各种华硕路由器都可以用。
如想确认自己的路由器具体是什么目录,请打开路由器的telnet功能(系统管理里),执行
  1. nvram get apps_install_folder
复制代码



那我做了什么?
让华硕路由器的DHCP能下发IPTV用的DHCP参数。并让华硕路由器开机自动执行脚本。因为华硕路由器原厂固件的文件系统重启之后会复原,脚本必须保存在U盘上。

前置要求:
1、将电信光猫改桥接,关闭光猫上的DHCP服务器。这个就是以前老IPTV的那套。我就不重复了。
我大致描述下需要做的操作,将Internet那条连接从路由改成桥接,其他的连接和端口绑定不需要改。关闭光猫的DHCP服务器。
物理链接为:
光猫1号口什么也不绑《-》 路由器WAN口。光猫2号口什么也不绑 《-》 路由器LAN口。
光猫3号口和4号口绑IPTV 《-》 IPTV盒子的网口。
需要注意的是,光猫的LAN IP必须设定成和华硕路由器不是一个网段的。千万不要冲突地址。比如光猫的界面是192.168.1.1,我会将华硕路由器设定成192.168.2.1
在做下面的步骤之前,请确保光猫已经做好桥接和关闭DHCP服务器的操作。

45楼protosswei 的tomato的成功案例。有光猫配置截图传送门:45#

使用方法:
1、路由器设置PPPoE拨号。
2、将U盘格式化成FAT32
4、将附件解压到U盘根目录,目录结构如图所示。
iptv与华硕路由器u盘脚本目录结构.PNG
5、将U盘插上路由器。
6、用网线将华硕路由器的LAN口和光猫的LAN口(什么也不绑的口,我用的2号口)相连。让IPTV盒子能从华硕路由器拿IP。
7、完成。

已知问题:
1、脚本不会判断是否已经执行,拔插U盘会触发路由器执行脚本。会造成配置文件有多个重复条目。
解决办法:拔插U盘以后重启路由器。

排错步骤: (成功的不需要看)
1、检查U盘上的脚本是否执行。
telnet登陆路由器执行

  1. cat /etc/dnsmasq.conf
复制代码


看看有没有dhcp-option-force开头的行
如有,执行下面的排错步骤。如没有,检查U盘目录结构,U盘是否被路由器识别。

2、暂时还没想到其他可能出现的问题,看回复补充。

附件中启动脚本的内容:(存档用)
  1. #!/bin/sh
  2. i=0
  3. while [ $i -le 20 ]; do
  4.       success_start_service=`nvram get success_start_service`
  5.       if [ "$success_start_service" == "1" ]; then
  6.               break
  7.       fi
  8.       i=$(($i+1))
  9.       echo "autorun APP: wait $i seconds...";
  10.       sleep 1
  11. done
  12. echo "dhcp-option=15" >> /etc/dnsmasq.conf
复制代码












评分

2

查看全部评分

发表于 2015-11-7 00:37 | 显示全部楼层
技术贴,膜拜一下
发表于 2015-11-7 10:16 | 显示全部楼层
能不能指定一个网口限定iptv组播数据,会不会导致广播风暴?
 楼主| 发表于 2015-11-7 15:04 | 显示全部楼层
威廉第三 发表于 2015-11-7 10:16
能不能指定一个网口限定iptv组播数据,会不会导致广播风暴?

光猫1号口绑定Internet,2号口什么也不绑,3号口和4号口绑IPTV。额外的网线连的光猫2号口。
不会有你担心的问题。
发表于 2015-11-7 15:06 | 显示全部楼层
现在的贝尔 RG2010 里的更新了的系统都无法破解了吧,还能改桥接吗?
 楼主| 发表于 2015-11-7 19:30 | 显示全部楼层
zeroxia 发表于 2015-11-7 15:06
现在的贝尔 RG2010 里的更新了的系统都无法破解了吧,还能改桥接吗?

升级以后是不能破解了。我找安装师傅要的超管密码
发表于 2015-11-7 19:55 | 显示全部楼层
楼主,核心的内容其实就是
dhcp-option-force=125,00:00:00:00:14:02:06:48:47:57:2d:43:54:0a:02:20:00:0b:02:00:55:0d:02:00:2e
dhcp-option-force=60,00:00:01:08:42:72:6f:61:64:63:6f:6d:02:03:43:50:45:03:08:45:38:52:4f:55:54:45:52:04:03:31:2e:30
理论上任何路由器只要能把这两个参数配进去,就能桥接了看4k iptv对吧?
 楼主| 发表于 2015-11-7 20:20 | 显示全部楼层
protosswei 发表于 2015-11-7 19:55
楼主,核心的内容其实就是
dhcp-option-force=125,00:00:00:00:14:02:06:48:47:57:2d:43:54:0a:02:20:00:0b ...

对。放dnsmasq的配置文件里
发表于 2015-11-7 20:56 | 显示全部楼层
技术贴版主理应加精。
发表于 2015-11-7 22:37 | 显示全部楼层
技术贴啊,明年搬家后申请宽带可能有用
谢谢楼主,马克~~~
发表于 2015-11-8 12:40 | 显示全部楼层
如果我没理解错,物理连接方式应该是:路由wan口——光猫lan1,路由任意lan口——光猫lan2,其中lan2不用设置任何绑定。4k iptv连路由任意lan口。对吗?
发表于 2015-11-8 16:23 | 显示全部楼层
lz我把路由器的LAN和光猫的lan相连后。路由器就一直出现
received packet on vlan1 with own address as source address
错误啊。
 楼主| 发表于 2015-11-8 17:32 | 显示全部楼层
protosswei 发表于 2015-11-8 12:40
如果我没理解错,物理连接方式应该是:路由wan口——光猫lan1,路由任意lan口——光猫lan2,其中lan2不用设 ...

4K IPTV连光猫绑定IPTV的3号和4号口。不是连路由器
发表于 2015-11-8 19:06 | 显示全部楼层
试了一下,貌似不行,路由器环路了?
 楼主| 发表于 2015-11-8 19:23 | 显示全部楼层
本帖最后由 zhao511117 于 2015-11-8 19:24 编辑
ribon 发表于 2015-11-8 19:06
试了一下,貌似不行,路由器环路了?

卡在哪步了?

路由器WAN口配置拨号之前,不要插路由器LAN-光猫LAN的级联线。
发表于 2015-11-8 20:09 | 显示全部楼层
路由器LAN连接光猫LAN后,网络瘫了,不能访问路由器,也无法INTERNET
发表于 2015-11-8 20:18 | 显示全部楼层
我的问题是,IPTV启动后提示网络故障,但是进入信息显示里面看到得到的ip是192.168.0.70,这个是68u设置的网段。也就是说iptv确实拿到了68u的DHCP。

但是从日志里面看到了很多 received packet on vlan1 with own address as source address
发表于 2015-11-8 23:35 | 显示全部楼层
飞雪尔 发表于 2015-11-8 20:18
我的问题是,IPTV启动后提示网络故障,但是进入信息显示里面看到得到的ip是192.168.0.70,这个是68u设置的 ...

我的r7000刷梅林也有这个问题,改成蕃茄就好了。
发表于 2015-11-8 23:37 | 显示全部楼层
zhao511117 发表于 2015-11-7 15:04
光猫1号口绑定Internet,2号口什么也不绑,3号口和4号口绑IPTV。额外的网线连的光猫2号口。
不会有你担心 ...

能贴下你光猫里这几个口的配置吗?
发表于 2015-11-8 23:41 | 显示全部楼层
protosswei 发表于 2015-11-8 23:35
我的r7000刷梅林也有这个问题,改成蕃茄就好了。

我用的是原厂固件。没用过merlin。要用第三方的才行?
发表于 2015-11-8 23:44 | 显示全部楼层
飞雪尔 发表于 2015-11-8 23:41
我用的是原厂固件。没用过merlin。要用第三方的才行?

本质上梅林和华硕原厂固件一样。我用了番茄就不会wan口掉线
发表于 2015-11-8 23:51 | 显示全部楼层
protosswei 发表于 2015-11-8 23:44
本质上梅林和华硕原厂固件一样。我用了番茄就不会wan口掉线

我不是掉线的问题。

按照lz的做法,我IPTV里面看到的ip信息确实是我的68u分配的ip,但是iptv还是现实网络故障,我telnet上去看了dhcp-option-force的参数也都有的。

这个时候除了iptv不可用,上网是没问题的
发表于 2015-11-8 23:56 | 显示全部楼层
飞雪尔 发表于 2015-11-8 23:51
我不是掉线的问题。

按照lz的做法,我IPTV里面看到的ip信息确实是我的68u分配的ip,但是iptv还是现实网 ...

我能看到iptv首页内容,但是看不了点播和直播。所以我等着lz贴光猫配置。
发表于 2015-11-9 09:25 | 显示全部楼层
protosswei 发表于 2015-11-8 23:56
我能看到iptv首页内容,但是看不了点播和直播。所以我等着lz贴光猫配置。 ...

其实我的方法别人有成功的,就是不知为什么你不行,可能是光猫型号和局端设置的问题。
发表于 2015-11-9 10:00 | 显示全部楼层
zhao511117 发表于 2015-11-8 19:23
卡在哪步了?

路由器WAN口配置拨号之前,不要插路由器LAN-光猫LAN的级联线。 ...

我的现象是网络故障,一启动IPTV就出现,IPTV是烽火的4K

光猫是 HGU421N v3,找人破解了超级密码,然后里面的iptv VLAN 85 绑定端口三,Internet绑定端口4,连接路由的线用的端口1。

IPTV能拿到68u分配的IP。
发表于 2015-11-9 10:33 | 显示全部楼层
lz你好,关于电信盒子的相关设置能截图么,那几个用户侧的拨号信息, 我的被我改的有点乱了,3Q
发表于 2015-11-9 10:38 | 显示全部楼层
error.JPG
附件不能下载,是不是必须注册帐号?
发表于 2015-11-9 11:11 | 显示全部楼层
没看懂这么操作的实际意义是什么?是为了4K机顶盒在家庭LAN内任意接口可用?但是貌似4K机顶盒还是接的IPTV的口啊。
我这个月刚刚申请100M套餐送了两年4K高清,明天过来安装,正好可以用的上,但真心没看明白什么目的。
 楼主| 发表于 2015-11-9 11:43 | 显示全部楼层
ribon 发表于 2015-11-8 20:09
路由器LAN连接光猫LAN后,网络瘫了,不能访问路由器,也无法INTERNET

你是什么机型?原厂固件么?
贴一下
ip link和brctl show的结果
 楼主| 发表于 2015-11-9 11:47 | 显示全部楼层
TO protosswei:
TO 飞雪尔:
你们不要想的太复杂了。我的光猫只动了改桥接和关DHCP。端口绑定我都没修改过。都是电信的默认配置。
建议你们这么测试下:
1、如果盒子能看IP地址的,看下能拿到专网的IP地址么?
2、把路由器LAN-光猫LAN的网线拔了,重新打开光猫的DHCP。其他的物理链接和配置不动。你们的IPTV能正常看么?你们上网正常,说明DHCP可以用。我觉得是你们端口绑定有问题。如果这样IPTV正常,建议你们重新检查光猫的配置。
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

小黑屋|手机版|Archiver|Chiphell ( 沪ICP备12027953号-5 )沪公网备310112100042806

GMT+8, 2019-10-19 02:45 , Processed in 0.017994 second(s), 17 queries , Gzip On, Redis On.

Powered by Discuz! X3.1

© 2007-2019 Chiphell.com All rights reserved.

快速回复 返回顶部 返回列表