0x01 前言

一直以来我都通过运行在KVM上的一台centos 7虚拟机实现网关功能,运行诸如PPPoE、DHCP、DNS、NTP等功能。但因为需要经常更换DHCP配置、DNS记录等,在没有GUI界面的情况下变得很不方便。而且我想实现的QOS功能,在shell界面上操作也显得繁琐。

在过去的一周,我尝试了opnsense、panabit、zeroshell与pfsense等软路由系统,经过测试后觉得pfsense很符合我的需求。再经过2天的正常使用后,在这里记录下安装配置过程。

0x02 准备

pfsense是一款基于FreeBSD的路由防火墙系统,而且是完全开源免费的。这款软路由系统不仅仅适用于家庭环境,对于中小型,甚至大型企业也一样适用。同时,pfsense还贩售路由器硬件,下面是他们的官方网站:

因为这款软路由是基于FreeBSD,同时可以在控制界面中安装其他定制化的软件,所以硬盘容量最好能在3GB以上。系统同时支持 i386 (32-bit) 和 amd64 (64-bit) ,下载安装镜像的时候请注意根据你的CPU架构进行选择。以下是下载地址:

要注意的是,因为下载源服务器在国外,下载速度较为缓慢,要耐心等待。

另外,这系统还支持多路WAN接入与负载均衡,但我目前没有双WAN资源,但过几天我尝试在测试环境中进行双WAN的配置与测试。在只有一路WAN接入时,你的设备需要2个网口,应用于局域网的网口的带宽最好是1000M或更高。

0x03 安装

因为我是将这个系统装在虚拟机上,不但要接入电信的网络,还需要给局域网提供服务。因此需要将服务器上的两个网口直接映射到这虚拟机上。为了能更方便地查看我的命令,我给命令添加上了注释,安装命令如下:

virt-install \
--name pfsense-test \ #虚拟机域名
--memory 2048 \ #分配2GiB内存
--vcpus sockets=1,cores=1,threads=2 \ #虚拟1颗一核心线程的CPU
--disk device=cdrom,path=/usr/local/kvm/iso/pfSense-CE-2.3.2-RELEASE-amd64.iso \ #定义安装镜像路径
--disk path=/usr/local/kvm/images/pfsense.img,size=5,bus=virtio \ #定义系统盘保存路径
--network type=direct,source=enp2s0f1,model=virtio \ #将网卡1映射到虚拟机上
--network type=direct,source=enp3s0f1,model=virtio \ #将网卡2映射到虚拟机上
--graphics vnc,listen=0.0.0.0,port=20003 \ #定义VNC
--video cirrus \ #定义虚拟显卡
--input tablet,bus=usb \ #定义输入设备

启动后界面如下:

1478163864

选择1即可进入安装界面,紧接着是硬盘格式化警告:

1478163865 1478163866

在这里要注意:如果你需要通过浏览器管理系统,请选择standard kernel、若需要通过shell管理,请选择Embedded Kernel:

1478163867

安装完成后即可重启:

1478163868

0x04 预配置

重启完成后需要做如下预配置:

  1. 是否配置vlan
  2. 选择WAN端口
  3. 选择LAN端口

如下图:

1478163870 1478163871 1478163872

1478163873 1478163874

完成后即可通过连接LAN口并通过浏览器并输入LAN IP地址进行管理:

1478163875

默认用户名和密码如下:

  • 用户名:admin
  • 密码:pfsense

0x05 拨号上网

我们家庭一般需要拨号才能上网,首先要配置PPPoE拨号。进入interface > WAN 设置:

1478163876

  1. IPv4 Configuration Type 选择PPPoE
  2. MTU 填写1480
  3. Username 填写宽带账号
  4. Password 填写宽带密码
  5. Dial on demand 在守护精灵中启动PPPoE程序,提供短线重连功能
  6. Idle timeout 拨号超时时间,默认为30秒

建议将以下两个选项勾选:

  1. Block private networks and loopback addresses 禁止私有地址从WAN口链入,如果有公网地址的情况下,是不会有私有地址在网络上传播的;
  2. Block bogon networks 禁止尚未分配的IP地址从WAN口链入。

完成后即可通过status > interface查看PPPoE的状态:

1478163877

0x06 结语

一切顺利的情况下已经可以上网了。这两天我继续编写DHCP、DNS、和QOS的相关设置过程。

0x07 相关视频

https://www.bilibili.com/video/av15823557/