软路由虚拟化部署和物理机直接部署这两种方案在前文对比过,只要性能允许,虚拟化方案可以额外多出一台可用服务器,无论是家庭网络里开启文件共享、还是公司环境里做应用服务器,都能获得非常大的收益。

    物理部署本身没有值得过多介绍的地方,拓扑可以参照前一篇软路由快速上手——方案介绍。而多拨、负载均衡、故障转移等需求的配置方式和虚拟化部署完全一样。

    上图是一个虚拟化平台创建虚拟机作为网关的软路由方案。其中,宿主机的wan口不需要做任何配置,对宿主机而言,这个接口没有任何用途,它的存在只是为虚拟机的wan口提供物理链路。

1. 硬件准备

    经典网络要求至少有两个网口,如果主板只有单网口,可以购置一张pcie的网卡来提供第二个网络连接。

    如果追求静音,可以到淘宝购买dc-atx电源,由电源适配器转出12V直流电,输入专门的电源模块给主板供电,不过要求适配器、电源板的功率能带得动整套平台的功耗。

    下图配置:H110,G3930,4G DDR4 2400,PCIE x1单千兆口网卡,16G硬盘(如果手动安装Linux + KVM,硬盘最小需要8G;如果安装proxmox,硬盘最小需要16G)。

    AMD平台推荐200GE/2200G+A320+4G内存+16G SSD的配置,拥有逆天的性价比。

    组网非常简单,只要将其中一个接口作为WAN,和光猫相连,另一个接口连接交换机即可。

2. 系统安装

    虚拟化部署的系统安装流程是:为宿主机安装操作系统 -> 虚拟化平台安装 -> 创建虚拟机。

2.1  宿主机操作系统有三种选择:Windows、Linux、集成虚拟化平台的操作系统(比如proxmox,但这本质上其实是Debian,仍属于Linux),安装过程就不赘述了。
2.2  不同操作系统,虚拟化平台的选择也不一样,Windows里可以安装服务器虚拟化的Hyper-v、桌面版的Vmware Workstation或者virtual box;Linux则推荐KVM(proxmox=Debian + KVM + 控制台,可以一步到位,把操作系统和虚拟化环境都部署好)。

2.3  安装好虚拟化软件以后,需要为每张网卡创建对应的桥接网络。宿主机的物理网卡,可自由选择由谁连接到WAN网络,由谁连接到LAN网络。一旦选好,网卡对应的虚拟网络便是WAN专用网络和LAN专用网络,角色不可再做变动(我的配置里选择了br1做WAN,br0做LAN)。

2.4  创建虚拟机之前,需要上传系统ISO,并加载到虚拟机的光驱中。创建虚拟机的时候,也要预留足够的硬盘空间(其实软路由系统对硬盘空间要求很小,一般2G就足够了)。最后添加两块网卡,分别桥接到宿主机的两块网卡上,如果需要多拨,则添加三块网卡,两块桥接到WAN虚拟网络,一块桥接到LAN虚拟网络。

3. 爱快软路由安装和常用设置

3.1 安装

    启动虚拟机,在启动界面选择由光驱启动,这时就会加载爱快软路由的安装程序,安装过程需要选择的地方不多,按照提示一步一步向下即可。
    除了前述提到的使用内置硬盘的部署方式,在物理机中安装爱快时,还可以从官网下载镜像文件烧录到U盘,直接用U盘当系统盘。

    如果内存小于4G,只能安装32位版本。

3.2 初始化

    安装完成后,接着就是系统初始化。首先要做的是在控制台中选择正确的网卡做LAN接口,然后为LAN接口设置管理地址(根据虚拟机配置中桥接到LAN网络的那张网卡的MAC地址,可以在控制台很容易辩认出来哪个接口是LAN),设置好管理地址后,剩下的工作均可在WEB完成。

以上两步完成,使用浏览器访问刚才设置的lan接口IP,即可进入web管理控制台,初始用户名和密码均为admin。

3.3 常用设置

3.3.1 设置WAN接口:

    登入web控制台后,会显示“系统概况”,点击灰色的网络接口(因为lan口已经在控制台中设置完成了,所以只需要绑定wan口),在网卡绑定界面配置空闲接口为WAN(如果虚拟机添加了多个WAN口,至少需要配置其中一个),并在后续界面中配置该接口的接入方式(一般家庭为ADSL/PPPoE,公司网络固定IP较为常见)。

3.3.2 DHCP

    DHCP服务器配置位于网络设置下,DHCP菜单的DHCP服务端,如果不是用于DHCP中继服务,客户端地址需要和LAN口IP位于同一网段。

3.3.3 静态路由和NAT

    静态路由功能一般用在多层网络环境或者多线接入环境(包括VPN)中,如果LAN侧只有一个网段,该功能不需要用到。

    菜单位置是:网络设置 -> 静态路由

    NAT映射、端口映射同样也在网络设置主菜单下面。

3.3.4 VPN客户端

    爱快软路由提供了丰富的VPN客户端功能,包括PPTP、L2TP、OpenVPN、IPSecVPN。

    菜单位置是:网络设置 -> VPN客户端

3.3.5 VPN服务端

爱快的VPN服务端藏得有点深,在认证计费 -> 本地认证服务中,支持PPTP、L2TP、OpenVPN。

3.3.6 其它

    行为管控:用于上网行为记录、行为管理(协议管控)、网址控制、URL劫持功能;

    安全设置:包括ACL规则(类似于防火墙的功能)和ARP绑定。   

    高级应用:包括DDNS、端口镜像等工具型应用。

4. pfSense安装和常用设置

4.1 安装

    pfSense安装过程非常简单,只要保持默认值,无限下一步直到提示Reboot为止。

4.2 初始化

    pfSense初始化流程和爱快差不多,为WAN/LAN绑定网卡,为Lan设置IP地址。

    通过菜单选项1,进入网卡绑定功能,设置em0为WAN口,em2为LAN口,em1为OPT接口(后续将它配置为第二WAN口)。

    通过菜单选项2,进入IP配置功能,为LAN接口配置正确的IP地址,这步操作完成后,即可通过网页访问管理后台(初始用户名admin,密码pfsense)。

    首次登录网页管理后台,会进行一系列初始设置:主机名、DNS、对时服务器和时区、WAN侧接入方式、LAN口地址(控制台中已经配置过,如果有变更需求,可以在这修改,否则保持默认),完成以后,就可以正式通过网页控制台进行配置了。

4.3 常用设置

4.3.1 设置WAN口

    从Interfaces菜单进入,选择对应接口,配置接入方式,保存即可。

    需要注意的是,WAN口配置需要在页面底部Reserved Networks小节中,勾上阻断私网地址和回环地址、阻断本地网段。

4.3.2 DHCP

    DHCP服务位于Services菜单下的DHCP Server配置中,配置项和其它DHCP服务没有什么特殊的地方:指定地址池、起始和终止IP、DNS、网关。

4.3.3 静态路由

    静态路由位于System菜单下,Routing配置页的Static Routes标签。

4.3.4 NAT

    因为pfSense是一款严格意义上的防火墙,所以它在做端口映射的时候,不仅需要添加映射条目(Firewall -> NAT -> Port Forward),还需要添加防火墙策略(Firewall -> Rules -> WAN)放行该映射。

    不过好在它提供了一个策略自动生成的功能,在添加映射的时候,只要选择Filter rule association下拉菜单中的Add associated filter rule,即可创建一条与当前映射相关联的防火墙策略。

4.3.5 VPN

    作为一款防火墙产品,它并不支持L2TP客户端,只能提供L2TP服务端服务,这是一件非常奇怪的事,不过IPSEC和OpenVPN倒是正常都有。

5.多拨、负载和故障转移

5.1 爱快:多拨和网络负载

    网络负载的配置分两步进行:

5.1.1  多拨配置

    爱快的多拨既可以多账号多线多拨,同账号多线多拨,也可以单线多拨,这个功能抓住了用户痛点,省去了多线和交换机的投入。

    多线多拨配置很简单。在新建虚拟机的时候,添加多块网卡并绑定到宿主机WAN口所桥接的网络,并在进入管理后台以后,将每块WAN口网卡接入方式配置为PPPoE,并填入账号密码即可。

    单线多拨只用到一根网线,所以在创建虚拟机的时候只需添加一块网卡桥接到WAN网络。进入管理后台的接口配置页面后,设置接口的接入方式为基于物理网卡的混合模式,添加对应数量的拨号连接。

5.1.2  网络多线负载

    该功能位于流控分流 -> 多线负载,负载模式可以任意选择,推荐用户较多的时候,使用源IP,用户较少的时候使用源IP-目的IP,这样可以保证流量真正被拆分开,又能保证同一会话只从一个出口出站(因为本例多拨用的是同一账号,所以负载比例设置为1:1,如果是多条宽带进行多拨,建议按每条宽带的带宽比例设置负载比例)。

5.1.3  另两种通过源地址进行分流的方案

    多线负载通过简单的源、目的地址进行多条线路流量分担来利用多条线路的资源。在爱快中还有基于五元组、基于协议的分流方案,该功能位于流控分流 -> 协议分流/端口分流

    这两种分流方式都包含源地址这个配置项,只要在五元组配置中将其它四项全设为any,或在协议配置中,选中所有协议,再对源地址进行划分,并给每一组源地址分配不同的出口,也能实现分流的需求。

    下面是第二种和第三种分流方式进行相同的分流负载方案:IP段1固定使用adsl1,IP段2固定使用adsl2,IP段3同时使用adsl1和adsl2。

端口分流
协议分流

5.2  pfSense:多拨、分流和故障转移

5.2.1  多拨

 pfSense不支持爱快那种单线多拨,所以只能在创建虚拟机的时候添加满足要求所需的足够数量的WAN口。多拨操作只要按4.3.1小节的WAN口设置操作即可,为每个WAN口配置接入类型为PPPoE,并填写账号密码。

5.2.2  负载和故障转移方法一:负载模式GatewayGroup

    pfSense提供了一个叫GatewayGroup的对象,由多个Gateway组成,通过设置权重进行流量分摊或者故障转移。权重相等,则进行负载、权重不同,则工作在故障转移模式。

    配置步骤:

  • System -> Routing -> Gateway Groups菜单进入页面,创建Gateway Group,名字为Failover0,成员添加wan0和wan1,权重相等即为负载均衡模式,权重有大有小则为故障转移模式;
  • System -> Routing -> Gateways进入网关配置,设置Default Gateway为Failover0。

5.2.3  分流和故障转移方法二:防火墙LAN规则实现策略路由

    防火墙LAN策略在Firewall -> Rules -> Lan页面中配置。创建一条规则,按需求配置源地址、Advanced小节的Gateway,即可为不同源地址选择不同路由出口。以下配置效果为:192.168.3.0/25走FAILOVER0,192.168.3.128/25走FAILOVER1。

6. 运行应用

    其实这个无需演示,因为虚拟化方案的优势正如上一篇所指出的:宿主机运行的是常规操作系统,完全可以作为额外多出来的一台服务器来使用,直接正常在宿主机部署需要的任何应用即可,这是ESXi无法做到,或者说需要额外开启一台虚拟机出来才能做到的事。

    下面的截图是我的软路由宿主机上动态域名客户端的定时任务: