INTEGRITY Dokumentace

Trasy

Mesh node je ve výchozím nastavení dosažitelný jen prostřednictvím vlastního Mesh IP. Aby byla dostupná i další zařízení v podsíti za uzlem: servery, databáze, tiskárny nebo zařízení IoT, která nemohou spouštět Cloudflare One Client : přidejte trasu k uzlu. Uzel Mesh podporuje dva typy tras:

Když přidáte trasu, Mesh node funguje jako brána: provoz směřující na inzerovaný CIDR nebo hostname se přesměruje na daný node, který jej doručí příslušnému hostiteli v lokální síti (případně jej odešle na veřejný internet).

Podporovány jsou trasy CIDR IPv4 i IPv6. Trasy IPv6 vyžadují, aby uzlu Mesh profil zařízení je nakonfigurován tak, aby používal MASQUE; nebudou fungovat, pokud profil zařízení místo toho používá WireGuard.

Kdy použít trasy

flowchart LR
  subgraph subnet["Subnet 10.0.0.0/24"]
    node["Mesh node <br> 10.0.0.1"]
    db["Database <br> 10.0.0.50"]
    printer["Printer <br> 10.0.0.100"]
  end
  client["Client device <br> 100.96.0.10"] --> CF((Cloudflare)) --> node
  node --> db
  node --> printer

Spravovat trasy CIDR

Pomocí tras CIDR můžete přesměrovat provoz z vašeho uzlu sítě Mesh na zařízení ve vaší místní síti.

Přidejte trasu

  1. V Cloudflare dashboardu přejděte na Sítě > Mesh.

    Přejděte na Mesh ↗
  2. Vyberte svůj Mesh node.

  3. Přejděte na Trasy kartě.

  4. Vyberte Přidat trasu.

  5. Zadejte soukromý rozsah CIDR, který chcete směrovat přes tento uzel (například 10.0.0.0/24).

  6. (Volitelně) přidejte popis trasy.

  7. Vyberte Přidat trasu.

Požadovaná oprávnění API tokenu

Alespoň jeden z následujících oprávnění tokenu je povinné:
  • Cloudflare One Networks Write
  • Cloudflare Tunnel Write
Vytvořit trasu tunelu
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/teamnet/routes" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"network": "10.0.0.0/24",
		"tunnel_id": "{mesh_node_id}",
		"comment": "Staging subnet"
	}'

Upravte trasu

  1. Přejděte na Sítě > Mesh > vyberte svůj uzel > Trasy kartě.
  2. Vyberte ikonu úprav vedle trasy, kterou chcete změnit.
  3. Aktualizujte CIDR nebo popis.
  4. Vyberte Save.

Požadovaná oprávnění API tokenu

Alespoň jeden z následujících oprávnění tokenu je povinné:
  • Cloudflare One Networks Write
  • Cloudflare Tunnel Write
Aktualizujte trasu tunelu
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/teamnet/routes/$ROUTE_ID" \
	--request PATCH \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"network": "10.0.0.0/24",
		"comment": "Updated description"
	}'

Odstraňte trasu

  1. Přejděte na Sítě > Mesh > vyberte svůj uzel > Trasy kartě.
  2. Vyberte ikonu odstranění vedle trasy.
  3. Potvrďte odstranění.

Požadovaná oprávnění API tokenu

Alespoň jeden z následujících oprávnění tokenu je povinné:
  • Cloudflare One Networks Write
  • Cloudflare Tunnel Write
Odstraňte trasu tunelu
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/teamnet/routes/$ROUTE_ID" \
	--request DELETE \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"

Nakonfigurujte Split Tunnels

Aby provoz dosáhl vámi inzerovaného rozsahu CIDR, musí být tento rozsah směrován přes Cloudflare jak na uzlu Mesh, tak na klientských zařízeních.

Na uzlu Mesh

V profilu zařízení uzlu Mesh se ujistěte, že inzerované trasy CIDR procházejí přes Cloudflare:

Pokud například inzerujete 10.0.0.0/24 a váš seznam vyloučení Split Tunnels obsahuje 10.0.0.0/8, musíte odebrat 10.0.0.0/8 a znovu přidejte části 10.0.0.0/8 rozsah, který nechcete směrovat přes Cloudflare.

Na klientských zařízeních

Stejnou konfiguraci Split Tunnel zopakujte i v profilech zařízení používaných vašimi klientskými zařízeními a zajistěte, aby inzerované trasy CIDR směřovaly přes Cloudflare.

Směrování zpětného provozu

Uzel Mesh přeposílá příchozí provoz z Cloudflare zařízením v podsíti. Nicméně pro zpětný provoz (odpovědi ze zařízení v podsíti zpět ke klientům Mesh), zařízení v podsíti potřebují trasu zpět k uzlu Mesh.

flowchart LR
  client["Client device <br> 100.96.0.10"] -- request --> CF((Cloudflare)) -- request --> node["Mesh node <br> 10.0.0.1"]
  node --> db["Database <br> 10.0.0.50"]
  db -. "response: <br> needs route to node" .-> node -. response .-> CF -. response .-> client

Způsob konfigurace závisí na tom, kde je nainstalován uzel Mesh:

Možnost 1: Uzel Mesh je výchozí brána

Pokud je uzel Mesh výchozí bránou podsítě (nebo je nainstalován na směrovači), není potřeba žádná další konfigurace. Veškerý provoz ze zařízení v podsíti se přirozeně směruje přes tento uzel.

Možnost 2: Uzel Mesh není výchozí brána

Pokud je uzel Mesh běžným hostitelem v podsíti, nakonfigurujte směrovač podsítě tak, aby provoz Mesh odesílal přes tento uzel. Přidejte statickou trasu:

Tím je zajištěno, že odpovědi klientům Mesh jsou přeposílány uzlu Mesh k doručení přes Cloudflare.

Site-to-site routing

Když máte Mesh nodes na více pobočkách, zařízení v jedné podsíti se přes Cloudflare mohou dostat k zařízením v jiné podsíti.

flowchart TD
  subgraph siteA["Site A — 10.0.0.0/24"]
    serverA["Server <br> 10.0.0.50"] --- nodeA["Mesh node <br> 10.0.0.1"]
  end
  subgraph siteB["Site B — 192.168.1.0/24"]
    serverB["Server <br> 192.168.1.50"] --- nodeB["Mesh node <br> 192.168.1.1"]
  end
  nodeA <--> CF((Cloudflare))
  nodeB <--> CF

Aby to fungovalo:

  1. Každý Mesh node musí inzerovat lokální subnet jako Trasa CIDR aby Cloudflare věděl, na který uzel má provoz přeposílat.
  2. CIDR bloky vzdálené podsítě musí na každém uzlu směrovat provoz přes Cloudflare. V nastavení uzlu Mesh Split Tunnel konfiguraci přidejte CIDR vzdálené pobočky do seznamu zahrnutí (nebo ho odeberte ze seznamu vyloučení).
  3. Router každé pobočky potřebuje statické trasy směrující vzdálené podsítě na místní uzel Mesh:

Směrovač pobočky A:

Směrovač pobočky B:

Pro produkční nasazení typu site-to-site zvažte povolení vysoká dostupnost na každém uzlu. HA zajišťuje failover pro trasy CIDR inzerované daným uzlem: pokud aktivní replika přestane fungovat, Cloudflare povýší standby repliku, aby provoz do podsítě mohl dál plynule pokračovat.

Filtrování DNS

Chcete-li filtrovat dotazy DNS z podsítě pomocí Cloudflare Gateway:

  1. Nakonfigurujte DNS na svém routeru: Nasměrujte DNS svého routeru na IP adresy resolveru Gateway:

    • 172.64.36.1
    • 172.64.36.2
  2. Přidání IP tras do routeru: Na svém routeru přidejte statické trasy směrující IP adresy resolveru Gateway na lokální IP adresu vašeho uzlu Mesh. Tím se DNS provoz dostane k Cloudflare přes tento uzel.

    • Cíl: 172.64.36.1Další skok: 10.0.0.1 (místní uzel Mesh)
    • Cíl: 172.64.36.2Další skok: 10.0.0.1
  3. Nakonfigurujte Split Tunnels: Ujistěte se, že následující IP adresy jsou směrovány přes uzel Mesh ve vaší Split Tunnels konfigurace:

    • IP adresa interního resolveru DNS dané podsítě
    • Rozsah počátečních přeložených IP adres Gateway: 172.64.128.0/20 (IPv4) a 2606:4700:0cf1:4000::/64 (IPv6)

Gateway zaznamenává dotazy DNS se soukromou zdrojovou IP adresou zařízení, ze kterého požadavek pochází. To můžete využít k vytvoření zásady resolveru pro interní DNS záznamy.

Trasy hostname

Namísto inzerování rozsahu IP adres můžete přitahovat provoz pro konkrétní hostname na uzel Mesh. Když uživatel požaduje daný hostname, Cloudflare Gateway přiřadí počáteční přeložená IP adresa a směruje provoz přes uzel.

Trasy hostname nahrazují virtuální sítě jako způsob přístupu k prostředkům: protože je hostname globálně jedinečný, překrývající se hostname nejsou podporovány a hostname lze v jednu chvíli směrovat pouze na jeden uzel nebo tunel.

  1. Požadavky wiki.internal.local

  2. DNS dotaz
  3. Vrátí token IP adresu a poté přepíše cíl na skutečnou privátní IP adresu.

    172.64.128.0/20
  4. Trasa hostname
  5. Předává provoz hostiteli v místní síti

  6. Privátní hostitel

    wiki.internal.local · 10.0.0.50

Podrobnější pohled na tok paketů při směrování podle hostname najdete v blogový příspěvek s oznámením.

Předpoklady

Přidejte trasu pro hostname

  1. V Cloudflare dashboardu přejděte na Sítě > Mesh.

    Přejděte na Mesh ↗
  2. Vyberte svůj Mesh node.

  3. Přejděte na Trasy kartě.

  4. Vyberte Přidat trasu, pak vyberte Privátní hostname.

  5. Zadejte plně kvalifikovaný název domény (FQDN), který chcete směrovat přes tento uzel (například wiki.internal.local).

    Omezení formátu hostname

    • Limit znaků: Musí mít méně než 255 znaků.
    • Podporované zástupné znaky: Jeden zástupný znak (*) je povolen a musí představovat úplný DNS label. Příklad: *.internal.local
    • Nepodporované zástupné znaky: Následující formáty zástupných znaků nejsou podporované:
      • Částečné zástupné znaky, jako například *-dev.internal.local nebo dev-*.internal.local.
      • Zástupné znaky uprostřed, například foo*bar.internal.local nebo foo.*.internal.local.
      • Více zástupných znaků v hostname, například *.*.internal.local.
    • Ořezávání zástupných znaků: Zástupné znaky na začátku (*) jsou oříznuty a je předpokládána implicitní tečka (.) se předpokládá. Například *.internal.local se uloží jako internal.local ale bude odpovídat všem subdoménám na úrovni zástupného znaku (pokrývá foo.internal.local ale ne foo.bar.internal.local).
    • Odstranění teček: Počáteční a koncové tečky (.) jsou povoleny, ale jsou oříznuty.
  6. (Volitelně) přidejte popis trasy.

  7. Vyberte Přidat hostname.

Požadovaná oprávnění API tokenu

Alespoň jeden z následujících oprávnění tokenu je povinné:
  • Cloudflare One Networks Write
  • Cloudflare Tunnel Write
Vytvořit trasu hostname
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/zerotrust/routes/hostname" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"hostname": "wiki.internal.local",
		"tunnel_id": "{mesh_node_id}",
		"comment": "Internal wiki"
	}'

Nakonfigurujte překlad DNS

Pro privátní hostname, Gateway musí být schopen tento hostname přeložit na jeho privátní IP adresu. Způsob konfigurace závisí na tom, zda rozlišování DNS a provoz aplikace používají stejný connector nebo jiný connectory.

Uzel překládá hostname (výchozí)

Mesh node ve výchozím nastavení překládá hostname pomocí DNS resolveru nakonfigurovaného na svém hostitelském počítači (například v /etc/resolv.conf na Linuxu): stejným způsobem cloudflared ano. Pokud uzel dokáže tímto resolverem přeložit název hostitele na jeho privátní IP adresu, další konfigurace není potřeba.

Pokud uzel nedokáže hostname přeložit sám, nejjednodušší možností je přidat záznam do souboru hosts uzlu (například /etc/hosts na Linuxu), který mapuje hostname na jeho privátní IP adresu. Na rozdíl od Cloudflare Tunnel uzel Mesh ne vyžadují, abyste provozovali vyhrazený DNS server:

/etc/hosts
10.0.0.50 wiki.internal.local

Split DNS: provoz DNS a aplikací využívá různé konektory

Potřebujete pouze Gateway zásada resolveru když musí být dotaz DNS odeslán na jiný connector než provoz aplikace. Interní DNS server se může nacházet za jedním uzlem Mesh nebo Cloudflare Tunnel, zatímco aplikace je dostupná přes jiný. V takovém případě:

  1. Přidejte Trasa CIDR pro IP adresu DNS serveru, aby k němu Gateway mohl přistupovat přes connector, na kterém DNS server běží (uzel Mesh nebo Cloudflare Tunnel).
  2. Vytvořte zásada resolveru která odesílá DNS dotazy pro daný hostname (nebo jeho doménu) na tento interní DNS server.

Pro veřejný hostname, rozlišování zajišťuje uzel Mesh: Gateway odešle DNS dotaz uzlu, ten jej přeloží prostřednictvím svého upstream poskytovatele DNS a poté paket nasměruje do cíle a opustí síť pod vlastní veřejnou IP adresou. Není potřeba žádný interní server DNS ani zásada resolveru.

Zabezpečení provozu hostname

Po přidání trasy hostname ji zabezpečte buď pomocí Self-hosted aplikace Access nebo Síťové zásady Gateway. Podrobnosti a příklady najdete v Připojení privátního hostname.

Omezení

Počínaje Chrome 142, Local Network Access (LNA) omezuje požadavky z webů na lokální IP adresy. LNA je implementováno na úrovni enginu Chromium, takže to ovlivňuje všechny prohlížeče založené na Chromiu (například Microsoft Edge, Brave a Opera), nejen Google Chrome. To se může týkat účtů, jejichž Gateway rozsah počáteční přeložené IP adresy je stále čerpán z adresního prostoru Carrier-Grade NAT (CGNAT) (100.64.0.0/10), například starší výchozí rozsah 100.80.0.0/16, nebo vlastní rozsah nakonfigurovaný v rámci rozsahu CGNAT. Tyto prohlížeče považují takové adresy za patřící do místní sítě. Když web načtený z veřejné IP adresy odesílá dílčí požadavky na doménu přeloženou prostřednictvím počáteční přeložené IP adresy v tomto rozsahu, prohlížeč to vyhodnotí jako požadavek z veřejné sítě do místní sítě a zobrazí uživateli výzvu k povolení přístupu k zařízením v místní síti. Prohlížeč blokuje požadavky na tyto domény, dokud uživatel tuto výzvu nepotvrdí.

Nejčastěji k tomu dochází, když zásada egress odpovídá široce používaným doménám (například cloudfront.net nebo github.com), což způsobí, že se subrequesty z veřejných stránek přeloží do rozsahu CGNAT.

Účty používající aktuální výchozí počáteční přeložený rozsah IP adres (172.64.128.0/20) nejsou ovlivněny, protože tento rozsah je veřejný adresní prostor Cloudflare, nikoli CGNAT. Pokud byl váš účet vytvořen před touto změnou výchozího nastavení nebo pokud jste nakonfigurovali vlastní rozsah v prostoru CGNAT, přečtěte si Nakonfigurujte počáteční přeložené IP adresy a přejít na rozsah mimo CGNAT, místo abyste se spoléhali na následující řešení v prohlížeči.

Níže uvedená řešení používají zásady Google Chrome Enterprise. Pokud vaše organizace spravuje jiný prohlížeč založený na Chromiu, vyhledejte odpovídající nastavení v dokumentaci zásad daného prohlížeče.

Iframy

Pokud dotčený požadavek pochází z iframe (například z aplikace vložené do portálu třetí strany), musí tento iframe deklarovat local-network-access oprávnění, aby se výzva prohlížeče zobrazila v nadřazeném rámci:

Pokud jsou iframy vnořené, musí odpovídající atribut obsahovat každý iframe v řetězci. Vzhledem k tomu, že aplikace třetích stran mají nad atributy vlastních iframů kontrolu, nemusí to být pro koncového uživatele konfigurovatelné.

Alternativní řešení

Chcete-li se tomuto problému vyhnout, zvolte jednu z následujících možností: