关闭

OpenWrt路由器macvlan单线多拨的方法

标签: openwrt负载均衡运营商宽带
4840人阅读 评论(0) 收藏 举报

之前写过一篇文章《OpwnWrt 路由器MWAN3多线多拨实现方法》,介绍了如何在具备多根入室宽带网线的情况下实现网络带宽的叠加。多线多拨一般应用在多个不同运营商线路的负载均衡场景中,那么对于同一运营商,多个帐号又该如何实现呢?

比如有如下一个应用场景,我有两个联通的宽带帐号,在普通情况下,我会购买两个路由器,两个卧室可能都有宽带接口,于是我每个卧室放一个路由器,分别通过不同的PPPOE帐号密码进行拨号,两个卧室的公网IP都不同。这是在没有OpenWrt路由器时候的使用方法,但是这样无法将两个宽带帐号的带宽叠加,如果我两个帐号都是20兆宽带,那么每次我下载最多就跑到20M,现在我想利用我两个宽带帐号的优势实现40兆宽带,那么应该怎么做呢?

首先我们依然可以用以前介绍的多线多拨的方式,不过首先我们需要一个交换机,把单根的入户网线通过交换机分出两个来接到路由器的两个WAN口上,再在路由器上对每个WAN口分别PPPOE拨号,获得两个不同的公网IP,然后再使用mwan3进行路由表级的负载均衡。实现方法可以去看《OpwnWrt 路由器MWAN3多线多拨实现方法》这篇文章。

那么什么叫做“单线多拨”呢。由于我们是同一个运营商的同一根网线进行拨号,所以我们没有必要在路由器上搞出两个WAN口,也不需要再买个交换机,直接在同一个WAN口拨号两次就可以了,路由器内部搞一个虚拟交换机,通过划分VLAN的方式解决。所以通过单线多拨能节省我们一个交换机的钱。

单线多拨的大体实现步骤是这样的

1、新建两个虚拟的vlan,以公网的网卡为端口

2、在两个vlan中分别使用不同的PPPOE帐号密码进行拨号,获得两个不同的公网IP

3、通过mwan3实现路由表级的负载均衡


首先第一步虚拟vlan是通过kmod-macvlan这个模块实现的,换句话说macvlan为我们提供了一个虚拟交换机,省下了我们一个小交换机的钱。具体方法如下

安装opkg update

opkg install kmod-macvlan mwan3 luci-app-mwan3

1、删除OP系统原WAN接口,比如WAN和WAN6两个接口,只保留LAN接口,删完以后的配置截图如下:


在LEDE系统中,如果把所有桥接WAN口的接口都删掉后,我们会丢失掉连接外网的物理网卡eth0.2,在ifconfig中就看不到了,此时我们就无法在eth0.2这个外网物理网卡上部署虚拟vlan了

所以第一步我们要把eth0.2这块网卡找回来。有人会问那么我们之前不删除原来OP默认的WAN和WAN6接口不就好了?答案是不行的,因为OP默认的WAN接口是桥接eth0.2的,只要有任何一个接口桥接eth0.2我们之后新建的vlan就不可能拨号成功,所以WAN接口必须删除。那么我们又如何找回eth0.2呢,方法就是新建一个接口,协议选择“不配置协议”即可,这里我把这个专门用来召唤eth0.2接口的接口命名为interface如下图

注意最重要的是“包括一下接口”选择“eth0.2”,不要忘记选择“开机自动运行”,不要勾选“桥接接口”


防火墙选择“wan”

这样我们的eth0.2就回来了,截图如下

下面我们就可以在eth0.2的上面建立vlan了,执行如下代码建立vth0和vth1两个vlan

ip link add link eth0.2 name vth0 type macvlan
ifconfig vth0 up

ip link add link eth0.2 name vth1 type macvlan
ifconfig vth1 up

然后使用ifconfig就能发现我们又多了两个虚拟接口,如下

下面就可以在vth0和vth1上面设置拨号了,所以我们新建WAN口,选择PPPOE协议,填好第一个帐号密码

注意为了之后路由表的负载均衡配置,我们每一个虚拟wan的metric值(网关跃点)都要不同,注意别忘了勾选“开机自动运行”

然后对接我们刚刚新建的vth0


防火墙一定要选择wan区域

然后我们点击“保存&应用”,就会发现它已经自动拨号了,获得了第一个公网IP地址

这样一拨就完成了,下面我们只需要再新建一个wan1接口,对接vth1虚拟vlan,然后其他的和wan0一样即可,注意这里的PPPOE帐号,metric(网关跃点)要与wan0不同



点击“保存&应用"后会发现wan1也自动拨号成功了,获得了第二个公网IP(下图的wan应该为wan0)

有了这两个wan口之后基本就成功一大半了,剩下的步骤可以按照《OpwnWrt 路由器MWAN3多线多拨实现方法》文章里介绍的通过mwan3进行负载均衡,一模一样所以就不多赘述了。

但是要注意vth0和vth1由于是我们使用shell命令建立的虚拟vlan,所以路由器重启之后就会失效了,所以我们需要在路由器开机的时候自动添加这两个vlan,方法就是把上面添加vlan的语句放到rc.local里执行


肯定有人会问,如果没有两个不同的PPPOE帐号,只有一个能不能拨两次。这个问题要看运营商怎么配置了,有些地区,当然很罕见,用同一个PPPOE帐号可以先后拨号并都能拨上,这样你和你的邻居就可以共用同一个帐号使用宽带了,当然这种情况不多。还有一种是在宽带的签约的时候就签两个以上的session,这样你和你的邻居就可以使用同一个PPPOE帐号任意的上网了。并且如果使用上面的单线多拨的时候,vth0和th1的帐号密码可以相同,并且都能拨上号。

当然更多的时候你使用同一个帐号密码,vth0和vth1只能拨通一个,只获得一个IP,如下图,但此时可以通过一种叫“并发多拨”的技术强制进行拨号,原理就是两个拨号进程同时执行,时间要控制的非常精确,不要让服务器发现你是“一先一后”进行拨号,当然由于精度要非常高,一次往往难以拨成,一般要通过写个小脚本重复拨号多次才能成功。这种拨号不仅拨的慢,而且违反了和运营商的合同约定,属于薅社会主义羊毛的行为,不推荐使用,网上有这种并发多拨的固件,所以我这里就不详细介绍了。





0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:433611次
    • 积分:5055
    • 等级:
    • 排名:第6147名
    • 原创:143篇
    • 转载:0篇
    • 译文:1篇
    • 评论:188条
    最新评论