pfSense QoS IDS

来源 https://blanboom.org/2018/pfsense-setup/

之前我使用的无线路由器是 RT1900ac,其内置了 QoS 和 IDS/IPS 功能,但由于 CPU 性能有限,在百兆宽带的情况下,两者均会对网络性能造成一定的影响。

前段时间,群晖在 DSM 中推出了 Virtual Machine Manager 工具,可以在 NAS 中运行虚拟机。由于我的 NAS 中恰好有两个以太网接口,就准备在 NAS 中,通过虚拟机实现软路由,并体验一下这两项功能。

简单了解和试用 RouterOSOpenWrt x86VyOSpfSense 等软路由系统后,考虑到功能丰富程度和易用性,最终选择了 pfSense.

本文主要记录我的 pfSense 关键配置。由于大多数配置在网上都能找到完整的配置步骤,文章中将不会过于详细地介绍配置步骤。

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

我的家庭网络拓扑图

QoS

家中的 NAS 上经常进行 PT 下载,另外还有一台迅雷的玩客云,两个设备经常占满上传带宽。使用 RT1900ac 路由器的时候,想开 QoS,降低 BT/PT 协议、以及玩客云设备的优先级,但发现打开 QoS 之后,CPU 负载过高,甚至影响到了整体网速。

对于软路由来说,性能就不会是大问题了。在 pfSense 上,我首先尝试了使用 FAIRQ + CoDel 的方式,来模拟 fq_codel 实现流量整形,而不需要手动配置复杂的规则。如果体验一段时间后,发现效果不太理想,再尝试手动配置规则。

参考资料:

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

参考资料:

流量监控

ntopng 控制面板

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

NAT 设置

对于部分需要在内外网使用同一个 IP 访问的服务,需要在内网 LAN 口,通过 WAN 口 IP 地址,访问已经映射到公网的服务。对于之前的路由器,默认就可以在 LAN 口直接访问 WAN 口 IP,但在 pfSense 中,需要做一下特殊的设置,具体见这篇文章:

=========== End

pfSense QoS IDS的更多相关文章

  1. pfsense 企业应用实例

    从萌生更换公司网关的想法,到选择.测试.部署陆陆续续用时两个月有余.选择的标准是open and free.这期间不断在查阅一些资料,测试了7.8个各开源防火墙产品.这些产品中大多是基于linux,少 ...

  2. pfsense下的流量管理(转)

    http://www.pppei.net/blog/post/331 在作流量管理时,这些概念很重要,不要迷失.. 这里再对Limiter 的源地址和目的地址做个说明,因为limiter是被应用在La ...

  3. 提升网速的路由器优化方法(UPnP、QoS、MTU、交换机模式、无线中继)

    在上一篇<为什么房间的 Wi-Fi 信号这么差>中,猫哥从微波炉.相对论.人存原理出发,介绍了影响 Wi-Fi 信号强弱的几大因素,接下来猫哥再给大家介绍几种不用升级带宽套餐也能提升网速的 ...

  4. MongoDB replica set IDs do not match

    在搭建MongoDB(版本 3.2.9)的Replica Set时,使用 rs.status() 查看Replica Set的状态,发现一个成员异常:replica set IDs do not ma ...

  5. 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 ...

  6. H3C qos 简单配置

    qos 有三种服务模型 Best-Effort service(尽力而为服务模型) Integrated service(综合服务模型,简称Int-Serv) Differentiated servi ...

  7. rabbitmq qos prefetch count的设置与作用

    因为原来使用了MQ作为rpc机制,随着客户交易量越来越大,很多服务器推送行情的压力很大,最近打算重写为批量模式,又重新看了下qos和prefetch设置的作用以确定优化的具体细节. 消费者在开启ack ...

  8. iOS不同IDS说明

    1.Vindor标识符  identifierForVendor 一个英文字符串,对于相同的产品商(这里指com.zhang.*,也就是前缀一样),其唯一的标识设备. * 这个值对于相同的产品商在相同 ...

  9. 实时视频应用之QoS关键技术分析

    转自:http://www.aiweibang.com/m/detail/104476372.html?from=p 随着WebRTC标准的逐步推广,实时音视频通讯技术受到越来越多公司和技术人员的关注 ...

随机推荐

  1. 2019年逾期率上升_24家头部P2P平台最新运营数据解读:8家近一年逾期率走势曝光

    python信用评分卡建模(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_ca ...

  2. Flutter 目录结构介绍、入口、自定义 Widget、MaterialApp 组件、Scaffold 组件

    Flutter 目录结构介绍 文件夹 作用 android android 平台相关代码 ios ios 平台相关代码 lib flutter 相关代码,我们主要编写的代 码就在这个文件夹 test ...

  3. jenkins发布程序触发shell调用python脚本刷新akamai cdn api

    刷新cdn的流程:jenkins获取git中的代码,触发脚本推送到生产环境中(即cdn的源站) --> 触发脚本获取git工作目录的更新列表,将更新列表拼凑成带域名信息的url,写入到目录中 - ...

  4. 123457123456#0#-----com.tym.myNewShiZi45--前拼后广--识字tym

    com.tym.myNewShiZi45--前拼后广--识字tym

  5. Spring Cloud API网关服务 5.2

    为什么需要API网关 通过前面内容的学习,我们已经可以构建一个简单的微服务架构系统.这个系统可以使用Spring Boot实现微服务的开发,使用Spring Cloud Eureka实现注册中心以及服 ...

  6. 客户端业务层(非数据层json或xml层)的数据结构

    private string errorMessage = "系统繁忙,请稍后重试";//不成功时的提示信息:成功时,可以忽略掉        private int result ...

  7. elasticsearch in语句和not in语句

    sql语句示例: select * from table where t_id in (1,2,3,4) php代码示例: $search_query = [ "bool" =&g ...

  8. 【Leetcode_easy】977. Squares of a Sorted Array

    problem 977. Squares of a Sorted Array solution: class Solution { public: vector<int> sortedSq ...

  9. 导入数据到数据库表,报错[Err] [Row1] [Imp] 1153 - Got a packet bigger than 'max_allowed_packet' bytes

    # 在数据库新增查询,执行如下命令即可: show VARIABLES like '%max_allowed_packet%'; set global max_allowed_packet = 2*1 ...

  10. C# 基于Directshow.Net lib库 USB摄像头使用DirectShow.NET获取摄像头视频流

    https://blog.csdn.net/u010118312/article/details/91766787 https://download.csdn.net/download/u010118 ...