INTEGRITY Dokumentace

Zásady resolveru

Gateway ve výchozím nastavení odesílá DNS požadavky na 1.1.1.1, veřejný DNS resolver Cloudflare, k překladu. Uživatelé s plánem Enterprise mohou místo toho vytvořit zásady Gateway a směrovat DNS dotazy na vlastní resolvery.

flowchart TD
    %% Accessibility
    accTitle: How Gateway routes DNS queries
    accDescr: Flowchart describing the order Cloudflare Gateway routes a DNS query from an endpoint through DNS and resolver policies back to the user.

    %% Flowchart
    user(["User"])-->endpoint[/"Gateway DNS endpoint"/]

    endpoint-->query["DNS policy (query)"]

    query-->resolver["Resolver policy"]

    resolver--"Routes to </br>custom resolver"-->response["DNS policy (response)"]

    response--"Returns response"-->user

Gateway nasměruje provoz uživatelů na váš nakonfigurovaný DNS resolver podle odpovídající zásady, a to i v případě, že se IP adresy vašich resolverů překrývají.

Případy použití

Zásady překladače můžete použít, pokud potřebujete přístup k veřejně nesměrovaným doménám, jako jsou služby privátní sítě nebo interní zdroje. Zásady překladače můžete použít také v případě, že potřebujete přístup k chráněné DNS službě nebo chcete zjednodušit správu DNS pro více lokalit.

Internal DNS

Cloudflare Internal DNS umožňuje spravovat DNS záznamy pro interní prostředky v privátní síti. Zóny DNS nakonfigurované v Internal DNS lze dotazovat pouze prostřednictvím resolveru Gateway. Pomocí zásad resolveru můžete určit, jak Gateway překládá DNS dotazy vaší organizace na interní prostředky podle kontextu dotazu, například podle známých zdrojových IP adres pro danou geografickou oblast.

Chcete-li začít s řešením interních dotazů DNS pomocí zásad resolveru, přečtěte si Začínáme.

Local Domain Fallback

Zásady resolveru použijte, pokud je váš DNS server dostupný ze sítě Cloudflare, například prostřednictvím Cloudflare Tunnel, tunelu IPsec/GRE nebo veřejného internetu. Použijte Local Domain Fallback když je server DNS dostupný pouze ze zařízení uživatele.

Pokud jsou pro stejné zařízení nakonfigurovány Local Domain Fallback i zásady resolveru, Cloudflare nejprve použije vaše klientská pravidla Local Domain Fallback. Pokud DNS dotazy do Gateway zapojíte pomocí Cloudflare One Client a směrujete je pomocí zásad resolveru, zdrojovou IP adresou těchto dotazů bude IP adresa přiřazená Cloudflare One Client.

Připojení resolveru

Zásady resolveru podporují připojení TCP i UDP. Vlastní resolvery mohou směrovat na internet přes IPv4 nebo IPv6, nebo na privátní síťovou službu, jako je Magic tunel. Zásady standardně používají port 53. Port, který váš resolver používá, můžete změnit přizpůsobením ve své zásadě.

Své autoritativní nameservery můžete před útoky DDoS ochránit povolením DNS Firewall.

Cloudflare Tunnel

Připojení k privátnímu resolveru propojenému s Cloudflare můžete nakonfigurovat pomocí Cloudflare Tunnel. Abyste zajistili cloudflared může směrovat provoz UDP k vašemu resolveru, připojit tunel přes QUIC.

Další informace o připojení privátního DNS resolveru ke Cloudflare pomocí Cloudflare Tunnel najdete v Privátní DNS.

Cloudflare WAN

Chcete-li povolit připojení k privátnímu resolveru propojenému s Cloudflare přes Cloudflare WAN, obraťte se na tým spravující váš účet.

Dostupné DNS endpointy

Zásady resolveru mohou směrovat dotazy k vyřešení z těchto DNS endpointů:

Gateway filtruje, překládá a loguje vaše dotazy bez ohledu na endpoint.

Vytvořit zásadu resolveru

Chcete-li vytvořit zásadu resolveru:

  1. V Cloudflare dashboard, přejděte na Zero Trust > Zásady provozu > Zásady resolveru.

  2. Vyberte Přidat zásadu.

  3. Vytvořte výraz pro požadovaný provoz. Můžete například přeložit hostname interní služby:

    Selektor Operátor Hodnota
    Host v internal.example.com

    Ujistěte se, že se na váš cíl nevztahuje Local Domain Fallback.

  4. V Vyberte DNS resolver, vyberte Nakonfigurujte vlastní DNS resolvery.

  5. Zadejte IP adresy vlastního DNS překladače. Při zadávání IP adresy bude Gateway prohledávat vaše virtuální sítě nakonfigurováno v Zero Trust.

  6. V Síť, zvolte, zda chcete dotazy směrovat veřejně (do internetu), nebo soukromě (do privátní síťové služby).

  7. (Volitelné) Zadejte vlastní port pro každou IP adresu.

  8. Vyberte Vytvořit zásadu.

Vlastní resolvery se ukládají do vašeho účtu pro budoucí použití. Do zásady můžete přidat až 10 adres IPv4 a 10 adres IPv6.

  1. Přidejte následující oprávnění do svého cloudflare_api_token:

    • Zero Trust Write
  2. Vytvořte zásadu resolveru pomocí cloudflare_zero_trust_gateway_policy prostředek:

    resource "cloudflare_zero_trust_gateway_policy" "resolver_policy" {
    	name        = "Example resolver policy"
    	enabled     = true
    	account_id  = var.cloudflare_account_id
    	description = "TERRAFORM MANAGED resolver policy"
    	action      = "resolve"
    	traffic     = "dns.fqdn in {\"internal.example.com\"}"
    	identity    = "identity.email in {\"[email protected]\"}"
    	precedence  = 1
    	rule_settings = {
    			dns_resolvers = {
    			# You can add up to 10 IPv4 and 10 IPv6 addresses to a policy.
    				ipv4 = [{
    					ip = "192.0.2.24"
    					port = 53
    					route_through_private_network = true
    					vnet_id = cloudflare_zero_trust_tunnel_cloudflared_virtual_network.staging_vnet.id
    				}]
    				ipv6 = [{
    					ip = "2001:DB8::"
    					port = 53
    					route_through_private_network = true
    					vnet_id = cloudflare_zero_trust_tunnel_cloudflared_virtual_network.staging_vnet.id
    				}]
    			}
    	}
    }

Když dotaz uživatele odpovídá zásadě resolveru, Gateway odešle dotaz na vámi uvedené resolvery v následujícím pořadí:

  1. Veřejné resolvery
  2. Privátní resolvery za výchozí virtuální sítí vašeho účtu
  3. Privátní resolvery za vlastní virtuální sítí

Gateway uloží nejrychlejší resolver do mezipaměti pro použití při dalších dotazech. Priorita resolveru se ukládá do mezipaměti zvlášť pro každého uživatele a každé datacentrum.

Další informace o vytvoření zásady DNS najdete v Zásady DNS.

Selektory

Content Categories

Tento selektor použijte k filtrování domén patřících ke konkrétním kategorie obsahu.

Název UI Příklad API Fáze vyhodnocení
Content Categories any(dns.content_category[*] in {1}) Před překladem DNS

IP adresa DNS resolveru

Tento selektor použijte k uplatnění zásad na dotazy DNS, které dorazily na IP adresu vašeho Gateway Resolveru přiřazenou k registrovanému umístění DNS. Pro většinu zákazníků Gateway jde o anycast adresu IPv4, přičemž zásady vytvořené pomocí této adresy IPv4 se použijí na všechna umístění DNS. Každé umístění DNS však má vyhrazenou adresu IPv6 a některým zákazníkům Gateway byla přidělena i vyhrazená adresa IPv4: obě lze použít k uplatnění zásad na konkrétní registrovaná umístění DNS.

Název UI Příklad API Fáze vyhodnocení
IP adresa DNS resolveru any(dns.resolved_ip[*] == 198.51.100.0) Před překladem DNS

DoH Subdomain

Tento selektor použijte k porovnání s dotazy DNS, které přicházejí přes DNS-over-HTTPS (DoH) na DoH endpoint nakonfigurovaný pro dané umístění DNS. Můžete například použít umístění DNS s DoH endpointem abcdefg.cloudflare-gateway.com výběrem selektoru DoH Subdomain a zadáním hodnoty abcdefg.

Název UI Příklad API Fáze vyhodnocení
Subdoména DOH dns.doh_subdomain == "abcdefg" Před překladem DNS

Doména

Tento selektor použijte k porovnání s doménou a všemi subdoménami. Můžete například porovnávat s example.com a jejích subdomén, například www.example.com.

Název UI Příklad API Fáze vyhodnocení
Doména any(dns.domains[*] == "example.com") Před překladem DNS

Zásady Gateway přímo nepodporují domény se znaky mimo latinku. Chcete-li použít doménu se znaky mimo latinku, přidejte ji do seznam.

Host

Tento selektor použijte k porovnání pouze se zadaným hostname. Můžete například porovnávat s test.example.com ale ne example.com nebo www.test.example.com.

Název UI Příklad API Fáze vyhodnocení
Host dns.fqdn == "example.com" Před překladem DNS

Zásady Gateway přímo nepodporují hostname se znaky mimo latinku. Chcete-li použít hostname se znaky mimo latinku, přidejte jej do seznam.

Umístění

Tento selektor použijte k uplatnění zásad na konkrétní Umístění DNS Gateway nebo sadu lokalit.

Název UI Příklad API Fáze vyhodnocení
Umístění dns.location in {"location_uuid_1" "location_uuid_2"} Před překladem DNS

Typ záznamu dotazu

Tento selektor použijte k výběru typu záznamu DNS, na který chcete uplatnit zásady. Můžete například porovnávat s A záznamy pro doménu, ale ne MX záznamy.

Název UI Příklad API Fáze vyhodnocení
Typ záznamu dotazu dns.query_rtype == "TXT" Před překladem DNS

Security Categories

Tento selektor použijte k porovnání domén (a volitelně IP adresy) patřících konkrétním kategorie zabezpečení.

Název UI Příklad API Fáze vyhodnocení
Security Categories any(dns.security_category[*] in {1}) Před překladem DNS

Zdrojový kontinent

Tento selektor použijte k filtrování na základě kontinentu, ze kterého dotaz přišel do Gateway.

Geolokace se určuje z veřejné IP adresy zařízení (obvykle přidělené poskytovatelem internetu uživatele, tedy ISP). Chcete-li zadat kontinent, zadejte jeho dvoupísmenný kód do Hodnota pole:

Kontinent Kód
Afrika AF
Antarktida AN
Asie AS
Evropa EU
Severní Amerika NA
Oceánie OC
Jižní Amerika SA
Název UI Příklad API Fáze vyhodnocení
Geolokace IP zdrojového kontinentu dns.src.geo.continent == "North America" Před překladem DNS

Zdrojová země

Tento selektor použijte k filtrování na základě země, ze které dotaz přišel do Gateway.

Geolokace se určuje z veřejné IP adresy zařízení (obvykle přidělené poskytovatelem internetu uživatele, tedy ISP). Chcete-li zadat zemi, zadejte její kód ISO 3166-1 Alpha-2 v Hodnota .

Název UI Příklad API Fáze vyhodnocení
Geolokace IP zdrojové země dns.src.geo.country == "RU" Před překladem DNS

Zdrojová IP

Tento selektor použijte k uplatnění zásad na zdrojovou IP adresu dotazů DNS. Může jít například o IP adresu WAN stub resolveru, který vaše organizace používá k odesílání dotazů do Gateway.

Název UI Příklad API Fáze vyhodnocení
Zdrojová IP dns.src_ip == 198.51.100.0 Před překladem DNS

Uživatelé

Tyto selektory použijte k porovnání s atributy identity.

Název UI Příklad API Fáze vyhodnocení
User Email identity.email == "[email protected]" Před překladem DNS
User Name identity.name == "Test User" Před překladem DNS
User Group IDs any(identity.groups[*].id in {"group_id"}) Před překladem DNS
User Group Names any(identity.groups[*].name in {"group_name"}) Před překladem DNS
User Group Emails any(identity.groups[*].email in {"[email protected]"}) Před překladem DNS
SAML Attributes any(identity.saml_attributes["http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"] in {"Test User"}) Před překladem DNS

Porovnávací operátory

Porovnávací operátory jsou způsob, jakým Gateway přiřazuje provoz k selektoru. Když zvolíte Selektor v nástroji pro tvorbu zásad v dashboardu, Operátor rozbalovací nabídka zobrazí dostupné možnosti pro daný selektor.

Operátor Význam
je se rovná definované hodnotě
není nerovná se definované hodnotě
v odpovídá alespoň jedné z definovaných hodnot
not in neodpovídá žádné z definovaných hodnot
v seznamu v předem definovaném seznam hodnot
not in list není v předem definovaném seznam hodnot
matches regex regex se vyhodnotí jako pravdivý
does not match regex regex se vyhodnotí jako nepravdivý
větší než překračuje definovaný počet
větší nebo rovno překračuje nebo se rovná definovanému počtu
menší než nižší než definovaný počet
menší nebo rovno nižší nebo rovno definovanému počtu

Hodnota

V Hodnota pole můžete zadat jedinou hodnotu, pokud používáte operátor porovnání rovnosti (například je) nebo více hodnot při použití porovnávacího operátoru typu obsahuje (například v). Kromě toho můžete použít regulární výrazy (nebo regulární výraz) pro určení rozsahu hodnot u podporovaných selektorů.

Regulární výrazy

Regulární výrazy se vyhodnocují pomocí Rust. Implementace v Rust se mírně liší od knihoven regulárních výrazů používaných jinde. Další informace najdete v našem návodu pro Zástupné znaky. Chcete-li ověřit, zda váš regulární výraz odpovídá, můžete použít Rustexp.

Pokud chcete přiřadit více hodnot, můžete použít symbol svislé čáry (|) jako operátor OR. Není nutné použít escapovací znak (\) před symbolem svislítka (pipe). Následující výraz se například vyhodnotí jako pravdivý, pokud hostname odpovídá buď .*whispersystems.org nebo .*signal.org:

Selektor Operátor Hodnota
Host matches regex .*whispersystems.org|.*signal.org

Kromě regulárních výrazů můžete použít logické operátory tak, aby odpovídalo více hodnotám.

Logické operátory

Chcete-li ve výrazu vyhodnotit více podmínek, vyberte And logický operátor. Tyto výrazy lze dále porovnávat pomocí Nebo logický operátor.

Operátor Význam
And odpovídají všem podmínkám ve výrazu
Nebo odpovídají alespoň jedné z podmínek ve výrazu

Nebo operátor bude fungovat pouze s podmínkami ve stejné skupině výrazů. Nemůžete tedy porovnávat podmínky v Provoz s podmínkami v Identity.