pfSense QoS IDS
pfSense QoS IDS
来源 https://blanboom.org/2018/pfsense-setup/
之前我使用的无线路由器是 RT1900ac,其内置了 QoS 和 IDS/IPS 功能,但由于 CPU 性能有限,在百兆宽带的情况下,两者均会对网络性能造成一定的影响。
前段时间,群晖在 DSM 中推出了 Virtual Machine Manager 工具,可以在 NAS 中运行虚拟机。由于我的 NAS 中恰好有两个以太网接口,就准备在 NAS 中,通过虚拟机实现软路由,并体验一下这两项功能。
简单了解和试用 RouterOS, OpenWrt x86, VyOS, pfSense 等软路由系统后,考虑到功能丰富程度和易用性,最终选择了 pfSense.
本文主要记录我的 pfSense 关键配置。由于大多数配置在网上都能找到完整的配置步骤,文章中将不会过于详细地介绍配置步骤。

通过 ELK Stack 收集并显示路由器中的日志

我的家庭网络拓扑图
QoS

家中的 NAS 上经常进行 PT 下载,另外还有一台迅雷的玩客云,两个设备经常占满上传带宽。使用 RT1900ac 路由器的时候,想开 QoS,降低 BT/PT 协议、以及玩客云设备的优先级,但发现打开 QoS 之后,CPU 负载过高,甚至影响到了整体网速。
对于软路由来说,性能就不会是大问题了。在 pfSense 上,我首先尝试了使用 FAIRQ + CoDel 的方式,来模拟 fq_codel 实现流量整形,而不需要手动配置复杂的规则。如果体验一段时间后,发现效果不太理想,再尝试手动配置规则。
参考资料:
- HOW I MAXIMIZED THE SPEED OF MY NON-GIGABIT INTERNET CONNECTION (我的配置主要参考本文)
- 可能是家庭路由里最好的QoS——在线游戏者的福音
- Playing with fq_codel in 2.4 (pfSense 采用的 FreeBSD 内核已支持 fq_codel,但 UI 上暂时无法设置。考虑到稳定性等因素,我这次暂不手动设置)
- Traffic shaping/prioritization in PfSense
- Topic: Traffic shaper question
- QoS – Hack Sphere Labs Wiki
- CODELQ: PFSENSE
- Bufferbloat.net
- QUEUEING IN THE LINUX NETWORK STACK
- Controlling Queue Delay
Suricata IDS

Suricata 基础设置
Suricata 是一款 IDS/IPS 工具,能够检测网络中可疑的流量,例如下载恶意软件、端口扫描等。在 RT1900ac 上,Intrusion Prevention 工具也是基于 Suricata 的,但由于这款路由器内存太小,运行后占用资源过多,影响网速。
由于 pfSense 相对于 RouterOS 等操作系统,更侧重于防火墙,所以已经有功能较为全面的 Suricata 软件包,除了命令行工具外,还能在网页上方便地进行配置、更新规则、查看告警等。安装后即可使用。
参考资料:
使用 Kibana 可视化 Suricata 日志
RT1900ac 上的 Intrusion Prevention,拥有比较漂亮的 GUI 界面,能够将 Suricata 状态信息、攻击来源等以直观的形式显示出来。对于 pfSense,想要这样的功能,就需要其他工具了。
经过查找,我发现了 kibana 工具,能够分析 Suricata 的日志信息,并对日志信息进行可视化。初步看来,其可视化的界面效果比 Intrusion Prevention 还要好。
由于 kibana 及相关的工具安装较为复杂,暂时没有可以一键使用的 Docker 镜像,所以暂时还没有配置安装完毕。准备在 NAS 上再开一台 Ubuntu Server 虚拟机,运行 kibana,并尝试在后面有时间的时候,制作一个整合了 Syslog Server、ELK Stack 的 Docker 镜像,使 kibana 直接在 Docker 容器中运行。
Update(2018-06-15):
已制作了一个 Docker 镜像,能够直接收集 pfSense 和 Suricata 的日志信息,并可视化。具体请参考:https://github.com/blanboom/docker-elk-suricata
参考资料:
- pf (Firewall logs w/Suricata) + Elasticsearch + Logstash + Kibana
- Pfsense, Suricata and Kibana
- PFSense Snort Logstash
- StamusNetworks/Amsterdam: Docker based Suricata, Elasticsearch, Logstash, Kibana, Scirius aka SELKS
- Containerizing my NSM stack — Docker, Suricata and ELK
- Elasticstack (ELK), Suricata and pfSense Firewall – Part 2: Elasticstack Installation and Config
- pf (Firewall logs w/Suricata) + Elasticsearch + Logstash + Kibana
- sebp/elk – Docker Hub (适用于 Synology NAS 的版本:andig/syno-elk-docker)
流量监控

ntopng 控制面板
在我的 pfSense 中,安装有 ntopng 和 bandwidthd,用于监控网络中各个设备的流量。其中,bandwidthd 用于快速查看各设备的流量使用情况,ntopng 则提供了更为详细的流量使用信息。
NAT 设置

对于部分需要在内外网使用同一个 IP 访问的服务,需要在内网 LAN 口,通过 WAN 口 IP 地址,访问已经映射到公网的服务。对于之前的路由器,默认就可以在 LAN 口直接访问 WAN 口 IP,但在 pfSense 中,需要做一下特殊的设置,具体见这篇文章:
=========== End
pfSense QoS IDS的更多相关文章
- pfsense 企业应用实例
从萌生更换公司网关的想法,到选择.测试.部署陆陆续续用时两个月有余.选择的标准是open and free.这期间不断在查阅一些资料,测试了7.8个各开源防火墙产品.这些产品中大多是基于linux,少 ...
- pfsense下的流量管理(转)
http://www.pppei.net/blog/post/331 在作流量管理时,这些概念很重要,不要迷失.. 这里再对Limiter 的源地址和目的地址做个说明,因为limiter是被应用在La ...
- 提升网速的路由器优化方法(UPnP、QoS、MTU、交换机模式、无线中继)
在上一篇<为什么房间的 Wi-Fi 信号这么差>中,猫哥从微波炉.相对论.人存原理出发,介绍了影响 Wi-Fi 信号强弱的几大因素,接下来猫哥再给大家介绍几种不用升级带宽套餐也能提升网速的 ...
- MongoDB replica set IDs do not match
在搭建MongoDB(版本 3.2.9)的Replica Set时,使用 rs.status() 查看Replica Set的状态,发现一个成员异常:replica set IDs do not ma ...
- java.lang.ClassCastException: org.slf4j.impl.Log4jLoggerFactory cannot be cast to ch.qos.logback.classic.LoggerContext问题原因及解决方法
一.错误信息 java.lang.ClassCastException: org.slf4j.impl.Log4jLoggerFactory cannot be cast to ch.qos.logb ...
- H3C qos 简单配置
qos 有三种服务模型 Best-Effort service(尽力而为服务模型) Integrated service(综合服务模型,简称Int-Serv) Differentiated servi ...
- rabbitmq qos prefetch count的设置与作用
因为原来使用了MQ作为rpc机制,随着客户交易量越来越大,很多服务器推送行情的压力很大,最近打算重写为批量模式,又重新看了下qos和prefetch设置的作用以确定优化的具体细节. 消费者在开启ack ...
- iOS不同IDS说明
1.Vindor标识符 identifierForVendor 一个英文字符串,对于相同的产品商(这里指com.zhang.*,也就是前缀一样),其唯一的标识设备. * 这个值对于相同的产品商在相同 ...
- 实时视频应用之QoS关键技术分析
转自:http://www.aiweibang.com/m/detail/104476372.html?from=p 随着WebRTC标准的逐步推广,实时音视频通讯技术受到越来越多公司和技术人员的关注 ...
随机推荐
- Java基础 if if-else if-else if-else 三种示例
JDK :OpenJDK-11 OS :CentOS 7.6.1810 IDE :Eclipse 2019‑03 typesetting :Markdown code ...
- flutter Sliver滑动视图组件
import 'package:flutter/material.dart'; import './model/post.dart'; class SliverDemo extends Statele ...
- pytorch 计算图像数据集的均值和标准差
在使用 torchvision.transforms进行数据处理时我们经常进行的操作是: transforms.Normalize((0.485,0.456,0.406), (0.229,0.224, ...
- linux系统执行.exe文件
首先要了解一下Wine: Wine (“Wine Is Not an Emulator” 的首字母缩写)是一个能够在多种 POSIX-compliant 操作系统(诸如 Linux,Mac OSX 及 ...
- 全面系统Python3入门+进阶_汇总
https://coding.imooc.com/class/136.html#Anchor 全面系统Python3入门+进阶-1-1 导学 全面系统Python3入门+进阶-1-2 Python的特 ...
- LeetCode_345. Reverse Vowels of a String
345. Reverse Vowels of a String Easy Write a function that takes a string as input and reverse only ...
- WPF 使用winform的webbrowser
首先要添加如下引用: WindowsFormsIntegration System.Drawing System.Windows.Forms 然后在xaml中添加引用 xmlns:winform=&q ...
- Eclipse 常用配置和基本调试
常用配置 1.显示行号:window->Preferences->General->Editors->Text Editors , 勾选show line numbers 2. ...
- sem_wait sem_post信号量操作进本函数
sem_wait sem_post 信号量的数据类型为结构sem_t,它本质上是一个长整型的数.函数sem_init()用来初始化一个信号量.它的原型为: extern int sem_init ...
- 好用的idea插件
[Alibaba Java Coding Guidelines alibaba]阿里巴巴 代码规约扫描插件. [jRebel]可以热部署Java项目而不用重启. [http://139.199.89. ...