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

Архитектура клиента

В этом руководстве объясняется, как Cloudflare One Client (ранее WARP) взаимодействует с операционной системой устройства для маршрутизации трафика в Режим Traffic and DNS режим.

В Режим только DNS режиме информация об IP-трафике неприменима. В Traffic only mode режиме информация о DNS-трафике неприменима.

Поток трафика клиента

Cloudflare One Client предоставляет организациям детальный контроль над приложениями, к которым может обращаться устройство конечного пользователя. Клиент перенаправляет DNS- и сетевой трафик с устройства в глобальную сеть Cloudflare, где в облаке применяются политики Zero Trust. На всех операционных системах служба WARP поддерживает три подключения между устройством и Cloudflare:

Подключение Протокол Назначение
Туннель WARP (через WireGuard или MASQUE) UDP Отправляет IP-пакеты в Gateway для применения сетевых политик, политик HTTP и доступа к приватной сети.
DoH HTTPS Отправляет DNS-запросы в Gateway для применения политик DNS. Соединение DoH поддерживается внутри туннеля WARP.
Оркестрация устройств HTTPS Выполняет регистрацию пользователя, проверяет состояние устройства и применяет настройки профиля клиента устройства.
flowchart LR
subgraph Device
W[Cloudflare One Client] -.-> D
D[DNS proxy]
W -.-> V[Virtual interface]
end
subgraph Cloudflare
A[Zero Trust account]
subgraph Gateway
N[L3/L4 firewall]
G[DNS resolver]
end
end
W<--"Device
orchestration"-->A
subgraph tunnel["WARP tunnel"]
 ip@{ shape: text, label: "Network traffic" }
  dns@{ shape: text, label: "DNS traffic" }
end
V --- ip-->N
D --- dns-->G
N --> O[(Application)]

Ваш Split Tunnel конфигурация определяет, какой IP-трафик направляется через туннель WARP. Ваша Local Domain Fallback конфигурация определяет, какие DNS-запросы отправляются в Gateway через DoH. Трафик к API оркестрации устройств конечная точка не подчиняется правилам Split Tunnel, так как соединение всегда работает вне туннеля WARP.

Далее вы узнаете, как Cloudflare One Client настраивает операционную систему для применения правил маршрутизации Local Domain Fallback и Split Tunnel. Детали реализации различаются для десктопных и мобильных клиентов.

Windows, macOS и Linux

Клиент для настольных систем состоит из двух компонентов: службы (демона), которая обеспечивает всю функциональность клиента на вашем устройстве, и графической оболочки, упрощающей взаимодействие пользователя с демоном.

DNS-трафик

Когда вы подключаете Cloudflare One Client, он создает на устройстве локальный DNS-прокси и привязывает его к следующим IP-адресам на порте 53 (порт, отведенный для DNS-трафика):

Затем Cloudflare One Client настраивает операционную систему на отправку всех DNS-запросов на эти IP-адреса. Все сетевые интерфейсы устройства теперь будут использовать этот локальный DNS-прокси для разрешения DNS-имён. Иными словами, весь DNS-трафик теперь будет обрабатываться Cloudflare One Client.

В зависимости от настроек Local Domain Fallback клиент Cloudflare One перенаправит запрос либо в Gateway для применения DNS-политик, либо на ваш частный DNS-резолвер.

flowchart LR
D{{DNS request}}-->L["Local DNS proxy <br> (127.0.2.2 and 127.0.2.3)"]-->R{In local domain fallback?}
R -- Yes --> F[Private DNS resolver]
R -- No --> G[Cloudflare Gateway]

Убедиться, что операционная система использует локальный DNS-прокси Cloudflare One Client, можно следующим образом:

В macOS откройте окно терминала и выполните scutil --dns. В качестве DNS-серверов следует указать локальные IP-адреса DNS-прокси Cloudflare One Client.

scutil --dns
DNS configuration (for scoped queries)
resolver #1
  search domain[0] : <DNS-SEARCH-DOMAIN>
  nameserver[0] : 127.0.2.2
  nameserver[1] : 127.0.2.3
  if_index : 15 (en0)
  flags    : Scoped, Request A records
  reach    : 0x00030002 (Reachable,Local Address,Directly Reachable Address)
resolver #2
  nameserver[0] : 127.0.2.2
  nameserver[1] : 127.0.2.3
  nameserver[2] : fd01:db8:1111::2
  nameserver[3] : fd01:db8:1111::3
  if_index : 23 (utun3)
  flags    : Scoped, Request A records, Request AAAA records
  reach    : 0x00030002 (Reachable,Local Address,Directly Reachable Address)

В Windows откройте окно PowerShell и выполните ipconfig. В качестве DNS-серверов следует указать локальные IP-адреса DNS-прокси Cloudflare One Client.

ipconfig
Windows IP Configuration

Unknown adapter CloudflareWARP:

   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Cloudflare WARP Interface Tunnel
   Physical Address. . . . . . . . . :
   DHCP Enabled. . . . . . . . . . . : No
   Autoconfiguration Enabled . . . . : Yes
   IPv6 Address. . . . . . . . . . . : 2606:4700:110:8f79:145:f180:fc4:8106(Preferred)
   Link-local IPv6 Address . . . . . : fe80::83b:d647:4bed:d388%49(Preferred)
   IPv4 Address. . . . . . . . . . . : 172.16.0.2(Preferred)
   Subnet Mask . . . . . . . . . . . : 255.255.255.255
   Default Gateway . . . . . . . . . :
   DNS Servers . . . . . . . . . . . : 127.0.2.2
                                       127.0.2.3
   NetBIOS over Tcpip. . . . . . . . : Enabled

В Linux проверьте /etc/resolv.conf файл. В качестве DNS-серверов должны быть указаны локальные IP-адреса DNS-прокси Cloudflare One Client.

cat /etc/resolv.conf
# This file was generated by cloudflare-warp.
nameserver 127.0.2.2
nameserver 127.0.2.3
nameserver fd01:db8:1111::2
nameserver fd01:db8:1111::3
search <DNS-SEARCH-DOMAIN>
options edns0
options trust-ad

IP-трафик

Когда вы подключаете Cloudflare One Client, он вносит на устройстве три изменения, чтобы управлять тем, идет трафик через туннель WARP или в обход него:

flowchart LR
P{{IP packet}}-->R["OS routing table"]-->F["OS firewall"] --> S{Excluded from Split Tunnels?}
S -- Yes --> A[(Application)]
S -- No --> U["Virtual interface<br> (172.16.0.2)"] --> G[Cloudflare Gateway]

Виртуальный интерфейс

Виртуальные интерфейсы позволяют операционной системе логически разделить физический интерфейс, например сетевой контроллер (NIC), на отдельные интерфейсы для маршрутизации IP-трафика. Виртуальный интерфейс Cloudflare One Client поддерживает соединение WireGuard/MASQUE между устройством и Cloudflare. По умолчанию его IPv4-адрес жёстко задан как 172.16.0.2 для устройств, использующих WireGuard, тогда как устройства, использующие MASQUE, присвоен уникальный IP из пространства IP-адресов CGNAT (100.96.0.0/12). Вы можете переопределить IP-адрес виртуального интерфейса по умолчанию с помощью пользовательский IP-адрес устройства.

Чтобы просмотреть список всех сетевых интерфейсов операционной системы:

В Windows выполните ipconfig. Когда Cloudflare One Client включен, вы увидите адаптер с именем CloudflareWARP с IP-адресом вашего устройства.

ipconfig
Windows IP Configuration

Unknown adapter CloudflareWARP:

   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Cloudflare WARP Interface Tunnel
   Physical Address. . . . . . . . . :
   DHCP Enabled. . . . . . . . . . . : No
   Autoconfiguration Enabled . . . . : Yes
   IPv6 Address. . . . . . . . . . . : 2606:4700:110:8f79:145:f180:fc4:8106(Preferred)
   Link-local IPv6 Address . . . . . : fe80::83b:d647:4bed:d388%49(Preferred)
   IPv4 Address. . . . . . . . . . . : 172.16.0.2(Preferred)
   Subnet Mask . . . . . . . . . . . : 255.255.255.255
   Default Gateway . . . . . . . . . :
   DNS Servers . . . . . . . . . . . : 127.0.2.2
                                       127.0.2.3
   NetBIOS over Tcpip. . . . . . . . : Enabled

В macOS выполните ifconfig. Когда Cloudflare One Client включен, вы увидите utun интерфейс с IP-адресом вашего устройства.

ifconfig
<redacted>
utun3: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1280
	inet 172.16.0.2 --> 172.16.0.2 netmask 0xffffffff
	inet6 fe80::f6d4:88ff:fe82:6d9e%utun3 prefixlen 64 scopeid 0x17
	inet6 2606:4700:110:8c7d:7369:7526:a59b:5636 prefixlen 128
	nd6 options=201<PERFORMNUD,DAD>

В Linux выполните ifconfig или ip addr. Когда Cloudflare One Client включен, вы увидите utun интерфейс с IP-адресом вашего устройства.

ip addr
<redacted>
3: CloudflareWARP: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1280 qdisc mq state UNKNOWN group default qlen 500
    link/none
    inet 172.16.0.2/32 scope global CloudflareWARP
       valid_lft forever preferred_lft forever
    inet6 2606:4700:110:8a2e:a5f7:a8de:a1f9:919/128 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::117e:276b:8a79:c498/64 scope link stable-privacy
       valid_lft forever preferred_lft forever

В примере выше IPv4-адрес устройства 172.16.0.2.

Таблица маршрутизации

Cloudflare One Client изменяет системную таблицу маршрутизации, чтобы управлять тем, какой IP-трафик направляется в Gateway. Таблица маршрутизации определяет, какой сетевой интерфейс должен обрабатывать пакеты для конкретного IP-адреса. По умолчанию весь трафик проходит через виртуальный интерфейс Cloudflare One Client, за исключением IP-адресов и доменов из списка исключений Split Tunnel (они используют интерфейс устройства по умолчанию).

Убедиться, что таблица маршрутизации соответствует правилам Split Tunnel, можно так:

Чтобы просмотреть всю таблицу маршрутизации в macOS, выполните netstat -r.

Вы также можете выполнить поиск по таблице маршрутизации для домена или IP-адреса. В этом примере видно, что трафик к google.com отправляется через utun3, являющийся виртуальным интерфейсом Cloudflare One Client на этом устройстве:

route get google.com
   route to: lga25s81-in-f14.1e100.net
destination: 136.0.0.0
       mask: 248.0.0.0
  interface: utun3
      flags: <UP,DONE,PRCLONING>
 recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu     expire
       0         0         0         0         0         0      1280         0

В отличие от этого, данный DHCP-адрес исключен из Cloudflare One Client и использует интерфейс по умолчанию:

route get 169.254.0.0
   route to: 169.254.0.0
destination: 169.254.0.0
       mask: 255.255.0.0
  interface: en0
      flags: <UP,DONE,CLONING,STATIC>
 recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu     expire
       0         0         0         0         0         0      1500   -210842

Чтобы просмотреть всю таблицу маршрутизации в Windows, выполните netstat -r.

Вы также можете выполнить поиск по таблице маршрутизации для IP-адреса. В этом примере видно, что трафик к 1.1.1.1 отправляется через виртуальный интерфейс Cloudflare One Client:

Find-NetRoute -RemoteIPAddress "1.1.1.1" | Select-Object InterfaceAlias -Last 1
InterfaceAlias
--------------
CloudflareWARP

В отличие от этого, данный DHCP-адрес исключен из Cloudflare One Client и использует интерфейс по умолчанию:

Find-NetRoute -RemoteIPAddress "169.254.0.0" | Select-Object InterfaceAlias -Last 1
InterfaceAlias
--------------
Wi-Fi

Чтобы просмотреть всю таблицу маршрутизации в Linux, выполните ip -6 route show table all или ip -4 route show table all.

Вы также можете выполнить поиск по таблице маршрутизации для IP-адреса. В этом примере видно, что трафик к 1.1.1.1 отправляется через виртуальный интерфейс Cloudflare One Client:

ip route get 1.1.1.1
1.1.1.1 dev CloudflareWARP table 65743 src 172.16.0.2 uid 1000
    cache

В отличие от этого, данный DHCP-адрес исключен из Cloudflare One Client и использует интерфейс по умолчанию:

ip route get 169.254.0.0
169.254.0.0 dev ens18 src 172.24.8.6 uid 1000
    cache

Системный межсетевой экран

Cloudflare One Client изменяет брандмауэр операционной системы, чтобы обеспечить соблюдение правил Split Tunnel. Это создаёт дополнительный уровень защиты на случай, если какая-либо служба обойдёт таблицу маршрутизации и попытается отправить трафик напрямую через другой интерфейс. Например, если трафик к 203.0.113.0 должен проверяться Gateway, мы создаём правило брандмауэра, которое блокирует 203.0.113.0 на всех интерфейсах, кроме utun.

iOS, Android и ChromeOS

На iOS и Android/ChromeOS Cloudflare One Agent устанавливается как VPN-клиент для перехвата и маршрутизации всего трафика. Приложение создано на официальном VPN-фреймворке для iOS и Android. Дополнительную информацию см. в документации Apple о Документация NetworkExtension и Google Документация для разработчиков Android.

Обратите внимание, что ChromeOS запускает Android-приложение в виртуальной машине, а не в виде нативного приложения Chrome.