INTEGRITY Dokumentace

CNAME flattening pro endpointy

Když je DNS-only (se šedým mrakem) load balancer vybere endpoint, jehož adresou je hostname (například origin.example.com), Cloudflare přeloží tento hostname na IP adresu a vrátí A/AAAA záznam klientovi. Toto je zploštění CNAME, a odpovídá tomu, jak CNAME flattening funguje v Cloudflare DNS.

V některých případech použití, například u endpointů třetích stran, které provádějí vlastní směrování na základě DNS, je nutné, aby load balancer vrátil CNAME záznam samotný namísto vyřešené IP adresy. Záznam flatten_cname vlastnost u endpointu poolu vám umožňuje vyloučit se z flatteningu pro jednotlivé endpointy.

Kdy to použít

Zapněte flatten_cname vypnuto (flatten_cname: false) na endpointu, když:

Ponechte flatten_cname zapnuto (flatten_cname: true, výchozí) pro běžné koncové body založené na IP adrese nebo názvu hostitele, u kterých chcete jen rychlou A/AAAA odpověď.

Kde se to uplatní

flatten_cname změní výstup resolveru pouze tehdy, pokud platí všechny následující podmínky:

Podmínka Povinná hodnota
Load balancer režim proxy DNS-only (se šedým mrakem). Proxied load balancery musí vracet anycast IP adresy Cloudflare, takže se toto nastavení ignoruje.
Adresa koncového bodu Hostname (cíl CNAME). U syrových adres endpointů IPv4/IPv6 nemá toto nastavení žádný účinek.
Hostname load balanceru Není apex zóny. CNAME záznamy nejsou na vrcholu zóny povoleny, load balancer proto na vrcholu zóny provede zploštění záznamu.
Vybraný koncový bod Tento konkrétní endpoint byl vybrán pomocí steeringu. Nastavení flatten_cname: false na endpointu A nemá žádný účinek, pokud steering vybere endpoint B ve stejném poolu.

Pokud vybraný endpoint má flatten_cname: false ale některá z podmínek v předchozí tabulce není splněna, load balancer zploští CNAME a vrátí A/AAAA záznamy, jako kdyby byl přepínač zapnutý.

Nakonfigurujte CNAME flattening

flatten_cname se konfiguruje pro každý endpoint uvnitř poolu spolu s name, address, weight, a dalších polích endpointu. Můžete je nastavit v Cloudflare dashboard, přes API nebo v Terraform.

V dashboardu se toto nastavení zobrazuje jako Flatten CNAME u každého endpointu v poolu. Vypnutím přepínače se hostname endpointu vrátí jako CNAME záznam.

  1. V dashboardu Cloudflare přejděte na Load Balancing stránce.

    Přejděte na Load Balancing ↗
  2. Vyberte Fondy kartě.

  3. U poolu, který obsahuje daný koncový bod, vyberte Úprava.

  4. V Endpointy sekci najděte endpoint, který chcete změnit.

  5. Zapněte Flatten CNAME vypnuto.

  6. Vyberte Save.

Flatten CNAME je k dispozici pouze pro endpointy, jejichž adresou je hostname. Endpointy používající IP adresu ji nemohou vypnout.

Použijte Vytvoření poolu nebo Edit Pool a nastavte flatten_cname na každém endpointu v origins pole.

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

Alespoň jeden z následujících oprávnění tokenu je povinné:
  • Load Balancing: Monitors and Pools Write
Vytvoření poolu
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/load_balancers/pools" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"name": "primary-pool",
		"origins": [
				{
						"name": "origin-a",
						"address": "origin-a.example.com",
						"enabled": true,
						"weight": 1,
						"flatten_cname": false
				},
				{
						"name": "origin-b",
						"address": "origin-b.example.com",
						"enabled": true,
						"weight": 1,
						"flatten_cname": false
				},
				{
						"name": "fallback-ip",
						"address": "203.0.113.10",
						"enabled": true,
						"weight": 1
				}
		]
	}'

flatten_cname má výchozí hodnotu true pokud je vynechán, čímž se zachová stávající chování pro existující pooly a endpointy.

Nastavte atribut na každém koncovém bodu uvnitř cloudflare_load_balancer_pool prostředek.

resource "cloudflare_load_balancer_pool" "primary" {
  account_id = var.account_id
  name       = "primary-pool"

  origins = [
    {
      name          = "origin-a"
      address       = "origin-a.example.com"
      enabled       = true
      weight        = 1
      flatten_cname = false
    },
    {
      name          = "origin-b"
      address       = "origin-b.example.com"
      enabled       = true
      weight        = 1
      flatten_cname = false
    },
    {
      name    = "fallback-ip"
      address = "203.0.113.10"
      enabled = true
      weight  = 1
    }
  ]
}

Ověřit

Dotažte se na hostname load balanceru pomocí dig:

dig lb.example.com A +short

Protože odpověď závisí na tom, co endpoint steering vybere, opakované dig dotazy na stejný load balancer mohou oprávněně střídat mezi CNAME a A/AAAA odpovědi, pokud pool kombinuje endpointy typu hostname s flatten_cname: false a IP endpointy.

Monitory stavu

Monitory stavu endpointů toto nastavení nijak neovlivňuje. Cloudflare vždy přeloží název hostitele endpointu na IP adresu a stav podkladové služby ověřuje pomocí nekešovaného DNS dotazu. Vypnutí flatteningu mění pouze to, co se klientovi vrací v okamžiku DNS dotazu: stav dostupnosti nadále odráží skutečnou dosažitelnost backendu.

Analytics

Počty požadavků a rozhodnutí o směrování pro jednotlivé koncové body zůstávají viditelné v analytika vyrovnávání zátěže, klíčované podle názvu endpointu. To vám umožní sledovat, jak je provoz distribuován napříč CNAMEchybových koncových bodů.

Omezení