← Cloudflare One / cloudflare-one / networks / connectors / cloudflare-tunnel / use-cases
gRPC
gRPC je framework pro vzdálené volání procedur (RPC), který klientským aplikacím umožňuje volat metody na vzdáleném serveru, jako by běžely na stejném lokálním počítači. Servery a klienty gRPC můžete připojit ke globální síti Cloudflare, což usnadňuje vytváření aplikací využívajících služby napříč různými datacentry a prostředími.
Cloudflare Tunnel podporuje provoz gRPC prostřednictvím směrování privátní podsítě. Nasazení pomocí veřejného hostname v současné době nejsou podporována.
V tomto příkladu připojíme server gRPC ke Cloudflare pomocí
cloudflared démon, zabezpečte
server pomocí zásad Gateway a otevřete kanál gRPC k serveru pomocí
aplikace Cloudflare One Client.
1. Nastavte server gRPC
-
Chcete-li nastavit aplikaci gRPC Python, postupujte podle tohoto stručný úvodní návod ↗.
-
Spusťte server:
~/grpc/examples/python/helloworld $ python3 greeter_server.py
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
I0000 00:00:1721770418.373806 3677 config.cc:230] gRPC experiments enabled: call_status_override_on_cancellation, event_engine_dns, event_engine_listener, http2_stats_fix, monitoring_experiment, pick_first_new, trace_record_callops, work_serializer_clears_time_cache
Server started, listening on 500512. Připojte server k Cloudflare
Chcete-li navázat zabezpečené, pouze odchozí připojení ke Cloudflare:
-
V Cloudflare dashboardu přejděte na Sítě > Tunnels.
Přejděte na Tunnels ↗ -
Vytvořit nový tunel nebo upravit existující
cloudflaredtunel.
-
V Cloudflare dashboardu přejděte na Sítě > Trasy.
Přejděte na Trasy ↗ -
Vyberte Vytvořit trasu > Tunnel CIDR. Vyberte právě vytvořený tunel, zadejte privátní IP adresu nebo adresu CIDR svého serveru a vyberte Vytvořit trasu.
3. Nasměrujte IP adresy privátní sítě přes Cloudflare One Client
WARP ve výchozím nastavení vylučuje provoz směřující na Prostor RFC 1918 ↗, což jsou IP adresy, které se obvykle používají v privátních sítích a nejsou dostupné z internetu. Aby mohl Cloudflare One Client odesílat provoz do vaší privátní sítě, musíte nakonfigurovat Split Tunnels tak, aby IP/CIDR vaší privátní sítě směrovala přes Cloudflare One Client.
-
Nejprve zkontrolujte, zda váš Režim Split Tunnels je nastaveno na Vyloučit nebo Include režimu.
-
Upravte trasy Split Tunnel podle režimu:
Pokud používáte Vyloučit režimu:
a. Odstraňte trasu obsahující rozsah IP/CIDR vaší privátní sítě. Pokud například vaše síť používá výchozí rozsah AWS
172.31.0.0/16, smažte172.16.0.0/12.b. Znovu přidat rozsahy IP/CIDR které vaše privátní síť výslovně nepoužívá. Pro výše uvedený příklad AWS byste přidali nové položky pro
172.16.0.0/13,172.24.0.0/14,172.28.0.0/15, a172.30.0.0/16. Tím se zajistí, že pouze provoz na172.31.0.0/16tras přes Cloudflare One Client.K určení, které IP adresy je třeba znovu přidat, můžete použít následující kalkulačku:
Pokyny ke kalkulačce
- V Base CIDR, zadejte rozsah RFC 1918, který jste odstranili ze Split Tunnels.
- V Odečtené rozsahy CIDR, zadejte rozsah IP/CIDR používaný vaší privátní sítí.
- Znovu přidejte výsledky kalkulačky do seznamu režimu Split Tunnel Exclude.
Zúžením rozsahu privátních IP adres zahrnutých v Cloudflare One Client snížíte riziko narušení uživatelova přístup k místním prostředkům.
Pokud používáte Include režimu:
- Přidejte požadované Domény Zero Trust nebo IP adresy do seznamu Split Tunnel include.
- Přidejte trasu tak, aby to zahrnovalo rozsah IP/CIDR vaší privátní sítě.
4. (Doporučeno) Vytvořte zásadu Gateway
Můžete nakonfigurovat Síťové zásady Gateway buď zablokovat, nebo povolit přístup k serveru gRPC. Následující příklad se skládá ze dvou zásad: první povoluje připojení gRPC ze zařízení, která projdou kontroly stavu zařízení, a druhá blokuje veškerý ostatní provoz. Ujistěte se, že zásada Allow má vyšší priorita.
1. Povolte zabezpečená zařízení
| Selektor | Operátor | Hodnota | Logika | Akce |
|---|---|---|---|---|
| Cílový port | je | 50051 |
And | Allow |
| Cílová IP adresa | je | 172.31.0.133 |
And | |
| Splněné kontroly stavu zařízení | je | macOS firewall (Firewall) |
And | |
| Splněné kontroly stavu zařízení | je | macOS disk encryption (Disk encryption) |
2. Zablokujte vše ostatní
| Selektor | Operátor | Hodnota | Akce |
|---|---|---|---|
| Cílová IP adresa | v | 172.31.0.0/16 |
Block |
Podrobnosti o nastavení proxy Gateway najdete v Filtrovat síťový provoz pomocí Gateway.
5. Nastavte klienta
Klienti gRPC se mohou k serveru připojit tak, že si do zařízení nainstalují Cloudflare One Client a zaregistrují ho do vaší organizace Zero Trust. Jakmile klient odešle požadavek na privátní IP adresu zpřístupněnou prostřednictvím Cloudflare Tunnel, WARP jeho připojení přesměruje přes síť Cloudflare do odpovídajícího tunelu.
Chcete-li nastavit klienta gRPC:
- Nasaďte Cloudflare One Client na vašem zařízení v režimu Traffic and DNS.
- Vytvořit pravidla registrace zařízení určit, která zařízení se mohou zaregistrovat do vaší organizace Zero Trust.
- Nainstalujte gRPC do zařízení podle tohoto stručný úvodní návod ↗.
- Upravit
greeter.pya nasměrovat na privátní IP adresu vašeho serveru gRPC. Jedná se o stejnou privátní IP adresu, jaká je nakonfigurována ve vašem Trasy Cloudflare Tunnel. Například,
def run():
# NOTE(gRPC Python Team): .close() is possible on a channel and should be
# used in circumstances in which the with statement does not fit the needs
# of the code.
print("Will try to greet world ...")
with grpc.insecure_channel("172.31.0.133:50051") as channel:
stub = helloworld_pb2_grpc.GreeterStub(channel)
response = stub.SayHello(helloworld_pb2.HelloRequest(name="you"))
print("Greeter client received: " + response.message)6. Otestujte připojení
- Na klientském zařízení se ujistěte, že je Cloudflare One Client
Connected. - Spusťte klientskou aplikaci gRPC:
~/grpc/examples/python/helloworld $ python3 greeter_client.py
Will try to greet world ...
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
I0000 00:00:1721771484.489711 4414247 config.cc:230] gRPC experiments enabled: call_status_override_on_cancellation, event_engine_dns, event_engine_listener, http2_stats_fix, monitoring_experiment, pick_first_new, trace_record_callops, work_serializer_clears_time_cache
Greeter client received: Hello, you!Můžete zobrazit Protokoly tunelu k ověření, že požadavky přicházejí do tunelu a podle očekávání se dostávají na server gRPC.