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 \ #定义输入设备
启动后界面如下:
选择1即可进入安装界面,紧接着是硬盘格式化警告:
在这里要注意:如果你需要通过浏览器管理系统,请选择standard kernel、若需要通过shell管理,请选择Embedded Kernel:
安装完成后即可重启:
0x04 预配置
重启完成后需要做如下预配置:
- 是否配置vlan
- 选择WAN端口
- 选择LAN端口
如下图:
完成后即可通过连接LAN口并通过浏览器并输入LAN IP地址进行管理:
默认用户名和密码如下:
- 用户名:admin
- 密码:pfsense
0x05 拨号上网
我们家庭一般需要拨号才能上网,首先要配置PPPoE拨号。进入interface > WAN 设置:
- IPv4 Configuration Type 选择PPPoE
- MTU 填写1480
- Username 填写宽带账号
- Password 填写宽带密码
- Dial on demand 在守护精灵中启动PPPoE程序,提供短线重连功能
- Idle timeout 拨号超时时间,默认为30秒
建议将以下两个选项勾选:
- Block private networks and loopback addresses 禁止私有地址从WAN口链入,如果有公网地址的情况下,是不会有私有地址在网络上传播的;
- Block bogon networks 禁止尚未分配的IP地址从WAN口链入。
完成后即可通过status > interface查看PPPoE的状态:
0x06 结语
一切顺利的情况下已经可以上网了。这两天我继续编写DHCP、DNS、和QOS的相关设置过程。
0x07 相关视频
https://www.bilibili.com/video/av15823557/