
Gatekeeper是什么?
Gatekeeper是目前第一个开源的DoS拒绝服务攻击防护系统。该系统被设计成可以扩展到任何峰值的带宽,因此它可以抵御目前的DoS拒绝服务攻击攻击。尽管Gatekeeper的体系结构在地理上是分布式的,但描述所有传入流量的网络策略必须是集中式的。这种集中化策略使网络运营商能够利用在很高延迟下不可行的分布式算法(例如分布式数据库),并同时抵御DoS拒绝服务攻击。
Gatekeeper是预期用户是机构、服务和内容提供商、企业网络等的网络运营商,因此暂不打算由个人互联网用户使用。
工具安装与配置
配置Hugepages
DPDK需要使用到Hugepages,关于如何挂载Hugepages,可以参考这篇【文档】。在很多系统上,我们可以按照下列方式快速有效地配置Hugepages:
$ echo 256 | sudo tee /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
选项1:获取工具包
Gatekeeper的Debian包可以点击该项目的【Releases】页面获取。
安装
下载好安装包之后,我们可以通过下列命令来完成工具的安装:
$ tar -zxvf gatekeeper-ubuntu-18.04-packages.tar.gz $ cd gatekeeper-ubuntu-18.04-packages $ sudo dpkg -i libgkrte-*.deb / libgkdpdk-dev_*_amd64.deb / gatekeeper-dpdk_*_amd64.deb / gatekeeper-dpdk-dev_*_amd64.deb / gatekeeper-dpdk-igb-uio-dkms_*_amd64.deb / gatekeeper-dpdk-rte-kni-dkms_*_amd64.deb / gatekeeper-bird_*_amd64.deb / gatekeeper_*_amd64.deb
gatekeeper-dpdk-dev包是DKMS包所需的依赖包,它负责在包安装和内核更新的过程中构建对应的内核模块。
配置网络适配器
编辑/etc/gatekeeper/envvars文件,然后输入需要跟DPDK绑定的网络适配器名称。比如说:
GATEKEEPER_INTERFACES="eth0 eth1"
或者,我们还可以指定接口的PCI地址:
GATEKEEPER_INTERFACES="0000:00:07.0 0000:00:08.0"
在相同文件中,我们可以在DPDK_ARGS变量中指定“环境抽象层选项”,或在GATEKEEPER_ARGS中指定关于Gatekeeper的特定选项。
如何运行
直接执行下列命令即可运行Gatekeeper,并且确保设备重启之后将会自动运行:
$ sudo systemctl start gatekeeper $ sudo systemctl enable gatekeeper
选项2:源码构建
安装依赖
首先,我们需要安装下列软件依赖:
$ sudo apt-get update $ sudo apt-get -y -q install git clang devscripts doxygen hugepages / build-essential linux-headers-`uname -r` libmnl0 libmnl-dev / libkmod2 libkmod-dev libnuma-dev libelf1 libelf-dev libc6-dev-i386 / autoconf flex bison libncurses5-dev libreadline-dev
如需使用DPDK,确保已经安装好了所有的环境依赖。
克隆代码库
克隆Gatekeeper代码库,其中包括涵盖了Gatekeeper依赖的子模块:
$ git clone --recursive http://github.com/AltraMayor/gatekeeper.git
如果没有使用--recursive克隆选项,你则需要在gatekeeper目录下获取包含了依赖的子模块:
$ git submodule init $ git submodule update
编译
切换到gatekeeper目录下,然后运行安装脚本:
$ . setup.sh
运行好安装脚本之后,你还需要在你的shell配置文件中存储环境变量。比如说,在Bash中,你需要:
$ echo "export RTE_SDK=${RTE_SDK}" >> ${HOME}/.profile $ echo "export RTE_TARGET=${RTE_TARGET}" >> ${HOME}/.profile
当DPDK编译完成并且配置好环境变量后,就可以对gatekeeper进行编译了:
$ make
配置网络适配器
在使用Gatekeeper之前,需要给DPDK绑定网络适配器。这里,我们可以使用dependencies/dpdk/usertools/dpdk-devbind.py脚本:
$ sudo dependencies/dpdk/usertools/dpdk-devbind.py --bind=uio_pci_generic enp131s0f0
如何运行
正确配置好环境变量并等待Gatekeeper编译完成之后,我们就可以通过下列命令运行该工具了:
$ sudo build/gatekeeper [EAL OPTIONS] -- [GATEKEEPER OPTIONS]
项目地址
Gatekeeper:【GitHub传送门】

澳大利亚 1F
这玩意真能扛住大流量攻击?🤔
江苏省苏州市 2F
前几天我们公司试了类似方案,结果自己先崩了,心疼运维
韩国 B1
@ 月影游侠 运维压力大是常态,建议先做灰度上线,监控指标再逐步放量。
山东省德州市 3F
配置看着挺麻烦,新手上手估计得折腾好几天
马来西亚 4F
hugepages设置这块能不能再讲细点,老是卡在这步
北京市 5F
分布式架构+集中策略,思路清奇但延迟咋解决?
陕西省西安市 B1
@ BubbleGiggle 延迟主要在策略同步上,实际部署时可以把策略缓存到本地,减小往返。
江苏省苏州市 B1
@ BubbleGiggle 这玩意真能抗住T级流量?有点怀疑🤔
辽宁省 6F
我们小厂用不起这配置啊,成本太高了
中国 B1
@ 破碎的彩虹 成本确实是阻碍,或许可以先在测试环境用小规模的流量做验证。
韩国 7F
gatekeeper-bird是干啥的,文档里都没提清楚
四川省遂宁市 8F
说实在的,现在DDoS防护哪家强?求个对比
河南省郑州市 9F
要是能出个一键部署脚本就舒服了
贵州省贵阳市 10F
这个编译过程太吃环境了,换了三台机器才搞定
北京市 11F
配置挺麻烦,但能抵御大流量。
湖南省衡阳市 12F
真是没想到开源也能做DDoS。👍
江苏省无锡市 B1
@ 凉风有信 开源做DDoS防护挺牛的,关键是要有人维护
日本 13F
hugepages那步卡住,我改了下脚本。
印度尼西亚 14F
这个项目挺有意思,期待社区贡献。
吉林省吉林省 15F
一键部署真的太需要了。
天津市 B1
@ 茉莉清茶 一键脚本+容器化,求安排!不然真没人敢上手。
北京市 B1
@ 茉莉清茶 同感,这种复杂工具一键部署能省不少事,希望官方后续能考虑下。
辽宁省大连市 16F
分布式和集中策略的组合听起来不错,不过实际延迟会不会成为瓶颈?
澳大利亚 B1
@ Quirk 这延迟问题确实得实测,理论再好也得看跑起来咋样
四川省成都市 17F
我之前在公司用了类似方案,调Hugepages后性能提升不少,建议文档里多点案例。
美国 18F
gatekeeper-bird到底是干啥的?文档里只提了一句,我也想弄清楚。
贵州省贵阳市 19F
如果想在老机器上跑,DPDK的依赖有点多,能否提供轻量化的安装脚本?
四川省泸州市 B1
@ 红豆生 老机器跑DPDK确实吃力,轻量脚本目前社区好像还没人做,可以试试自己写个简化版的。
黑龙江省 20F
整体来看,Gatekeeper的架构设计挺前卫的,尤其是把策略集中管理的思路解决了分布式算法在高延迟环境下的难题,不过部署时对环境要求高,建议新手先在测试环境跑通再上生产。
葡萄牙里斯本 21F
这个Hugepages配置在CentOS上能用吗?
印度 22F
感觉文档写得挺详细的,照着做应该没问题
菲律宾 23F
之前装DPDK也卡在Hugepages,后来发现是内核版本问题
陕西省安康市 24F
这配置步骤看着就头大,得找专门时间搞
北京市 25F
开源DDoS防护挺难得的,希望后续能持续更新
浙江省 26F
为啥必须用DPDK?普通网卡驱动不行吗?
北京市 27F
我们公司刚被DDoS过,这工具来得正是时候
韩国 28F
编译过程有点长,建议加个进度提示
湖北省黄冈市 29F
eth0和eth1都要绑吗?单网卡行不行?
马来西亚 30F
git clone的时候网不好断了两次,建议加个镜像源
北京市 B1
@ 蓬蓬 镜像源建议加个清华或者阿里云的,国外源是真的慢
北京市 31F
hugepages设置能不能给个自动检测脚本啊,老是配错
香港 32F
编译失败十几次了,依赖能不能打包成个容器镜像?
新西兰 33F
gatekeeper-bird是不是用来做BGP路由的,感觉像
湖北省襄阳市 B1
@ 忧郁的鱼 是的,gatekeeper-bird就是用来处理BGP路由通告和策略分发的,是Gatekeeper和外部网络通信的关键组件。
韩国 34F
单网卡绑一个接口能跑吗,测试环境没那么多设备
山东省烟台市 35F
说真的,这文档对新手有点不友好,步骤太碎了
重庆市 36F
之前搞过类似系统,Hugepages调好了吞吐直接翻倍
江苏省无锡市 37F
DPDK必须得用,普通驱动处理不了这么大流量
北京市 38F
这配置对个人用户确实不太友好,不过企业用应该还行。
湖北省武汉市 39F
开源DDoS防护确实少见,就是部署起来门槛有点高。
上海市 B1
@ 糖霜兔兔 部署确实麻烦,但开源能自定义规则挺香。
北京市 40F
Hugepages那块配置起来真费劲,有没有更简单的教程啊?
澳大利亚 41F
我们公司最近也在看类似方案,这个看起来架构挺有意思的。
日本 42F
之前没听说过gatekeeper-bird,有懂的大佬解释下具体作用吗?
江苏省泰州市 43F
感觉步骤有点多,要是能出个Docker镜像就好了。
福建省厦门市 44F
集中式策略管理延迟,实际效果真有那么好吗?有点怀疑。
北京市 45F
看了半天,还是没太搞懂和商业防护方案比优势在哪。
泰国 46F
编译过程太长了,中间出错都不知道是哪一步的问题。
日本 47F
这个工具对运维人员的要求不低,小团队可能玩不转。
北京市 48F
这配置对小公司太不友好了,光Hugepages就劝退一半人。
湖南省衡阳市 49F
单网卡能跑吗?测试环境真没那么多设备可用。
北京市 50F
集中策略听着牛,但跨机房延迟高了咋办?
广西 51F
hugepages老是配不对,有没有人分享个成功配置的脚本?
内蒙古乌海市 52F
DPDK非得用吗?普通驱动真扛不住?
广东省东莞市 53F
编译到一半断了,重来又得半小时,心累。
辽宁省 54F
gatekeeper-bird是不是处理BGP路由通告的?求确认。
广东省深圳市 55F
文档步骤太碎了,新手照着做容易漏。
河南省郑州市 56F
之前试过类似架构,策略集中后管理方便但同步慢。
北京市海淀区 57F
能不能出个Docker镜像啊,省得折腾环境。
北京市 58F
我们刚被DDoS打崩,正愁没方案,这个来得及时。
浙江省宁波市 59F
感觉部署门槛比商业方案还高,开源优势在哪?
湖北省武汉市硚口区 60F
eth0绑一个口行不行?不想动生产网卡。
澳大利亚 61F
CentOS上hugepages路径不一样,得自己改,坑。
日本 62F
集中式策略会不会成为单点故障?
北京市 63F
配置步骤写得挺细的,适合动手试试。
广东省广州市 64F
这玩意儿个人用户用不了,有点可惜。
浙江省杭州市 65F
开源DDoS防护,这个方向挺好。
台湾省台北市 B1
@ 贝壳糖粒 确实挺有潜力的
韩国 66F
@元宝 这配置也太硬核了吧
北美地区 B1
@ 厄洛斯 毕竟是专业级防护系统嘛,配置是有点门槛。