http://www.pppei.net/blog/post/331

在作流量管理时,这些概念很重要,不要迷失。。

这里再对Limiter 的源地址和目的地址做个说明,因为limiter是被应用在Lan接口的Rule里,相对pfsense来说,用户发往 Lan口的流量为In,pfsense通过Lan口发给用户的流量为OUT,因此限制上传的limiter因该应用在In方向,limiter的参照值应该为“源IP”,下载的Limiter应该应用在OUT方向,因为是转发给用户的所以这个limiter的参数值应该是“目的IP”。

另外,,,,策略路由,还有流控,就在LAN里作就OK了,,,但目前不很清楚它和FLOATING的差别。因为同样都会生效呢。。难道FLOATING规则真的是为了不指定具体出口之类的????

~~~~~~~~~~~~

流量管理

pfsense 有三种流量管理方法。
一是Queue,这种方式适合做QOS(服务质量保证),对数据进行分类,根据不同数据的不同特性,提供不同的服务质量,比如IP电话的语音数据,需要低网络延时,而某用户的下载流量只关心总带宽,这时就可以将ip电话的数据标记出来放到低延时的队列里,下载的流量放到只保证带宽的队列里,网关会用不同的算法转发相应的数据包,达到预定的服务质量。如果要实现对每个IP分别限速,就要为每个ip都建立一个队列,然后将每个IP的数据对应到唯这个队列上;
二是使用Captive portal,这种方式更适合用在无线网络环境中,用户需要打开浏览器输入用户名密码之后才能正常上网,同时为每个用户分配固定的带宽。只要开启了Captive portal,即使关闭了认证,也还是要打开浏览器在弹出的页面上点击确定后才能上网,用在有线环境里太影响用户体验,而且目前Captive portal 只有全局一个实例,2.1版可以针对不同的端口启用不同的实例;
三是使用防火墙的高功特性(这种方法是根据IP地址分别进行限速的)。在防火墙规则中限速有一个缺点,限速和访问控制策略偶合在了一块,失去了灵活性,配置的时候要谨慎一点不然可能会出现限速失效的情况,举个例子,为说明简单这里限速指的是下载限速:
①——-permit tcp any  to host 1.1.1.1 from lan————————
②——-permit any to any and speed limit 2M from Lan——

策略①中没有做流量限制,②中每用户的下载都限制在了2M。防火墙规则匹配是自上到下,匹配成功就不再向下进行,因此去往1.1.1.1的流量匹配了第一条策略,没做限速,第二条规则中的限速也就失效了。

另外再对速度做个说明,同样的策略在第一条上加上限速:
①——-permit tcp any  to host 1.1.1.1 and speed limit at 2M from lan——-
②——-permit any to any and speed limit 2M from Lan——

去往1.1.1.1的流量还会匹配策略①,其它的流量匹配策略②,那么如果用户同时有从1.1.1.1下载的流量和其它从其它地方下载的流量,从1.1.1.1下载.限制在2M,从其它地方下载也被限制在2M,因为是同时产生的流量,所以加起来用户得到了4M带宽。其实结果并不是这样的,在防火墙规则中限速时要先定义limiter,然后在规则中引用。内部是这样实现的,BSD的 PF(packet filter)没有限速功能,定义出来的limiter其实是另一个防火墙实现:IPFW中的组件,这个组件实现了限速,而且这个组件支持PIPE(管道)。PF中将匹配到的下载流量通过PIPE送到IPFW的Limiter中,limiter会根据定义时规定的参照值(源、目的ip,下载参照目的IP),为每个ip生成一个bukket,数据通过bukket的速度是它所属Limiter的速率。回到上面的例子规则 ①②中下载2M的limiter为同一个,同时匹配了两条规则的数据,通过PIPE被送到同一个Limiter中,这个limiter会根据目的ip生成一个BUKKET,这个bukket最大速度2M,用户得到的带宽最大也只是2M。如果规则①中使用了其它limiter比如下载3M的limiter,那么用户最终得到的带宽就是5M了。

  实施方法前边也都说过了,很简单了Firewall ->Traffic Shaper -> limiter 下创建Limiter(需单独为上传下载创建limiter) ,然后在Firewall -> rule->Lan 规则的高级特性 In/Out 中应用limiter。

这里再对Limiter 的源地址和目的地址做个说明,因为limiter是被应用在Lan接口的Rule里,相对pfsense来说,用户发往 Lan口的流量为In,pfsense通过Lan口发给用户的流量为OUT,因此限制上传的limiter因该应用在In方向,limiter的参照值应该为“源IP”,下载的Limiter应该应用在OUT方向,因为是转发给用户的所以这个limiter的参数值应该是“目的IP”。

还有人可能会有疑问应用在Lan口只是转发给用户的速度慢了,从Wan口进来的流量一样不受限制。这种想法是错的,因为TCP有流控机质,UDP的话就要看上层应用的质量了。

在应用了新策略后,之前已经建立的连接是不会受这些规则影响的,可能得不到你想要的效果,需要在Diagnostics->States -> reset status 下清理一下pfsense的状态,中断用户的连接,就能看到效果了。

如果你更习惯在命令行操作,给出一些常用命令,不用和web界面死磕了:

pfctl -sn   #显示nat规则
pfctl -sr   #显示filter规则
pfctl -sa  #显示所有规则
pfctl -ss  #显示防火墙状态
pfctl -F nat #重置防火墙状态(清空NAT状态表)
ipfw pipe show #显示limiter的状态  其中0000x 为limiter的编号 BKT一列就是为每个ip分配的bukket编号

pfsense下的流量管理(转)的更多相关文章

  1. Pfsense2.34中文版

    Pfsense2.34中文版 来源  https://forum.netgate.com/topic/112076/pfsense2-34%E4%B8%AD%E6%96%87%E7%89%88-%E8 ...

  2. 我们都可以把它放 Sidecar 容器中,这样微服务具备了 Super power,一种超能力

    云原生时代,微服务如何演进? 原创 李响 阿里技术 2020-08-28   https://mp.weixin.qq.com/s/KQG2U8_aotDL4YFB8ee6Zw 一  微服务架构与云原 ...

  3. C++程序结构---1

    C++ 基础教程Beta 版 原作:Juan Soulié 翻译:Jing Xu (aqua) 英文原版 本教程根据Juan Soulie的英文版C++教程翻译并改编. 本版为最新校对版,尚未定稿.如 ...

  4. pfsense 2.2RC下的L2TP配置

    还不有测试完成,不过,基本上应该差不多了. 主要参考以下文档: http://blog.sina.com.cn/s/blog_541a3cf10101ard3.html http://thepract ...

  5. pfsense 企业应用实例

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

  6. PfSense基于BSD的软件防火墙的安装、配置与应用

    PfSense基于BSD的软件防火墙的安装.配置与应用 PfSense是一个FreeBSD下的免费开源的防火墙和路由器软件,他为了在X86平台上面建立一个高集成性的防火墙项目,下面就为大家展示如何配置 ...

  7. [转帖]pfSense软路由系统的使用

    图解pfSense软路由系统的使用(NAT功能) http://seanlook.com/2015/04/23/pfsense-usage/  发表于 2015-04-23 |  更新于: 2015- ...

  8. pfSense用户界面汉化翻译教程

    pfSense用户界面汉化翻译教程 来源 https://blog.51cto.com/fxn2025/2087182 为了记录自己的汉化过程,同时也为了方便网友自己制作汉化版本,我把自己汉化pfSe ...

  9. 开源防火墙(pfSense)的安装部署与配置

    pfSense是一个基于FreeBSD架构的软件防火墙,通常会被安装在多网卡的主板上作为路由器或者防火墙去使用.往往这些硬件都比较廉价,高性能的配置也就1千元左右.pfSense具有商业防火墙的大部分 ...

随机推荐

  1. Http请求工具实例编写

    HTTP协议工作方式首先客户端发送一个请求(request)给服务器,服务器在接收到这个请求后将生成一个响应(response)返回给客户端.在这个通信的过程中HTTP协议在以下4个方面做了规定:1. ...

  2. linux中断处理程序

    Linux进行中断处理的4个步骤: 1.当中断产生,跳到统一入口IRQ_SVC 2.获取中断号 3.根据中断号找到irq_desc结构 4.从irq_desc结构中取出事先注册好的中断处理函数 Lin ...

  3. zabbix linux被监控端部署

    测试使用agentd监听获取数据. 服务端的安装可以查看http://blog.chinaunix.net/space.php?uid=25266990&do=blog&id=3380 ...

  4. Eclipse设置保存时自动给变量加final

    也是针对checkstyle的,在代码检查规范时,所有的变量必须是final.为了解决这个问题,通过以下的设置可以在eclipse保存时,自动给没有加final的变量加上final. Window-& ...

  5. AngularJs学习笔记7——四大特性之模块化设计

    模块化设计 1.引用自定义模块并调用 自定义模块中,如果有一些服务.封装好笑模块,在另外一个模块中(声明的时候,在依赖列表中加入要引入的模块) var app02 = angular.module(' ...

  6. arcpagelistarclist列表分页

    arcpagelistarclist列表分页 (DedeCMS 5.6) 名称:arcpagelist 功能:通过制定arclist的pagesize及tagid属性,配合arcpagelist标签进 ...

  7. REST、SOA、SOAP、RPC、ICE、ESB、BPM知识汇总及理解

    转载自处blog.csdn.net/tantexian. SOA: 维基百科解释:SOA:面向服务的软件架构(Service Oriented Architecture),是一种计算机软件的设计模式, ...

  8. Linux学习笔记01:Linux下的drwxr-xr-x

    1. drwxr-xr-x 第1字母:表示文件类型     d   ------- 表示文件目录(directory)     -    ------- 表示二进制文件     l    ------ ...

  9. JavaScripts学习日记——DOM

    DOM Document Object Model 文档对象模型  整合js和html css.控制html文档行为.DOM就是把页面当中所有内容全部封装成对象.HTML文档中万物皆对象.1.对象的分 ...

  10. 网站项目后台的目录命名为admin后,网页莫名其妙的变样了

    这是我的第一篇博客文章,与其说是分享经验,倒不如说是求助 最近因为要完成一个课程设计,在拿一个现成的项目过来改,要用到select下拉菜单,可是发觉怎么我的这个下拉菜单怎么变样了 刚开始它是这样的 感 ...