INTEGRITY Документация

Использование BYOIP с CDN и Spectrum

С привязки к сервисам, CDN1 клиенты, использующие BYOIP, могут взять тот же префикс, который они подключили к Cloudflare, и использовать его для выборочной маршрутизации трафика на уровне отдельных IP адресов к Spectrum2, или наоборот. Это означает:

В этом руководстве используется первый пример: рассматривается префикс, подключенный к CDN, у которого несколько IP адресов переведены на Spectrum.

Перед началом работы

Cloudflare настоятельно рекомендует настраивать привязки служб через агрегированный блок CIDR, так как это эффективнее, чем добавлять отдельные привязки для несмежных блоков CIDR.

Пример

Префикс, защищенный CDN: 203.0.113.0/24

IP-адреса для перехода на Spectrum:

203.0.113.16
203.0.113.17
203.0.113.18
203.0.113.19
203.0.113.20
203.0.113.21
203.0.113.22
203.0.113.23

Добавьте одну отдельную привязку службы Spectrum для 203.0.113.16 с /29 маска подсети.

После создания (или удаления) привязки сервиса потребуется от четырех до шести часов чтобы распространиться по глобальной сети Cloudflare. В течение этого времени работа служб для IP-адресов из этой области, скорее всего, будет нарушена.


Подготовьте свои IP-адреса

1. Получите информацию об аккаунте

  1. Войдите в свой аккаунт Cloudflare и получите свой ID аккаунта и ключ или токен аутентификации. Если вы используете API-токен, разрешения должны включать Account - IP Prefixes - Edit.
  2. Сделайте GET запрос к Список служб конечную точку и запишите id связанный со службой Spectrum.
  3. Используйте Список префиксов конечную точку и запишите id связанный с префиксом (cidr) который вы будете настраивать.

На этом этапе, продолжая пример, у вас должно получиться соответствие, похожее на следующее:

Переменные Описание
{service_id} Идентификатор службы Spectrum в Cloudflare.

Пример: 969xxxxxxxx000xxx0000000x00001bf
{prefix_id} Идентификатор префикса CDN (203.0.113.0/24) который вы хотите настроить.

Пример: 6b25xxxxxxx000xxx0000000x0000cfc
  1. Чтобы убедиться, что у вас есть привязка службы CDN и что она охватывает весь ваш префикс, выполните GET запрос к Список привязок сервисов конечную точку. Замените {prefix_id} в пути URI на фактический идентификатор префикса, полученный на предыдущем шаге.

Необходимые разрешения API-токена

Хотя бы одно из следующих права доступа токена требуется:
  • IP Prefixes: Write
  • IP Prefixes: Read
Список привязок сервисов
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/addressing/prefixes/$PREFIX_ID/bindings" \
	--request GET \
	--header "X-Auth-Email: $CLOUDFLARE_EMAIL" \
	--header "X-Auth-Key: $CLOUDFLARE_API_KEY"

2. Создайте привязки служб

  1. Сделайте POST запрос к Создание привязки службы конечную точку, указав IP адрес, который нужно привязать к Spectrum. Укажите соответствующая маска сети по необходимости.

Продолжая пример, 203.0.113.100/32 обозначает IP адрес, входящий в префикс CDN 203.0.113.0/24.

Замените {prefix_id} в URI на идентификатор вашего префикса, полученный на предыдущих шагах. В теле запроса cidr значение должно соответствовать IP-адресу или подсети, которые вы настраиваете для использования со Spectrum.

Необходимые разрешения API-токена

Хотя бы одно из следующих права доступа токена требуется:
  • IP Prefixes: Write
Create Service Binding
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/addressing/prefixes/$PREFIX_ID/bindings" \
	--request POST \
	--header "X-Auth-Email: $CLOUDFLARE_EMAIL" \
	--header "X-Auth-Key: $CLOUDFLARE_API_KEY" \
	--json '{
		"cidr": "203.0.113.100/32",
		"service_id": "<SERVICE_ID>"
	}'

В теле ответа начальное состояние подготовки должно быть provisioning.

{
  "errors": [],
  "messages": [],
  "success": true,
  "result": {
    "cidr": "203.0.113.100/32",
    "id": "<SERVICE_BINDING_ID>",
    "provisioning": {
      "state": "provisioning"
      },
    "service_id": "<SERVICE_ID>",
    "service_name": "<SERVICE_NAME>"
  }
}

Вы можете периодически проверять статус привязки службы с помощью Список привязок сервисов конечная точка.

3. Проверьте все привязки служб

По истечении времени распространения (от четырех до шести часов) Список привязок сервисов конечная точка должна вернуть все привязки служб, входящие в префикс: в данном случае CDN и Spectrum.

Необходимые разрешения API-токена

Хотя бы одно из следующих права доступа токена требуется:
Список привязок сервисов
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/addressing/prefixes/$PREFIX_ID/bindings" \
	--request GET \
	--header "X-Auth-Email: $CLOUDFLARE_EMAIL" \
	--header "X-Auth-Key: $CLOUDFLARE_API_KEY"

Настройка служб Cloudflare

CDN

Если вы уже используете BYOIP с CDN, этот шаг можно пропустить. Однако если вы используете это руководство для перехода нескольких IP-адресов из префикса Spectrum на CDN, ознакомьтесь со следующими разделами о карты адресов и DNS-записи.

Карты адресов

Используйте карты адресов чтобы указать, какие IP-адреса Cloudflare должен использовать в ответах DNS, когда запись проксируется.

Вы можете выбрать одну из двух областей действия:

  1. На панели управления Cloudflare перейдите к разделу Address Maps страницу.

    Перейдите в Карты адресов ↗
  2. Выберите Создание карты адресов.

  3. Выберите область действия карты адресов.

  4. Добавьте зоны и IP адреса, которые нужно сопоставить.

  5. Присвойте имя своей address map.

  6. Проверьте информацию и выберите Save and Deploy.

Используйте Create Address Map конечная точка.

Убедитесь, что указаны правильные Key/Token и разрешения.

DNS-записи

Хотя статус проксирования DNS-записи и карта адресов определяют, как авторитативный DNS Cloudflare отвечает на запросы к вашим хостам, IP-адреса, указанные в A/AAAA записи определяют как Cloudflare обращается к настроенному источнику.

Чтобы создать DNS-запись в панели управления:

  1. На панели управления Cloudflare перейдите к разделу DNS-записи страницу.

    Перейдите в Записи ↗
  2. Выберите Add record.

  3. Выберите адрес (A/AAAA) тип записи.

  4. Заполните обязательные поля, указав Статус прокси к проксируется.

  5. Выберите Save.

Чтобы создавать записи с помощью API, используйте Запрос POST. Описания полей см., выбрав тип записи в спецификации тела запроса.

Пример

Тип Название IP-адрес Статус прокси TTL
A www 203.0.113.150 Proxied Auto

На этом этапе, если карта адресов для зоны example.com указывает, что Cloudflare должен использовать 203.0.113.100 для проксируемых записей и указанная выше запись существует в той же зоне, ожидайте следующего:

  1. Cloudflare отвечает на DNS запросы для www.example.com с 203.0.113.100.
  2. Cloudflare проксирует запросы через CDN, а затем направляет их на исходный сервер 203.0.113.150.
  3. Когда ответ HTTP покидает сеть Cloudflare и возвращается клиенту, исходным IP адресом ответа становится 203.0.113.100 (IP адрес, на который изначально поступил HTTP запрос).

Пример

Предположим, что 203.0.113.100 также был исходным IP-адресом, DNS-запись выглядела бы следующим образом:

Тип Название IP-адрес Статус прокси TTL
A www 203.0.113.100 Proxied Auto

Spectrum

Настроить Spectrum для использования собственного IP-адреса можно только через Cloudflare API.

origin_direct поле принимает исходный IP адрес, а edge_ips позволяет указать, какой IP адрес из вашего префикса BYOIP Cloudflare должен использовать для обработки запросов вашего приложения Spectrum.

Необходимые разрешения API-токена

Хотя бы одно из следующих права доступа токена требуется:
Создание приложения Spectrum с использованием имени источника
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/spectrum/apps" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '[
		{
				"protocol": "tcp/22",
				"dns": {
						"type": "CNAME",
						"name": "ssh.example.com"
				},
				"origin_direct": [
						"tcp://192.0.2.1:22"
				],
				"proxy_protocol": "off",
				"ip_firewall": true,
				"tls": "full",
				"edge_ips": {
						"type": "static",
						"ips": [
								"203.0.113.18"
						]
				},
				"traffic_type": "direct"
		}
	]'

(Дополнительно) Добавьте функциональность 7 уровня

Используйте другие функции в зависимости от ваших потребностей, например:

Сноски

  1. работающий по HTTP на 7-м уровне ↩

  2. 4-й уровень или HTTP на 7-м уровне с пользовательскими портами ↩