Cloudflare DDoS配置案例
|
导航: 这里将一个案例事项按照流程进行了整合,这样查看起来比较清晰。部分资料来自于Cloudflare 1.DDoS介绍 2.常用DDoS攻击 |
|
背景信息 |
|
本案例场景为给XX项目Login服务器以及Game服务器增加 DDOS防护,使用Cloudflare。 环境架构由 Client → Login/Game服务器 (客户端的流量直接连接Login/Game服务器) 升级为 Client → CloudFlare → Login/Game服务器 (客户端流量发送给CloudFlare,在由CloudFlare反向代理至Login/Game服务器) 注意:图中敏感信息已打码;另所有域名信息使用www.baidu.com代替,IP端口为虚假信息。
|
1.流程图
1.1 登录服
XX项目版Login服务器不增加DDOS防护时,玩家直接通过DNS服务器解析到Login服务器的真实IP地址连接Login服务器的80端口,并获取区服列表
具体流程见下图;

在加入DDOS防护后,DNS域名会将映射解析到 Cloudflare的边缘防护IP上,然后Cloud Flare会将请求反向代理到Login的真实IP上.

2.1 游戏服
XX项目版Game服务器不增加DDOS防护时,由于Game没有域名配置,玩家直接通过Login服务器获取Game的IP地址,然后连接Game服的8000-8001端口,连接Game服务器;由于XX项目 Game服为滚服架构,那么每个Game区服都会开放8000-8001端口.
具体流程见下图.

加入DDOS防护后,由于DDOS边缘防护IP数量有限(根据沟通,CloudFlare边缘IP上限为10个),并且,一个边缘IP只能开放一个相同端口;所以,边缘IP以及Game服的对外IP依次递增对外端口来满足配置需求.

2.配置案例
XX项目环境信息如下
|
角色 |
域名 |
边缘IP |
服务器对外真实IP |
服务器对外端口 |
|
Login服务器 |
www.baidu.com |
2.2.2.2 |
1.1.1.1 |
80 |
|
Game1 |
无 |
2.2.2.2 |
10.10.10.10 |
8000,8001 |
|
Game2 |
无 |
2.2.2.2 |
10.10.10.11 |
8002,8003 |
由于login服务器和game服务器端口不冲突,所以这里只用一个边缘ip:2.2.2.2。所有对外端口依次递增。
在XX项目环境中,需要配置的模块有3个,分别为以下:
CloudFlare
配置至真实游戏服(登录服)的反向代理目的地址,并获取CloudFlare的边缘IP。
DNS
由于DNS在没有DDOS防护前,直接将映射解析至Login的服务上,在加入DDOS防护后,需要将解析更改至CloudFlare的边缘IP上。
游戏服(登录服)
为了节约成本以及IP资源的节省,对外端口由8000-8001递增的方式添加。
2.1 CloudFlare
1.登录CloudFlare
网址: https://dash.cloudflare.com/login

2.点击项目的域名
XX项目使用的是baidu.com

3.DNS以及Spectrum
(由于配置多余的域名可能会导致额外费用,这里只展示配置过程截图)
主要是在以下2个配置项(根据实际需求选择)里面配置反向代理的服务器IP,并获取CloudFlare边缘IP

DNS:DNS配置项可以配置标准端口,如80和443,一般是7层协议。
Spectrum:Spectrum配置项可以随意配置有效范围端口,比如不是标准的80和443却也是http协议。可以配置协议比较多。
- DNS配置项
如端口为80及443,配置见以下

配置完成后点击保存.
- Spectrum配置项
如果后端真实服务器对外端口为非80和443,那么就需要使用Spectrum配置项.
点击Spectrum→点击创建应用程序

配置Spectrum(这里假设配置2个游戏服,端口号8000-8003)
Game1(端口8000-8001)

Game1第二个端口

Game2(端口8002-8003)

Game2第二个端口

注意:不管是DNS配置项还是Spectrum配置项,域名地址配置部分,一定最好保持一致,只有域名地址相同,分配的边缘IP地址才会相同。(Cloudflare还是要按照实际情况决定)
4.页面规则
如果是配置DDoS防护,可以不用配置默认规则,但是这里还是显示的配置一下更为清晰。


5.获取CloudFlare的边缘IP地址
获取CloudFlare的边缘IP地址,通过dig命令加上CloudFlare的CNAME别名来获取。
比如XX项目只有一个主机名,那么直接 dig www.baidu.com.cdn.cloudflare.net

注意:配置2个主机名或者1个主机名,按照实际条件选择,cloudflare按照边缘IP收费。
2.2 DNS
只有有域名配置的服务器才需要配置DNS,比如Login服务器(这里XX项目login服务器功能是获取区服列表,所以配置了域名)。
目前环境配置海外项目使用AWS route53服务来配置域名
1.登录AWS,找到ROUTE 53服务→托管区域→找到baidu.com域名

2.将原主机域名A记录改为CNAME记录,指向CloudFlare的CNAME域名

2.3 Login服-Game服
内部项目信息,敏感信息这里不做公开。只需要将原来的外网地址改成cloudflare的边缘IP地址和刚才配置的端口即可。
Cloudflare DDoS配置案例的更多相关文章
- 使用mysql存放Ambari元数据的配置案例
使用mysql存放Ambari元数据的配置案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.环境准备 详情请参考我之前的笔记:离线方式部署Ambari2.6.0.0 中关 ...
- Nginx插件之openresty反向代理和日志滚动配置案例
Nginx插件之openresty反向代理和日志滚动配置案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.openresty介绍 1>.Nginx介绍 Nginx是一款 ...
- https和server-status配置案例
https和server-status配置案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.https协议 我们知道http协议是明文的,所以,你的数据发送不管是请求报文(r ...
- Flume 高可用配置案例+load balance负载均衡+ 案例:日志的采集及汇总
高可用配置案例 (一).failover故障转移 在完成单点的Flume NG搭建后,下面我们搭建一个高可用的Flume NG集群,架构图如下所示: (1)节点分配 Flume的Agent和Colle ...
- CISCO ASA 5505 经典配置案例
nterface Vlan2 nameif outside ----------------------------------------对端口命名外端口 security-level 0 -- ...
- Httpd服务入门知识-Httpd服务常见配置案例之虚拟主机
Httpd服务入门知识-Httpd服务常见配置案例之虚拟主机 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.虚拟主机实现方案 1>.Apache httpd 有三种实现虚 ...
- Httpd服务入门知识-Httpd服务常见配置案例之Apache的工作做状态status页面
Httpd服务入门知识-Httpd服务常见配置案例之Apache的工作做状态status页面 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.status功能概述 status页 ...
- Httpd服务入门知识-Httpd服务常见配置案例之ServerSignature指令选项
Httpd服务入门知识-Httpd服务常见配置案例之ServerSignature指令选项 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.ServerSignature指令概述 ...
- Httpd服务入门知识-Httpd服务常见配置案例之实现用户家目录的http共享
Httpd服务入门知识-Httpd服务常见配置案例之实现用户家目录的http共享 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.实现用户家目录的http共享前提 在配置家目录共 ...
随机推荐
- 炸天的3D引擎OpenCASCADE的用法及案例(https://blog.csdn.net/xipengbozai/article/details/117044032?spm=1001.2014.3001.5502)
What CASCADE?Open CASCADE(简称OCC)平台是由法国Matra Datavision公司开发的CAD/CAE/CAM软件平台,可以说是世界上最重要的几何造型基础软件平台之一.开 ...
- 变量覆盖-高级篇(动态覆盖,extract综合)
0x00 原理 变量覆盖漏洞可以让用户定义的变量值覆盖原有程序变量,可控制原程序逻辑. 0x01 代码 <?php highlight_file('index.php'); function ...
- [Linux] 完全卸载mysql
参考 https://www.jianshu.com/p/ef58fb333cd6
- [bug] MySQL-Front连接MySQL 8.0失败
原因: MySQL-Front不支持MySQL 8.0的密码认证方式 解决: 在mysql安装目录中my.ini文件末尾添加 default_authentication_plugin=mysql_n ...
- 018.Python迭代器以及map和reduce函数
一 迭代器 能被next进行调用,并且不断返回下一个值的对象 特征:迭代器会生成惰性序列,它通过计算把值依次的返回,一边循环一边计算而不是一次性得到所有数据 优点:需要数据的时候,一次取一个,可以大大 ...
- 云计算OpenStack---云计算、大数据、人工智能(14)
一.互联网行业及云计算 在互联网时代,技术是推动社会发展的驱动,云计算则是一个包罗万象的技术栈集合,通过网络提供IAAS.PAAS.SAAS等资源,涵盖从数据中心底层的硬件设置到最上层客户的应用.给我 ...
- linux初级之总结复习
一.linux命令复习 1.ls:列出当前目录下的文件 -h: -l: -d: -a: 2. man: 命令帮助手册 3. cd: 切换目录 -: ~: ..: cd: 4. pwd: 显示当前工作 ...
- 详述盒子模型(包含padding、border、margin的详细用法和描述)
提起盒子模型,我想无论是对于一个前端资深开发人员还是前端入门开发人员来说都不陌生,这是CSS最基础的知识. 但是惭愧地说,我之前理解的盒子模型,只是文字上的理解.我知道定义一个元素的宽度和高度时,设置 ...
- GO学习-(37) 使用Air实现Go程序实时热重载
使用Air实现Go程序实时热重载 今天我们要介绍一个神器--Air能够实时监听项目的代码文件,在代码发生变更之后自动重新编译并执行,大大提高gin框架项目的开发效率. 为什么需要实时加载? 之前使用P ...
- Step By Step(Lua环境)
Step By Step(Lua环境) Lua将其所有的全局变量保存在一个常规的table中,这个table被称为"环境".它被保存在全局变量_G中. 1. 全局变量声明: ...