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

Прокси

Вы можете перенаправлять HTTP и сеть трафик в Gateway для логирования и фильтрации. Gateway может проксировать как исходящий трафик, так и трафик, направленный к ресурсам, подключённым через Cloudflare Tunnel, туннель Generic Routing Encapsulation (GRE) или IPsec-туннель. Когда пользователь подключается к Gateway proxy, Gateway принимает соединение и устанавливает новое отдельное соединение с исходным сервером.

Прокси Gateway необходим для фильтрации HTTP- и сетевого трафика через Cloudflare One Client в режиме Traffic and DNS. Чтобы проксировать HTTP-трафик без развёртывания Cloudflare One Client, можно настроить PAC-файлы на ваших устройствах.

Алгоритм прокси

Gateway использует Алгоритм Happy Eyeballs, который пробует соединения IPv4 и IPv6 с постепенным откатом и использует то семейство адресов, которое отвечает первым, чтобы проксировать трафик в следующем порядке:

  1. Браузер пользователя инициирует установление TCP-соединения, отправляя Gateway TCP-сегмент SYN.
  2. Gateway отправляет SYN-сегмент на исходный сервер.
  3. Если исходный сервер отправляет в ответ сегмент SYN-ACK, Gateway устанавливает отдельные TCP-соединения между пользователем и Gateway, а также между Gateway и исходным сервером.
  4. Gateway проверяет и фильтрует трафик, получаемый от пользователя.
  5. Если трафик проходит проверку, Gateway проксирует его в обоих направлениях между пользователем и исходным сервером.
flowchart TD
    %% Accessibility
    accTitle: How Gateway proxy works
    accDescr: Flowchart describing how the Gateway proxy uses the Happy Eyeballs algorithm to establish TCP connections and proxy user traffic.

    %% Flowchart
    A[User's device sends TCP SYN to Gateway] --> B[Gateway sends TCP SYN to origin server]
    B --> C{{Origin server responds with TCP SYN-ACK?}}
    C -->|Yes| E[TCP handshakes completed]
    C -->|No| D[Connection fails]
    E --> F{{Connection allowed?}}
    F -->|Allow policy| G[Gateway proxies traffic bidirectionally]
    F -->|Block policy| H[Connection blocked by firewall policies]

    %% Styling
    style D stroke:#D50000
    style G stroke:#00C853
    style H stroke:#D50000

Поддерживаемые протоколы

Gateway поддерживает проксирование трафика TCP, UDP и ICMP.

TCP

Если прокси включён, Gateway всегда перенаправляет TCP-трафик.

По умолчанию попытки TCP-подключения завершаются по тайм-ауту через 30 секунд, а неактивные соединения разрываются через 8 часов.

UDP

UDP-прокси перенаправляет UDP-трафик, например VoIP, внутренние DNS-запросы, и толстых клиентских приложений.

HTTP/3 использует протокол QUIC поверх UDP. Чтобы проверять трафик HTTP/3, включите расшифровку TLS и прокси UDP. После этого Gateway будет перехватывать соединение HTTP/3 и подключаться к серверу-источнику по HTTP/2. В противном случае трафик HTTP/3 будет обходить проверку. Подробнее о поведении в разных браузерах см. в Проверка HTTP/3.

ICMP (Internet Control Message Protocol)

Прокси ICMP позволяет ICMP-трафику достигать вашей приватной сети через Gateway. Например, это позволяет пользователю Cloudflare One Client выполнять диагностические команды, такие как ping и traceroute к внутреннему IP-адресу сервера.

Разрешить ICMP-трафик через cloudflared

Чтобы использовать ICMP-прокси с Cloudflare Tunnel, может потребоваться настроить cloudflared хост, чтобы разрешить прохождение ICMP-трафика через cloudflared.

  1. Убедитесь, что ping_group_range включает идентификатор группы (GID) пользователя, от имени которого выполняется cloudflared:

    a. Найдите пользователя, которому принадлежит cloudflared процесс:

    ps -aux | grep cloudflared
    johndoe         407  0.8  1.7 1259904 35296 ?       Ssl  21:02   0:00 /usr/bin/cloudflared --no-autoupdate tunnel run --token eyJhI...

    b. Получите Group ID для cloudflared пользователя:

    id -g johndoe
    10001

    c. Определите идентификаторы групп, которым разрешено использовать ICMP:

    sudo sysctl net.ipv4.ping_group_range
    net.ipv4.ping_group_range= 0 10000

    d. Либо добавьте пользователя в группу в пределах этого диапазона, либо обновите диапазон так, чтобы он включал группу, в которой пользователь уже состоит. Чтобы обновить ping_group_range:

    echo 0 10001 | sudo tee /proc/sys/net/ipv4/ping_group_range

    e. Если нужно, чтобы изменение применилось к уже запущенному процессу, перезапустите cloudflared. Чтобы изменение сохранялось после перезагрузки, обновите systcl параметры:

    echo "net.ipv4.ping_group_range = 0 10001" | sudo tee -a /etc/sysctl.d/99-cloudflared.conf
  2. Если вы используете несколько сетевых интерфейсов (например, eth0 и eth1), настройте cloudflared использовать внешний интерфейс, обращённый в интернет:

    cloudflared tunnel run --icmpv4-src <IP of primary interface>

В своей среде измените ping_group_range параметр, чтобы включить идентификатор группы (GID) пользователя, от имени которого выполняется cloudflared.

По умолчанию cloudflared Контейнер Docker выполняется от имени пользователя с именем nonroot внутри контейнера. nonroot это конкретный пользователь, который существует в базовый образ который мы используем, и его Group ID жёстко задан как 65532.

Включите Gateway proxy

Переключатель прокси Gateway применяется только к трафику с устройств Cloudflare One Client. Gateway всегда проксирует трафик, отправленный с помощью PAC-файлы или Browser Isolation независимо от этого параметра.

  1. В Панель управления Cloudflare, перейдите в Zero Trust > Политики трафика > Настройки трафика.
  2. В Настройки прокси и проверки, включите Разрешить Secure Web Gateway проксировать трафик.
  3. Выберите TCP.
  4. (Необязательно) В зависимости от варианта использования вы можете выбрать UDP и/или ICMP.