INTEGRITY Dokumentace

Směrování

Cloudflare Tunnel směruje provoz ze sítě Cloudflare ke službám běžícím za cloudflared. Když publikovat aplikaci, namapujete veřejný hostitelský název na místní službu, například app.example.com na http://localhost:8080 a Cloudflare přitom uplatňuje cachování CDN, WAF a ochranu proti DDoS ještě před předáním požadavku vašemu origin serveru.

cloudflared udržuje více odchozích připojení, která jsou rozložena mezi datacentra Cloudflare, aby byla zajištěna spolehlivost a failover.

Publikované aplikace

Publikovaná aplikace je mapování hostname na službu definované v konfiguraci vašeho tunelu. Každé mapování říká cloudflared která místní služba má přijímat provoz pro daný veřejný hostitelský název.

Na jednom tunelu lze publikovat více aplikací. Pro každou aplikaci uveďte:

Když přidáte trasu v dashboardu, Cloudflare automaticky vytvoří DNS záznam, který nasměruje hostname na subdoménu vašeho tunelu (<UUID>.cfargotunnel.com).

Podporované protokoly

Tabulka níže uvádí typy služeb, které lze směrovat na veřejný hostname. Služby jiné než HTTP vyžadují instalace cloudflared na klientovi aby se mohli připojit koncoví uživatelé.

Typ služby Popis Příklad service hodnota
HTTP Předává příchozí požadavky HTTPS do vaší lokální webové služby prostřednictvím HTTP. http://localhost:8000
HTTPS Předává příchozí požadavky HTTPS přímo do vaší lokální webové služby. Můžete zakázat ověřování TLS pro self-signed certifikáty. https://localhost:8000
UNIX Stejné jako HTTP, jen využívá Unix socket. unix:/home/production/echo.sock
UNIX + TLS Stejné jako HTTPS, jen využívá Unix socket. unix+tls:/home/production/echo.sock
TCP Přenáší TCP prostřednictvím připojení WebSocket. Koncoví uživatelé spouštějí cloudflared access tcp na připojit. Pro dlouhotrvající připojení použijte Client-to-Tunnel místo toho. tcp://localhost:2222
SSH Přenáší SSH prostřednictvím připojení WebSocket. Koncoví uživatelé spouštějí cloudflared access ssh na připojit. Pro dlouhotrvající připojení použijte Client-to-Tunnel místo toho. ssh://localhost:22
RDP Přenáší RDP prostřednictvím připojení WebSocket. Další informace najdete v Připojení k RDP pomocí cloudflared na straně klienta. rdp://localhost:3389
SMB Přenáší SMB prostřednictvím připojení WebSocket. Další informace najdete v Připojení k SMB pomocí cloudflared na straně klienta. smb://localhost:445
HTTP_STATUS Na všechny požadavky odpovídá pevně daným stavovým kódem HTTP. http_status:404
BASTION Umožňuje cloudflared tak, aby fungoval jako jump host a poskytoval přístup na jakoukoli místní adresu. bastion
HELLO_WORLD Testovací server pro ověření připojení Cloudflare Tunnel (pro lokálně spravované tunely pouze). hello_world

Adresy služeb IPv6

Pokud je hodnota service literál IPv6, uzavřete adresu do hranatých závorek, jak je definováno v RFC 3986 ↗. Závorky jsou nutné, aby : znaky v adrese nebyly zaměněny s oddělovačem portu.

Typ služby Příklad service hodnota
HTTP http://[2001:db8::1]:8000
HTTPS https://[2001:db8::1]:443
TCP tcp://[2001:db8::1]:2222
SSH ssh://[2001:db8::1]:22
RDP rdp://[2001:db8::1]:3389

Hostname a adresy IPv4 nepotřebují hranaté závorky, http://localhost:8000 a http://192.0.2.1:8000 jsou platné tak, jak jsou.

DNS záznamy

Když vytvoříte tunel, Cloudflare vygeneruje subdoménu na <UUID>.cfargotunnel.com. Na tuto subdoménu nasměrujete záznam CNAME, abyste přesměrovali provoz z vašeho hostname na tunel.

cfargotunnel.com subdoména směruje přes proxy pouze provoz pro DNS záznamy ve stejném účtu Cloudflare. Pokud někdo zjistí UUID vašeho tunelu, nemůže v jiném účtu vytvořit DNS záznam, který by přes něj provoz směroval.

Vytvořte záznam DNS

Chcete-li vytvořit DNS záznam pro Cloudflare Tunnel:

  1. Přihlaste se do Cloudflare dashboard ↗ a přejděte na DNS záznamy pro vaši doménu.

    Přejděte na Záznamy ↗
  2. Vyberte Přidat záznam.

  3. Zadejte následující hodnoty:

    • Typ: CNAME
    • Název: Subdoména vaší aplikace
    • Cíl: <UUID>.cfargotunnel.com
  4. Vyberte Save.

Příklad vyplněných polí pro vytvoření nového záznamu CNAME.

U lokálně spravovaných tunelů spusťte následující příkaz a vytvořte záznam CNAME směřující na subdoménu vašeho tunelu:

cloudflared tunnel route dns <UUID or NAME> www.app.com

Tím se vytvoří záznam CNAME, ale provoz se neproxuje, dokud tunel neběží.

Záznam DNS a tunel jsou na sobě nezávislé. Můžete vytvořit záznamy DNS, které míří na tunel, jenž zrovna neběží. Pokud se tunel zastaví, záznam DNS se nesmaže: návštěvníkům se zobrazí 1016 chyba.

Můžete také vytvořit více záznamů DNS směřujících na stejnou subdoménu tunelu. Pokud směrujete provoz z více hostname na více služeb, vytvořte pro každý hostname záznam CNAME. Všechny záznamy sdílejí stejný cíl.

Load balancing

Použijte veřejný load balancer k rozložení provozu mezi servery, na kterých běží vaše publikované aplikace. To zajišťuje failover založený na kontrolách stavu a inteligentní směrování provozu mezi regiony.

graph LR
    accTitle: Load balancing traffic to applications behind Cloudflare Tunnel

    A[Internet] --> C{Cloudflare <br> Load Balancer}
    C -- Tunnel 1 --> cf1
    C -- Tunnel 2 --> cf2
    subgraph F[Data center 2]
        cf2[cloudflared]
        S3[App server]
        S4[App server]
        cf2-->S3
        cf2-->S4
    end
    subgraph E[Data center 1]
        cf1[cloudflared]
        S1[App server]
        S2[App server]
        cf1-->S1
        cf1-->S2
    end

Repliky oproti load balancerům

Spuštění více cloudflared repliky se stejným UUID tunelu poskytuje základní redundanci: pokud jeden hostitel selže, provoz dál obsluhují ostatní repliky. Load balancer ale všechny repliky se stejným UUID tunelu považuje za jediný endpoint.

Pro podrobné směrování provozu a afinita relace, připojte každý hostitel pomocí jiného tunelového UUID, aby je load balancer mohl adresovat nezávisle.

Přidejte tunel do poolu load balanceru

Chcete-li vytvořit load balancer pro publikované aplikace Cloudflare Tunnel:

  1. V dashboardu Cloudflare přejděte na Load Balancing stránce.

    Přejděte na Load Balancing ↗
  2. Vyberte Vytvořit load balancer, pak vyberte Veřejný load balancer.

  3. V části Vyberte web, vyberte doménu trasy své publikované aplikace.

  4. Na Hostname stránce zadejte hostname pro load balancer (například lb.example.com).

  5. Na Fondy stránce vyberte Vytvořit Pool a zadejte popisný název.

  6. Přidejte endpoint tunelu s následujícími hodnotami:

    • Název endpointu: Název serveru, na kterém aplikace běží
    • Adresa endpointu: <UUID>.cfargotunnel.com (ID tunelu najdete v [Cloudflare dashboardu](https://dash.cloudflare.com/) v části **Networking** > **Tunnels**)
    • Hodnota hlavičky: Hostname vaší publikované trasy aplikace (například app.example.com)
    • Váha: 1 (pouze pokud existuje jeden endpoint)
  7. Vyberte Záložní pool. Viz zásady řízení provozu pro možnosti směrování.

  8. (Doporučeno) Na Monitory stránce připojte monitor k endpointu. Pro aplikaci HTTP nebo HTTPS vytvořte monitor HTTPS:

    • Typ: HTTPS
    • Cesta: /
    • Port: 443
    • Očekávaný kód (kódy): 200
    • Header Name: Host
    • Hodnota: app.example.com
  9. Uložte a nasaďte load balancer.

Chcete-li provést test, otevřete svou aplikaci pomocí názvu hostitele load balanceru (lb.example.com).

Sledujte origin servery TCP tunelu

Monitory TCP nejsou u tunelových endpointů podporovány. Místo toho vytvořte endpoint kontroly stavu na cloudflared hostitele a použijte monitor HTTPS. Můžete například použít cloudflared a vrátit pevně danou HTTP stavovou odpověď:

  1. Přidejte trasu publikované aplikace pro health check:
    • Hostname: health-check.example.com
    • Typ služby: HTTP_STATUS
    • Stavový kód HTTP: 200
  2. Vytvořte monitor s tímto nastavením:
    • Typ: HTTPS
    • Cesta: /
    • Port: 443
    • Očekávaný kód (kódy): 200
    • Header Name: Host
    • Hodnota: health-check.example.com

Tento monitor ověřuje, že cloudflared je dostupný. Neověřuje se tím, zda upstream služba přijímá požadavky.

Preference lokálního připojení

Pokud zaznamenáte nerovnoměrné rozložení provozu mezi endpoints na různých místech, možná budete muset upravit konfiguraci load balanceru.

Cloudflare používá Směrování Anycast ↗ směrovat požadavky koncových uživatelů do nejbližšího datacentra. cloudflared upřednostňuje obsluhu požadavků pomocí připojení ve stejném datovém centru, což může ovlivnit způsob rozložení provozu mezi jednotlivými endpointy.

Pokud spustíte cloudflared repliky na stejném UUID tunelu, zvažte přechod na samostatné tunely, abyste získali podrobnější kontrolu nad řízení provozu.

Nastavení Cloudflare

Publikované aplikace dědí nastavení Cloudflare pro svůj hostname, včetně cache rules, Pravidla WAF, a další Pravidla konfigurace. Toto nastavení můžete pro každý hostname změnit v Cloudflare dashboard ↗.

Pokud používáte load balancer, nastavení se místo toho použijí na hostname load balanceru.