OpenWrt 是一款非常优秀的软路由系统,通过安装插件,就可以实现普通路由器无法实现的扩展功能(特别是科学上网和广告屏蔽)。
家庭使用 OpenWrt 的方式通常是将主路由器的固件刷写安装 OpenWrt 系统,或是使用多网口的小主机安装 OpenWrt 系统再作为家用的主路由器。这些方法具有一定的局限性,首先是主路由器要支持刷机并且 OpenWrt 系统要有支持该芯片的固件; 其次是具有一定的技术能力,可以承受刷机不成功路由器变砖的风险;最后,即便是最简单的小主机方案,也需要另外增加一台设备,额外增加了成本。
其实我们可以通过 OpenWrt 虚拟机来实现路由功能,之前讨论过将该虚拟机作为网络内的旁路由设备,就是虚拟机网络桥接至家庭局域网,需要通过虚拟机代理上网的主机就将网关和 DNS 都设置成虚拟机的 IP,就相当于将网络请求发送给虚拟机,虚拟机再通过主路由器访问互联网,如果安装了科学上网插件,也是虚拟机通过主路由器连接至相应节点,只不过对于主机来说没有感觉罢了。旁路由虽然可用,但是需要自己设置 IP 地址和网关,实际使用起来相对麻烦。
既然有了 OpenWrt 的虚拟机,把它作为旁路由不如作为主路由来用,可以有效的避免网内主机网络设置的问题。本文将使用 VMWare 虚拟机软件,实例演示如何将 OpenWrt 虚拟机设置成主路由器设备。
目前家庭访问互联网的方式多是自购一台无线路由器,然后将这台路由器的 WAN口(广域网口)连接至运营商接入设备的对应端口,这个广域网口支持多种上网方式,比如静态 IP、DHCP 客户端以及 PPPoE 拨号上网等,这与运营商接入设备相对应。而路由器的 LAN口(局域网口)则设置了一个管理 IP ,这也是通过该路由器访问互联网的所有设备的网关,如果开启了 DHCP 功能,则家庭局域网内的设备都会自动分配与 LAN 处于同一网段的 IP 地址。至于 WiFi 信号,则可以理解为无线的 LAN 接口,与有线的 LAN 接口没有本质区别。
如果想把 OpenWrt 虚拟机作为主路由器来用,那么就需要把原来的路由器功能下降为接入交换机和 WiFi 信号的接入点,将虚拟机和运营商的网络接口同时连接至家用路由器的 LAN 口,以保证虚拟机可以实现主路由器功能。连接示意图如下:
图.1 OpenWrt 虚拟机作为家用主路由器连接示意
为了避免问题,可以先将家用路由器的 DHCP 功能关闭。
网络连接完成后,就可以创建虚拟机并设置其为主路由器了。
新建一个虚拟机,为了理解方便起见,为其添加两个网络接口,连接类型均设置为桥接模式,注意要把”复制物理网络连接状态(P)”勾选项勾选上,否则不能实现数据转发,当不了路由器。
图.2 OpenWrt 虚拟机网络设置
这两个网络接口一个作为 OpenWrt 的 WAN 口,负责与运营商的接入设备通信实现互联网连接,另一个作为 OpenWrt 的 LAN 口,负责局域网内设备的管理和地址分配等。
至于 OpenWrt 系统,则根据个人喜好自行选择即可,主要功能都是类似的。示例使用官方固件进行演示。
进入 OpenWrt 的管理界面,选择”网络”->”接口”,就可以进行 OpenWrt 网络配置管理了。
默认情况下,OpenWrt 只有一个接口,也就是对应的 LAN 接口或者被称为桥接接口,还需要将 WAN 接口添加至系统。点击”添加新接口”按钮,就会弹窗提示增加新的接口。输入接口名称并指定对应的网络适配器后,点击”创建接口”完成新接口的添加。
图.3 OpenWrt 系统添加新接口
新添加的 WAN 口用于配置访问互联网,示例使用的是静态地址,可以根据实际情况在协议下拉列表中选择。接口设备选择时指定实际的适配器(例如 eth0 或 eth1),已经被设置了的适配器会显示其对应的接口名称。创建接口时注意选择未被指定的接口,否则会引起网络故障。
对于示例的虚拟机,我们只创建了两个适配器,也就是对应的一个 WAN 口和一个 LAN 口,全部创建完成后,如下所示:
图.4 OpenWrt 网络接口设置
接口创建完成后,分别点击相应接口对应的”编辑”按钮,可以进行接口的详细设置。
对于 LAN 接口,设置好 IP 地址和子网掩码,网关留空即可;高级设置中可以在”使用自定义的 DNS 服务器”设置自定义的 DNS 服务器;防火墙设置中”创建/分配防火墙区域”中选择”lan”区域;DHCP服务器设置中启用DHCP服务。
对于 WAN 接口,根据实际上网情况设置好 IP 地址、子网掩码和网关;高级设置中”使用自定义的 DNS 服务器”设置自定义的 DNS 服务器;防火墙设置中”创建/分配防火墙区域”中选择”wan”区域;DHCP服务器设置不需要启动 DHCP服务,如果启用了,则钩选”忽略此接口”。
至此,OpenWrt 虚拟机就实现了主路由器的全部功能,可以进入概览页面查看连接至 OpenWrt 路由器终端的情况了。
对于此方案,需要特别说明的是:
1. 由于更改了家庭网络的连接拓扑,造成 OpenWrt 虚拟机和对应的宿主机不能关机,否则可能会断网
2. 此方案只在有线网络情况下做了测试,无线网络情况存在不确定性
3. 对于其他虚拟机软件,例如 Fusion 或者 Hyper-V,理论上只要支持接口的数据转发,就可以使用本方法
4. 如果运营商接入设备开启了 DHCP 功能,此时局域网内存在两个 DHCP 服务器同时起作用,终端有概率分配到运营商接入设备的 IP 地址,从而使 OpenWrt 路由功能失效,但是终端在虚拟关机后同样可以上网,而需要使用 OpenWrt 路由器时则手动配置到该网段才能正常使用。所以总体来说,互联网出口是静态 IP 和拨号上网时比较适用
总之,对于普通家用路由器,使用 OpenWrt 虚拟机作为主路由来畅快上网也不失为一种好方案。