INTEGRITY Dokumentace

Architektura klienta

Tento návod vysvětluje, jak klient Cloudflare One Client (dříve WARP) spolupracuje s operačním systémem zařízení při směrování provozu v Traffic and DNS mode režimu.

V Režim pouze DNS režimu se informace o IP provozu nepoužijí. V Traffic only mode režimu se informace o DNS provozu nepoužijí.

Tok provozu klienta

Cloudflare One Client umožňuje organizacím podrobně řídit, ke kterým aplikacím mají koncová uživatelská zařízení přístup. Klient přeposílá DNS a síťový provoz ze zařízení do globální sítě Cloudflare, kde se v cloudu uplatňují zásady Zero Trust. Na všech operačních systémech udržuje démon WARP mezi zařízením a Cloudflare tři připojení:

Připojení Protokol Účel
Tunel WARP (prostřednictvím WireGuard nebo MASQUE) UDP Odesílá IP pakety do Gateway za účelem vynucení síťových zásad, vynucení zásad HTTP a přístupu k privátní síti.
DoH HTTPS Odesílá požadavky DNS do Gateway za účelem vynucení zásad DNS. Připojení DoH je udržováno uvnitř tunelu WARP.
Orchestrace zařízení HTTPS Provede registraci uživatele, zkontroluje stav zařízení a použije nastavení profilu klienta zařízení.
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)]

Váš Split Tunnel konfigurace určuje, jaký IP provoz se odesílá přes tunel WARP. Vaše Local Domain Fallback konfigurace určuje, které DNS požadavky se odesílají do Gateway přes DoH. Provoz na API pro orchestraci zařízení endpoint se neřídí pravidly Split Tunnel, protože spojení vždy funguje mimo tunel WARP.

Dále se dozvíte, jak Cloudflare One Client nastavuje váš operační systém tak, aby uplatňoval pravidla směrování Local Domain Fallback a Split Tunnel. Podrobnosti implementace se liší mezi desktopovými a mobilními klienty.

Windows, macOS a Linux

Desktopový klient se skládá ze dvou částí: služby/démona, který na vašem zařízení zajišťuje veškerou funkčnost klienta, a grafické nadstavby (GUI wrapperu), která uživateli usnadňuje interakci s démonem.

DNS provoz

Když se připojíte přes Cloudflare One Client, klient na zařízení vytvoří lokální DNS proxy a naváže ji na tyto IP adresy na portu 53 (port určený pro DNS provoz):

Cloudflare One Client poté nastaví operační systém tak, aby všechny DNS požadavky posílal na tyto IP adresy. Všechna síťová rozhraní zařízení nyní budou pro překlad DNS používat tuto místní DNS proxy. Jinými slovy, veškerý DNS provoz od této chvíle zajišťuje Cloudflare One Client.

Na základě konfigurace Local Domain Fallback přepošle Cloudflare One Client požadavek buď na Gateway kvůli vynucení DNS zásad, nebo na váš privátní DNS resolver.

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]

Můžete ověřit, že operační systém používá lokální DNS proxy nástroje Cloudflare One Client:

V systému macOS otevřete okno terminálu a spusťte scutil --dns. Servery DNS by měly být nastaveny na lokální IP adresy DNS proxy 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)

Ve Windows otevřete okno PowerShellu a spusťte ipconfig. Servery DNS by měly být nastaveny na lokální IP adresy DNS proxy 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

Na Linuxu zkontrolujte /etc/resolv.conf soubor. Servery DNS by měly být nastaveny na lokální IP adresy DNS proxy aplikace 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

Provoz IP

Když se připojíte přes Cloudflare One Client, provede na zařízení tři změny, kterými řídí, zda se provoz odesílá uvnitř nebo mimo tunel 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]

Virtuální rozhraní

Virtuální rozhraní umožňují operačnímu systému logicky rozdělit fyzické rozhraní, například síťový řadič (NIC), na samostatná rozhraní pro účely směrování IP provozu. Právě virtuální rozhraní Cloudflare One Client udržuje připojení WireGuard/MASQUE mezi zařízením a Cloudflare. Jeho IPv4 adresa je ve výchozím nastavení pevně nastavena jako 172.16.0.2 pro zařízení používající WireGuard, zatímco zařízení používající MASQUE jsou přiřazena jedinečná IP z rozsahu IP adres CGNAT (100.96.0.0/12). Výchozí IP adresu virtuálního rozhraní můžete přepsat pomocí vlastní IP adresa zařízení.

Chcete-li zobrazit seznam všech síťových rozhraní v operačním systému:

Ve Windows spusťte ipconfig. Když je Cloudflare One Client zapnutý, uvidíte adaptér s názvem CloudflareWARP s IP adresou vašeho zařízení.

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

V systému macOS spusťte ifconfig. Když je Cloudflare One Client zapnutý, uvidíte utun rozhraní s IP adresou vašeho zařízení.

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>

Na Linuxu spusťte ifconfig nebo ip addr. Když je Cloudflare One Client zapnutý, uvidíte utun rozhraní s IP adresou vašeho zařízení.

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

V uvedeném příkladu je IPv4 adresa zařízení 172.16.0.2.

Směrovací tabulka

Cloudflare One Client upravuje systémovou směrovací tabulku, aby řídil, jaký IP provoz jde do Gateway. Směrovací tabulka určuje, které síťové rozhraní má obsluhovat pakety pro danou IP adresu. Veškerý provoz se ve výchozím nastavení směruje přes virtuální rozhraní Cloudflare One Client, s výjimkou IP adres a domén na vašem seznamu výjimek Split Tunnel (ty používají výchozí rozhraní vašeho zařízení).

Můžete ověřit, že směrovací tabulka odpovídá pravidlům Split Tunnel:

Chcete-li zobrazit celou směrovací tabulku v systému macOS, spusťte netstat -r.

Ve směrovací tabulce můžete také vyhledávat podle domény nebo IP adresy. V tomto příkladu vidíme, že provoz do google.com se odesílá přes utun3, což je virtuální rozhraní Cloudflare One Client na tomto zařízení:

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

Naproti tomu tato adresa DHCP je z Cloudflare One Client vyloučena a používá výchozí rozhraní:

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

Chcete-li zobrazit celou směrovací tabulku v systému Windows, spusťte netstat -r.

Ve směrovací tabulce můžete také vyhledávat podle IP adresy. V tomto příkladu vidíme, že provoz do 1.1.1.1 se odesílá přes virtuální rozhraní Cloudflare One Client:

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

Naproti tomu tato adresa DHCP je z Cloudflare One Client vyloučena a používá výchozí rozhraní:

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

Chcete-li zobrazit celou směrovací tabulku v systému Linux, spusťte ip -6 route show table all nebo ip -4 route show table all.

Ve směrovací tabulce můžete také vyhledávat podle IP adresy. V tomto příkladu vidíme, že provoz do 1.1.1.1 se odesílá přes virtuální rozhraní 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

Naproti tomu tato adresa DHCP je z Cloudflare One Client vyloučena a používá výchozí rozhraní:

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

Systémový firewall

Cloudflare One Client upravuje firewall operačního systému, aby vynutil vaše pravidla Split Tunnel. Přidává to další vrstvu ochrany pro případ, že by nějaká služba obešla směrovací tabulku a pokusila se poslat provoz přímo přes jiné rozhraní. Pokud by například provoz do 203.0.113.0 má být kontrolován pomocí Gateway, vytvoříme pravidlo firewallu, které blokuje 203.0.113.0 na všech rozhraních kromě utun.

iOS, Android a ChromeOS

Na iOS a Android/ChromeOS se Cloudflare One Agent nainstaluje jako VPN klient, který zachytává a směruje veškerý provoz. Aplikace je postavena na oficiálním VPN frameworku pro iOS a Android. Další informace najdete v dokumentaci Apple Dokumentace NetworkExtension a Google Dokumentace pro vývojáře Android.

Upozorňujeme, že ChromeOS spouští aplikaci Android ve virtuálním stroji, nikoli jako nativní aplikaci Chrome.