环境 FB6.0 stable
普通服务器 P2.4 1G内存 一块xl0 一块rl0 帮一个朋友装一台FB抗拒绝服务
什么是polling模式
本来网卡工作模式:需要的时候请求中断。但在拒绝服务攻击情况下,包数太多,就不太可行,polling模式就是让cpu定期去取网卡内存中的数据包。虽然平时看上去这种方法比较效率低,但在拒绝服务攻击情况下就比较好用。
打开网卡的polling模式
内核 options DEVICE_POLLING
polling支持网卡类型
dc(4), em(4), fwe(4), fwip(4), fxp(4), ixgb(4),
nge(4), re(4), rl(4), sf(4), sis(4), ste(4), vge(4), vr(4), and xl(4)
polling在sysctl中参数的含义
kern.polling.enable=1 打开polling模式
kern.polling.burst 每个时间片,系统在每个网卡可以抓的最多的包值,不可以改的值,根据其他值系统自己算的
kern.polling.burst_max 每次取多少内存中的包默认150,是 一个参数,和内核里面的HZ相乘(HZ * burst_max)就是每秒cpu极限可以抓的包量 默认HZ=1000
kern.polling.each_burst 没搞懂用处,默认5 好像用处不大
kern.polling.idle_poll=1 man 中推荐打开选项
kern.polling.reg_frac 多久检测一次网卡错误 默认20
kern.polling.user_frac=10 cpu预留给userland tasks的量 默认50, 做防火墙推荐少留一点
kern.polling.handlers 有多少网卡注册了polling服务 不用改
注:HZ的含义以及burst_max的关系,HZ就是赫兹,时间的倒数,就是多久cpu去取一次网卡内存中的包
HZ越大,CPU去取的时间间隔越短,burst_max就是每次取多少内存中的包。
这个参数需要自行测试,HZ越大,在大流量下用top看中断就越多
感觉范围在500-2000比较合适,再大就。。。。。
在内核中为:options HZ=500 (我设置500,burst_max设置150,可保证我的服务器稳定和抗攻击能力比较好)
pf部分
内核(编进去总是快一点)
device pf
device pflog
device pfsync
options ALTQ
options ALTQ_CBQ # Class Bases Queuing (CBQ)
options ALTQ_RED # Random Early Detection (RED)
options ALTQ_RIO # RED In/Out
options ALTQ_HFSC # Hierarchical Packet Scheduler (HFSC)
options ALTQ_PRIQ # Priority Queuing (PRIQ)
options ALTQ_NOPCC # Required for SMP build
在/etc/rc.conf中还有若干选项 要打开
特别注意,编译内核一定要 :options INET6 可用
否则pf不可用,启动报
Apr 25 20:49:29 ds9 kernel: link_elf: symbol in6_cksum undefined
Apr 26 20:39:58 ds9 kernel: link_elf: symbol in6_cksum undefined
Apr 27 21:41:22 ds9 kernel: link_elf: symbol in6_cksum undefined
其他部分参看pf说明
注:也不是什么pf详细指南什么的,只是拿出自己的一点心得与大家分享,肯定有错,请大家指正,也希望以后可以出一个pf的指南(感谢小龙女回答很多很多问题) |