当一个普通路由器刷了定制的OpenWrt后,其功能即可大大的拓展,而且还可以自己配置好看的界面,瞬间升级成强大的智能路由器,使用各种开源软件,让普通路由器拥有几千元网络设备才具备的各种功能。
可是普通的路由器受CPU和内存的限制,而OP上各种功能扩展基本都靠CPU软处理,所以性能成为了巨大的瓶颈,而且wifi信号也会由于驱动的问题大打折扣。所以如果使用普通wifi路由器+软路由这种配置,即兼顾了性能,又照顾了信号。软路由有两种配置,一种是使用PC裸机,直接把OpenWrt安装到硬盘上或者U盘上。第二种是使用虚拟机,使用虚拟机的好处很多,比如成本低,网卡容易配置,起停方便等。
下面介绍使用恩山上lean发布的LEDE 17.01.2为基础,介绍一下如何使用免费的虚拟化工具virtualbox来配置软路由。
该固件已经内置了很多很有用的固件和路由加速,基本是开箱即用。作者本身发布了img和iso两种安装包。我是在linux下使用dd命令把img安装包直接刷到新的磁盘上,然后把这块磁盘插到新的虚拟机上实现部署的。同样的方法可以把img通过dd刷到U盘上,然后物理机使用U盘引导使用。
在安装了lean原版的LEDE到虚拟机后,我又安装了dnsforwarder,haproxy和ssrr等工具,因为lean上面的酸酸乳不支持WAN区域的路由。
下载虚拟机的导出文件:https://download.csdn.net/download/lvshaorong/10523901
下载lean的原版IMG:http://www.right.com.cn/FORUM/forum.php?mod=viewthread&tid=252795
首先我们通过virtualbox的虚拟机导入工具进行导入,注意你的宿主机架构最好是X64
然后选择下载好的ova文件,勾选重设MAC地址
然后我们要配置一下网卡,需要两块网卡,一块连接公网路由器,一块连接虚拟内网。
在路由器上刷入OpenWrt之后,由于路由器一般只有一块网卡,所以内外网的划分是通过VLAN实现的,使用ifconfig会看到有eth0.0 eth0.1 eth0.2这样的VLAN,一般2.4G和5G使用不同的VLAN,WAN区域使用单独的VLAN,所以说wifi路由器其实实际上看一看做一个三层交换机。而在virtualbox中我们可以自由的添加不同的物理网卡,所以就不需要费劲划分vlan了,我们只需设置两块网卡,第一块是LAN区域的网卡,这一块网卡是供我们登录路由器web后台配置路由器使用的,需要我们在virtualbox里单独设置一个host-only网卡,另一块桥接物理网卡,通过DHCP从宿主机的上游路由器获得IP地址并上网。
下面我们先创建LAN区域的网卡,注意这块网卡是一个host-only的虚拟网卡,关闭DHCP功能,并设置网段为192.168.1.1/24,并把宿主机的IP设置为192.168.1.200,因为192.168.1.1要留给OpenWrt使用,注意你的宿主机所在的网络不能是192.168.1.*这样的,如果是的话,请修改你宿主机使用的路由器。方法如下图
首先点击左上角“管理”-“主机网络管理器”,点击创建
创建时要注意一下几点
然后我们LAN区域网卡就配置好了。
而WAN区域网卡,直接桥接我宿主机的无线网卡,然后上游的路由器会自动的给我们的虚拟机一个上网IP。右击虚拟机选择“设置”,在左边找到“网络”然后添加两块网卡。按照从左到又的顺序,第一块网卡是我们上面创建的host-only虚拟网卡,第二块网卡是桥接物理能上网的网卡,顺序不能乱,不然OpenWrt会用错网卡,如下
然后我们就可以启动虚拟机了,启动之后,通过浏览器访问http://192.168.1.1登录后台
默认用户名和密码是root/password
此时你是使用宿主机的192.168.1.200访问的软路由的192.168.1.1的LAN地址。下面我们看看WAN区域配置好了么
我的上游路由器是个小米wifi路由器,使用的网段是192.168.31.*,我的宿主机被分配的地址是192.168.31.84,我们通过命令看看虚拟机分配到了什么地址
root@LEDE:~# ifconfig
br-lan Link encap:Ethernet HWaddr 08:00:27:15:45:3F
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fd51:5634:dc22::1/60 Scope:Global
inet6 addr: fe80::a00:27ff:fe15:453f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:554 errors:0 dropped:0 overruns:0 frame:0
TX packets:536 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:53548 (52.2 KiB) TX bytes:173628 (169.5 KiB)
eth0 Link encap:Ethernet HWaddr 08:00:27:15:45:3F
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:554 errors:0 dropped:0 overruns:0 frame:0
TX packets:578 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:61304 (59.8 KiB) TX bytes:187917 (183.5 KiB)
eth1 Link encap:Ethernet HWaddr 08:00:27:6B:6A:CF
inet addr:192.168.31.36 Bcast:192.168.31.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe6b:6acf/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:867 errors:0 dropped:0 overruns:0 frame:0
TX packets:97 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:55892 (54.5 KiB) TX bytes:23489 (22.9 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:231 errors:0 dropped:0 overruns:0 frame:0
TX packets:231 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:16737 (16.3 KiB) TX bytes:16737 (16.3 KiB)
从上面可以看出,eth0是LAN区域的网卡,只是通过了一个网桥br-lan0分配的LAN IP,然后eth1是WAN区域的网卡。本身你直接安装Lean的img包后是没有WAN区域的网卡的,因为WAN和LAN共用一块网卡并且使用VLAN来区分,而我后来有手动创建了WAN区域绑定的网卡,所以导入ova包之后能看到eth1,并且该eth1是自动获取上级路由器分配的IP地址,所以开箱即用,能直接ping通百度。
注:如果使用Lean原版img安装后需要创建新的WAN区域,并绑定物理网卡eth1,如下
另外还可以看出,由于WAN的网卡是桥接的宿主机物理网卡,所以虚拟机的WAN地址和宿主机的上网地址是平级的,都是192.168.31.*,所以连接在同一个物理路由器下面的设备都能够访问我们的软路由,也就是说,通过再架设一个wifi路由器并且以软路由为网关的设想可以实现了。
下面就介绍如何让我们的手机电脑等设备通过软路由来上网。首先我们知道路由器的LAN区域由于是虚拟网卡,所以除了宿主机以外的其他设备比如手机等都无法接入LAN区域,但是手机等可以从上级路由器那里接入软路由的WAN区域,所以我们把软路由的WAN区域的路由功能打开,然后在上级的内网中架设一个路由器,把网关指定为我们的软路由即可。
正常情况下,OpenWrt不允许开放WAN区域,但是可以通过修改防火墙设置改变,这一点我在虚拟机模板里面已经设置好了,如下
于是我们只要把内网其他手机电脑等设备,甚至安装一个新的无线路由器,的网关地址设置为该软路由的地址,就可以通过软路由上网了,网络拓扑图如下