← Cloudflare Tunnel / tunnel
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.
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:
- Public hostname je doména nebo subdoména, kterou uživatelé navštěvují (například
app.example.com). - Služba je místní adresa nebo socket, na kterém aplikace běží (například
http://localhost:8080).
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:
-
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 ↗ -
Vyberte Přidat záznam.
-
Zadejte následující hodnoty:
- Typ: CNAME
- Název: Subdoména vaší aplikace
- Cíl:
<UUID>.cfargotunnel.com
-
Vyberte Save.

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.comTí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:
-
V dashboardu Cloudflare přejděte na Load Balancing stránce.
Přejděte na Load Balancing ↗ -
Vyberte Vytvořit load balancer, pak vyberte Veřejný load balancer.
-
V části Vyberte web, vyberte doménu trasy své publikované aplikace.
-
Na Hostname stránce zadejte hostname pro load balancer (například
lb.example.com). -
Na Fondy stránce vyberte Vytvořit Pool a zadejte popisný název.
-
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)
-
Vyberte Záložní pool. Viz zásady řízení provozu pro možnosti směrování.
-
(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
-
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ěď:
- Přidejte trasu publikované aplikace pro health check:
- Hostname:
health-check.example.com - Typ služby: HTTP_STATUS
- Stavový kód HTTP:
200
- Hostname:
- 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.