-
WR720N安装Openwrt–单线多拨
单线多拨是一个很诱人的东西,之前听都没听说过。我刷Openwrt的初衷比较简单,就是折腾一下linux系统,顺便做做文件服务器什么的。但是在论坛里面看了一下,发现好多人刷Openwrt的主要的目的,一个是翻墙,还有一个就是这个单线多拨了。因为之前一点都不了解,Google了一下,才发现,这个功能确实看起来是那么的诱人! 简单的说,多拨的概念是,一个路由器能同时连接多个ISP,从而使得带宽能够得到叠加。比如说家里面开通了一条电信的宽带,又开通了一个联通的宽带,那么路由器就可以用一个网口接电信的线路,另外一个网口接联通的线路,如果路由器支持多拨的话,那么这两条线路的带宽就可以叠加,家里的上网速度就嗖嗖嗖的上去了。除了这个功能之外,还可以做负载均衡,特定的流量走特定的线路之类的事情。这样的情形,应该叫做多线多拨。 不过,这种同时开通几个宽带的事情,不知道企业里面会不会做,家庭用户应该是不会这样做的吧,有这个必要吗?太能折腾了吧。 多线多拨,对于只是用来上上网的家庭用户的话,只要不是吃饱了撑着,实在没事干,基本上是没有这个需求的。但是如果是单线多拨呢?我觉得只要大家了解了这是干嘛的,估计立马会噌的一下血压升高,脑门发烫,忍不住咽个不自觉留下的口水。好吧,也不至于都这么的x丝,可能只有我是这样的。单线多拨的概念是,在同一个ISP链路上,同时建立多个连接。这实际上并不是一个什么新奇的东西,我们家用的电信的宽带,在没有破解电信猫之前,电信提供的服务是很没意思的,它限制使用用户的数量,只允许家里面4个设备同时上网,每个设备上网的话都需要单独拨号。这种情况实际上就是在一条链路上建了多个PPPOE的连接。只不过后来我们家的电信猫被破解了,电信猫改成了路由模式之后,就不需要每个设备单独拨号了。这里说这个,只是说明单线多拨什么的,其实也没有什么特殊的地方,一直以来,一条物理链路上都是允许建立多个逻辑链路的。但是如果跟刚才举的那个例子对比,单线多拨有一个特殊的地方,那就是,同样是建立多个pppoe的连接,刚才举的例子是,每个设备都只能建立一个自己的pppoe连接,而单线多拨是在同一个设备上(路由器)建立了多个pppoe的连接! 在刷了Openwrt的路由器上,是有软件能够实现这个单线多拨的功能的。但是,多拨了,带宽就一定能叠加吗?这可不一定。我们家宽带是50M的,那我来弄个10拨,同时建10个pppoe连接,那带宽就能到500M吗?太牛逼了吧。一般正常的情况下,大多数的多拨是起不了作用的,因为ISP也不是傻叉,哪有这好事?但是根据网上的说法,在某些时候,某些城市,某些运营商,由于自己的网络配置的问题,多拨就会产生梦寐以求的带宽能叠加的效果!所以,这个单线多拨能不能成功实现带宽叠加,主要不是看技术,拼运气,拼人品,才是最重要的! 上网搜搜,就会发现,有一种说法是,如果端口速度和签约速率不匹配,那么,多拨速率叠加就是可能的。所谓签约速率,就是我们跟ISP签约的时候,告诉我们的速率,比如我们家原来是电信的4M宽带,现在老用户免费升级到了50M。端口速率是我们终端用户不知道的一个运营商内部设置的参数,比如说100M。如果端口速率大于签约速率的话,那么多拨速率叠加就是可能的。 上面的这个说法,不知道是真是假。不管怎么样,反正是拼人品的事,怎么着也得先折腾折腾,说不定就成了呢?所以,先不管这个不可控的因素,咱可以先来研究研究技术上,怎么实现多拨,其他的丢给现实去吧。 关于openwrt上的多拨,实际上有好多个方案。不同的人开发了好几款不同的软件,比如NWan,MWan,MutiWan,M-Route(摘自google…),都能实现单线多拨。我没有研究比较过所有的这几个软件,只使用过mwan3。从我的WR720N的表现来说,mwan3是可以正常工作的。已经记不清楚为什么使用mwan3这个软件了,可能是openwrt的wiki上有关于这个工具的介绍吧。然后我记得在openwrt的论坛里面,这个软件的作者也对这个软件的原理和使用做了比较详细的说明,觉得比较靠谱。 首先mwan3是由openwrt论坛上的一个叫做Adze的用户发布的,我不太了解历史,这个人应该之前已经发布了mwan2软件,mwan3是他发布的最新版本。参考这个链接,里面有Adze对自己的这个软件的描述。我之前也看了他的这个帖子,对软件的基本原来有了一点大概的了解。 实际上mwan3这个软件,并不仅仅局限于用于单线多拨,从Adze的描述来看,mwan3实际上主要是应用于多线多拨,也就是我们一开头描述的那种情况。并且带了一系列复杂的配置参数,主要是应付不同的应用场景的。它采用的技术,就是功能非常强大的linux策略路(ip工具)加上iptables这两个牛逼的东东。根据不同的配置,mwan3能够实现各种各样的流量分流,负载均衡,QOS等等复杂的功能。针对我们的单线多拨需求,实际上仅仅使用了mwan3提供的负载均衡功能。 说到底,要实现单线多拨,我们需要在openwrt上做些什么?其实说起来也不复杂,基本的需求就三个。 在一个物理网口上虚拟出多个“逻辑”网口 每个“逻辑”网口单独拨号各自建立跟ISP的连接 多个“逻辑”网口上建立的多个连接之间做负载均衡 需要做的事情就是上面列出来的这么多,而mwan3所起的作用就是上面的第三个,做负载均衡。 操作的话按照下面的流程来,基本上是参考的恩山论坛上的叫worker的会员提供的操作手册来操作的,参考这个链接,worker还提供了一个pdf版本的操作手册,在链接上应该能够下载到,他已经把整个流程说的很清楚了。 第一步:安装相应的软件包 安装相应的软件模块ip/macvlan/mwan3 # opkg update # opkg install ip kmod-macvlan mwan3,luci-app-mwan3 ip工具包是基本的软件包,应该是自带的(记不清了),在我们这个需求里面,它主要提供网络配置和策略路由功能,macvlan模块主要提供虚拟网卡功能,mwan3提供负载均衡功能。luci-app-mwan3是mwan3的图形化管理工具。 第二步:创建多个虚拟网卡 使用下面的命令创建一个新的虚拟网卡并激活它。 # ip link add link eth0 name macvlan0 type macvlan # ifconfig macvlan0 hw ether FE:BC:51:C4:0A:23 # ifconfig macvlan0 up 其中eth0需要换成路由器上实际的对外的网口(正常的话应该也是eth0),macvlan0就是新生成的虚拟网卡的名称,可以随便命令,还有ether参数,虚拟网卡的以太网的地址,随便给一个就行了。这样,一个虚拟网卡就生成好。 接下来,还可以用同样的方法生成多个虚拟网卡,就看我们需要几拨了。我的WR720N使用了三拨,所以使用的命令最终是下面的这样。 # ip link…