保护 TCP 流量 (范围)
“范围”功能为任何基于 TCP 的协议引入 DDoS 保护、负载均衡和内容加速。 Range 是运行在 IBM Cloud® Internet Services (Cloudflare) 边缘节点上的全局 TCP 代理。
“范围”可用于:
- 保护您的 TCP 端口和协议免受 Layer-3 和 Layer-4 DDoS 攻击。
- 使用 Layer-7 防火墙规则 保护您的 HTTP (S) Range 应用程序。
- 通过启用 TLS 加密,降低攻击者窥探和窃取敏感数据的能力。
- 与 CIS IP 防火墙集成,该防火墙允许您阻止 IP 地址或整个 IP 范围访问 TCP 服务,或者对这些 IP 地址或范围进行质询。
- 通过 TCP 健康检查、故障转移和转向策略配置负载平衡器,以决定流量流向。
“范围”仅适用于企业客户,需额外成本,并且按带宽使用量计费。
范围限制
最多可以创建 10 个具有唯一源的范围应用程序。 具有唯一源的每个范围应用程序都必须分配唯一的 IP 地址,并且 IP 地址是有限的资源。 如果需要超过 10 个 Range 应用程序,请打开 IBM 支持案例。 支持案例以添加更多 Range 应用程序需要复审用例,而此过程可能需要几天时间。
如果应用程序复用现有源,但使用不同的端口,那么可以创建 10 个以上的应用程序。
对于 TCP Range 应用程序,仅应用 IP 规则。 这是因为 IP 规则将应用于 OSI 层 3 和层 4。 不过,HTTP (S) Range 应用程序可与防火墙规则和 IP 规则一起使用。 一般来说,防火墙规则是针对 OSI 第 7 层( HTTP )暴露的属性设计的,如请求标头和主体内容特征。
使用控制台添加应用程序
执行以下步骤以使用 UI 添加应用程序。
- 导航至安全 > 范围。
- 单击创建。
- 从列表菜单中选择应用程序类型。 您可以选择 TCP、UDP、HTTP、HTTPS、RDP、SSH 或 Minecraft。
- 输入应用程序名称。 您的应用程序将与 CIS 域名上的 DNS 名称相关联。
- 输入边缘端口。CIS 侦听此端口上这些地址的入局连接。 与这些地址的连接将采用针对源服务器的代理。 您可以输入端口范围 (例如:
8080-8090
),但源必须具有在连续范围中指定的相同数量的端口。 - 选择边缘 IP 连接。
- 在“源”部分中,输入 TCP 应用程序的源 IP 和端口。 您还可以选择现有负载均衡器及其端口。
- 启用 IP 防火墙(可选)。 启用后,应用程序将执行带有“阻止”或“允许列表”操作的 IP 访问规则。
- 启用边缘 TLS 终止 (可选)。 启用后,从列表菜单中选择要使用的 TLS 终止类型。
- 如果在线代理支持 PROXY 协议,请选择 PROXY 协议(可选)。 如果正在运行需要了解真实客户机 IP 的服务,那么此功能非常有用。 在大多数情况下,该设置仍为
off
。 - 单击创建。
根据每个应用程序使用的带宽量,配置范围应用程序会产生额外费用。
现在,您的应用程序在磁贴或表格视图中可见,并具有以下属性:
- 应用程序名称
- 应用程序类
- 边缘端口
- TLS 边缘终止
- 代理协议
- 源
- 过去 1 小时的连接数(每分钟轮询)
- 过去 1 小时的吞吐量(每分钟轮询)
- 操作菜单
(右上角)有以下选项:
- 编辑应用程序
- 查看指定应用程序的度量值
- 删除应用程序
创建“范围”应用程序时,将为其分配唯一的 IPv4 和 IPv6 地址。 这些 IP 地址不是静态的,可能会发生变化。 您可以使用 DNS 来确定分配的 IP 地址。 DNS 名称总是返回分配给应用程序的 IP 地址。
查看度量值
您的应用程序现在可以通过 CIS (Cloudflare) 代理 TCP 流量。
导航至度量值 > 范围以查看应用程序的连接数和吞吐量流量。 图形最多显示 10 个应用程序的度量值。
要切换应用程序度量,请使用“图表”键或单击 选择应用程序 按钮。 要更改“度量”数据时间范围,请使用列表菜单。
查看范围应用
创建 "范围 "应用程序后,"安全 > 范围页面将填充包含以下信息的磁贴(或选择切换到表格视图):
- 应用程序名称
- 代理协议
- 边缘端口
- 源和端口
- 过去 1 小时的连接数(每分钟轮询)
- 过去 1 小时的吞吐量(每分钟轮询)
- TLS 边缘终止(针对相关应用)
应用程序列表还包含一个操作菜单 操作 允许用户执行以下任务:
- 编辑应用程序
- 查看指定应用程序的度量值
- 这将带用户进入“度量标准 > 范围”页面,该页面只显示该应用程序的度量标准。
- 删除应用程序
API 用法示例
以下是使用“范围”创建和列出应用程序的示例。
创建 Range 应用程序
有两种方法可以在范围应用中指定原点。
- 原点 IP - 使用参数
origin_direct
- 负载平衡器 - 使用参数
origin_dns
和origin_port
对于源 IP 请求:
curl -X POST \
https://api.cis.cloud.ibm.com/v1/<url-encoded-crn>/zones/<zone-d>/range/apps \
-H 'X-Auth-User-Token: <token>' \
-d '{"protocol":"tcp/22","dns":{"type":"CNAME","name":"ssh.example.com"},"origin_direct":["tcp://172.0.2.1:22"],"proxy_protocol":true,"ip_firewall":true}'
答复如下:
{
"result": {
"id": "4f70c3d4f20576b79135b898295e8093",
"protocol": "tcp/22",
"dns": {
"type": "CNAME",
"name": "ssh.example.com"
},
"origin_direct": [
"tcp://172.0.2.1:22"
],
"ip_firewall": true,
"proxy_protocol": true,
"created_on": "2019-01-09T17:33:09.190606Z",
"modified_on": "2019-01-09T17:33:09.190606Z"
},
"success": true,
"errors": [],
"messages": []
}
对于负载均衡器请求:
curl -X POST \
https://api.cis.cloud.ibm.com/v1/<url-encoded-crn>/zones/<zone-d>/range/apps \
-H 'X-Auth-User-Token: <token>' \
-d '{"protocol":"tcp/22","dns":{"type":"CNAME","name":"ssh.example.com"},"origin_dns": {"name": "test"},"proxy_protocol":true,"ip_firewall":true, "origin_port": 43}'
答复如下:
{
"result": {
"id": "4f70c3d4f20576b79135b898295e8093",
"protocol": "tcp/22",
"dns": {
"type": "CNAME",
"name": "ssh.example.com"
},
"origin_dns": {
"name": "test"
},
"origin_port": 43,
"ip_firewall": true,
"proxy_protocol": true,
"created_on": "2019-01-09T17:39:09.190606Z",
"modified_on": "2019-01-09T17:39:09.190606Z"
},
"success": true,
"errors": [],
"messages": []
}
- DNS 名称- 您的应用程序与您域名上的 DNS 名称相关联。
- 协议/边缘端口- 运行应用程序的端口。 与这些地址的连接将采用针对源服务器的代理。
- 直接原点- 应用程序的运行 IP,以及希望流量从边缘流向原点的端口。
- IP Firewall(IP 防火墙 )- 如果启用,此范围应用程序将执行具有阻止操作的防火墙规则。
- PROXY 协议- 如果在线代理支持 PROXY 协议,则启用 v1。 在大多数情况下,此设置保持禁用。
- Origin DNS- 要设置为源代码的负载平衡器的名称。
- 源端口:-服务的端口。
列出所有范围应用程序
使用以下请求来列出所有“范围”应用程序:
curl -X GET \
https://api.cis.cloud.ibm.com/v1/<url-encoded-crn>/zones/<zone-d>/range/apps
答复如下:
{
"result": [
{
"id": "4f70c3d4f20546b79135b898295e8093",
"protocol": "tcp/22",
"dns": {
"type": "CNAME",
"name": "ssh.example.com"
},
"origin_direct": [
"tcp://172.0.2.1:22"
],
"ip_firewall": true,
"proxy_protocol": true,
"created_on": "2019-01-09T17:33:09.190606Z",
"modified_on": "2019-01-09T17:33:09.190606Z"
}
],
"success": true,
"errors": [],
"messages": []
}
列出特定“范围”应用程序
使用以下请求列出特定“范围”应用程序:
curl -X GET \
https://api.cis.cloud.ibm.com/v1/<url-encoded-crn>/zones/<zone-d>/range/apps/4f70c3d4f20546b79135b898295e8093
答复如下:
-
使用源 IP 的应用程序
{ "result": { "id": "4f70c3d4f20546b79135b898295e8093", "protocol": "tcp/22", "dns": { "type": "CNAME", "name": "ssh.example.com" }, "origin_direct": [ "tcp://172.0.2.1:22" ], "ip_firewall": true, "proxy_protocol": true, "created_on": "2019-01-09T17:33:09.190606Z", "modified_on": "2019-01-09T17:33:09.190606Z" }, "success": true, "errors": [], "messages": [] }
-
使用负载平衡器的应用程序
{ "result": { "id": "555359036e7f4acc82d69b916f62caba", "protocol": "tcp/22", "dns": { "type": "CNAME", "name": "ssh.example.com" }, "origin_dns": { "name": "test_update" }, "origin_port": 76, "ip_firewall": true, "proxy_protocol": true, "created_on": "2019-01-10T22:26:47.167008Z", "modified_on": "2019-01-10T22:26:47.167008Z" }, "success": true, "errors": [], "messages": [] }