← Cloudflare One / cloudflare-one / traffic-policies
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ů:
- IPv4
- IPv6
- DNS over HTTPS (DoH)
- DNS over TLS (DoT)
- DNS dotazy generované Cloudflare Browser Isolation a Clientless Web Isolation
- DNS dotazy generované proxy endpoints
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:
-
V Cloudflare dashboard ↗, přejděte na Zero Trust > Zásady provozu > Zásady resolveru.
-
Vyberte Přidat zásadu.
-
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.comUjistěte se, že se na váš cíl nevztahuje Local Domain Fallback.
-
V Vyberte DNS resolver, vyberte Nakonfigurujte vlastní DNS resolvery.
-
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.
-
V Síť, zvolte, zda chcete dotazy směrovat veřejně (do internetu), nebo soukromě (do privátní síťové služby).
-
(Volitelné) Zadejte vlastní port pro každou IP adresu.
-
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.
-
Přidejte následující oprávnění do svého
cloudflare_api_token↗:Zero Trust Write
-
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í:
- Veřejné resolvery
- Privátní resolvery za výchozí virtuální sítí vašeho účtu
- 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.