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

Включение Proxy protocol

Поскольку Cloudflare перехватывает пакеты перед их пересылкой на ваш сервер, при определении IP-адреса клиента вы увидите IP-адрес Cloudflare, а не настоящий адрес клиента.

Некоторым из ваших сервисов может потребоваться знать настоящий IP-адрес клиента. В таких случаях можно использовать протокол проксирования, чтобы Cloudflare передавал IP-адрес клиента вашему сервису. Способ передачи данных прокси зависит от того, используется ли TCP или UDP. Для TCP Spectrum поддерживает добавление Proxy Protocol v1 ↗, это удобочитаемая версия, поддерживаемая Amazon ELB и NGINX ↗. Для приложений UDP компания Cloudflare разработала собственный протокол прокси под названием Simple Proxy Protocol. Учтите, что Proxy Protocol не поддерживается для исходящего трафика Spectrum в Cloudflare WAN (ранее Magic WAN).

Включение Proxy Protocol v1 для TCP

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

    Перейдите в Spectrum ↗
  2. Найдите приложение, которое будет использовать протокол PROXY, и выберите Настройте.

  3. В раскрывающемся списке выберите PROXY Protocol v1.

Когда TCP-приложения настроены на использование PROXY Protocol v1, Cloudflare будет добавлять к каждому входящему TCP соединению текстовый заголовок PROXY Protocol.

Заголовок Proxy Protocol v1

PROXY Protocol добавляет к каждому соединению заголовок с указанием IP-адреса и порта клиента. Текстовый заголовок PROXY Protocol имеет следующий формат:

PROXY_STRING + single space + INET_PROTOCOL + single space + CLIENT_IP + single space + PROXY_IP + single space + CLIENT_PORT + single space + PROXY_PORT + "\r\n"

Пример строки PROXY Protocol для адреса IPv4 выглядит так:

PROXY TCP4 192.0.2.0 192.0.2.255 42300 443\r\n

Пример строки PROXY Protocol для адреса IPv6 выглядит так:

PROXY TCP6 2001:db8:: 2001:db8:ffff:ffff:ffff:ffff:ffff:ffff 42300 443\r\n

Включение Proxy Protocol v2 для TCP/UDP

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

    Перейдите в Spectrum ↗
  2. Найдите приложение, которое будет использовать протокол PROXY, и выберите Настройте.

  3. В раскрывающемся списке выберите PROXY Protocol v2.

Когда TCP-приложения настроены на использование PROXY Protocol v2, Cloudflare будет добавлять к каждому входящему TCP соединению двоичный заголовок PROXY Protocol.

Когда UDP-приложения настроены на использование PROXY Protocol v2, Cloudflare будет добавлять к первой UDP дейтаграмме потока двоичный заголовок PROXY Protocol.

Заголовок Proxy Protocol v2

PROXY Protocol добавляет к каждому соединению заголовок с указанием IP-адреса и порта клиента.

Двоичный заголовок PROXY Protocol для входящего адреса IPv4 имеет следующий формат:

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                                                               +
|                  Proxy Protocol v2 Signature                  |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version|Command|   AF  | Proto.|         Address Length        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      IPv4 Source Address                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    IPv4 Destination Address                   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          Source Port          |        Destination Port       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Двоичный заголовок PROXY Protocol для входящего адреса IPv6 имеет следующий формат:

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                                                               +
|                  Proxy Protocol v2 Signature                  |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version|Command|   AF  | Proto.|         Address Length        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                                                               +
|                                                               |
+                      IPv6 Source Address                      +
|                                                               |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                                                               +
|                                                               |
+                    IPv6 Destination Address                   +
|                                                               |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          Source Port          |        Destination Port       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Включение Simple Proxy Protocol для UDP

При использовании Spectrum для UDP информацию об исходном IP-адресе и порте клиента можно получить с помощью Simple Proxy Protocol, лёгкого протокола, разработанного специально для UDP.

Чтобы включить эту функцию, выберите Настройте в приложении Spectrum и переключите настройку Simple Proxy Protocol в положение Включено.

Simple Proxy Protocol требует, чтобы источник также добавлял к пакетам, предназначенным для клиента, такой же заголовок с исходной информацией об источнике клиента. Это нужно для проверки того, что входящие пакеты действительно предназначены для клиента.

Подробнее о заголовках Simple Proxy Protocol см. в Заголовки Simple Proxy Protocol.