INTEGRITY Документация

DNS over HTTPS (DoH)

С помощью Cloudflare Gateway вы можете фильтровать запросы DNS over HTTPS (DoH) по DNS-локация или по пользователю, без необходимости устанавливать Cloudflare One Client на ваши устройства.

Политики на основе местоположения требуют отправки DNS-запросов на DoH-конечная точка для конкретного местоположения, тогда как политики на основе идентичности требуют, чтобы запросы включали уникальный DoH-токен пользователя.

Фильтруйте запросы DoH по местоположению

Политики на основе местоположения требуют отправки DNS-запросов на уникальный Конечная точка DoH назначенная этому местоположению:

https://<YOUR_DOH_SUBDOMAIN>.cloudflare-gateway.com/dns-query

Предварительные требования

Получите поддомен вашего местоположения Поддомен DoH.

Настройте браузер для DoH

Браузеры можно настроить на использование любой конечной точки DNS over HTTPS (DoH). Если вы настраиваете DoH непосредственно в браузере, необходимо выбрать Gateway DNS location в качестве конечной точки DoH, иначе фильтрация DNS в этом браузере работать не будет.

Mozilla Firefox

  1. В Firefox перейдите в Настройки.
  2. В Privacy & Security, перейдите в DNS поверх HTTPS.
  3. В разделе Включить защищённый DNS с использованием, выберите Max Protection.
  4. В Выберите поставщика, выберите Custom.
  5. В поле введите https://<YOUR_DOH_SUBDOMAIN>.cloudflare-gateway.com/dns-query.

Firefox теперь настроен на использование вашей конечной точки DoH. Дополнительную информацию о настройке параметров DoH в Firefox см. в Документация Mozilla.

Google Chrome

  1. В Chrome перейдите в Настройки > Privacy and security > Безопасность.
  2. Прокрутите вниз и включите Использовать безопасный DNS.
  3. Выберите С Custom.
  4. В Введите пользовательский провайдер поле введите https://<YOUR_DOH_SUBDOMAIN>.cloudflare-gateway.com/dns-query.

Подробнее о включение DNS over HTTPS в Chrome.

Microsoft Edge

  1. В Microsoft Edge перейдите в Настройки.
  2. Выберите Privacy, Search, and Services, и прокрутите страницу вниз до Безопасность.
  3. Включите Использовать безопасный DNS.
  4. Выберите Выберите поставщика услуг.
  5. В Введите пользовательский провайдер поле введите https://<YOUR_DOH_SUBDOMAIN>.cloudflare-gateway.com/dns-query.

Brave

  1. В Brave перейдите в Настройки > Безопасность и конфиденциальность > Безопасность.
  2. Включите Использовать безопасный DNS.
  3. Выберите С Custom.
  4. В Введите пользовательский провайдер поле введите https://<YOUR_DOH_SUBDOMAIN>.cloudflare-gateway.com/dns-query.

Safari

В настоящее время Safari не поддерживает DNS over HTTPS.

Теперь ваши DNS-запросы будут отправляться на фильтрацию в Gateway. Чтобы фильтровать эти запросы, создайте политику DNS с помощью DNS-локация селектор.

Настройте операционную систему для DoH

Windows 11

  1. Получите A и AAAA значения записей, связанные с конечной точкой DoH вашей локации.

    1. Выполните следующую команду, чтобы получить свой A значения записей:
    nslookup -type=A <your-subdomain>.cloudflare-gateway.com
    1. Получите свой AAAA значения записей.
    nslookup -type=AAAA <your-subdomain>.cloudflare-gateway.com
    1. Скопируйте полученные IP-адреса.
  2. Добавьте адреса в список известных серверов DoH.

    1. Выполните следующую команду для каждого адреса:
    Add-DnsClientDohServerAddress -ServerAddress <IP-address> -DohTemplate https://<your-subdomain>.cloudflare-gateway.com/dns-query -AllowFallbackToUdp $False -AutoUpgrade $False
    1. Убедитесь, что адреса были добавлены.
    Get-DnsClientDohServerAddress
  3. В Windows перейдите в Настройки > Network & internet > ваше активное подключение к интернету. Этот вариант может быть либо Ethernet или Wi-Fi.

  4. В разделе Назначение DNS-сервера, выберите Изменить.

  5. В раскрывающемся меню выберите Вручную.

  6. Включить IPv4.

  7. В Preferred DNS и Alternate DNS, введите IPv4-адреса из вашего A команду record. Задайте DNS поверх HTTPS к Включено (автоматический шаблон).

  8. Включить IPv6.

  9. В Preferred DNS и Alternate DNS, введите IPv6-адреса из вашего AAAA команду record. Задайте DNS поверх HTTPS к Включено (автоматический шаблон).

Windows Server 2022

Получите A и AAAA значения записей, связанные с конечной точкой DoH вашей локации.

  1. Выполните следующую команду, чтобы получить свой A значения записей:
nslookup -type=A <your-subdomain>.cloudflare-gateway.com
  1. Получите свой AAAA значения записей.
nslookup -type=AAAA <your-subdomain>.cloudflare-gateway.com
  1. Скопируйте полученные IP-адреса.
  2. Добавьте адреса в список известных вам серверов DoH.
  3. Настройте клиент Windows Server или настройте групповую политику чтобы использовать DoH.

Подробнее см. в руководство Microsoft по DoH для Windows Server 2022 и более поздних версий.

Использовать универсальную конечную точку DoH

DoH-запросы можно отправлять на общую конечную точку Cloudflare DoH, dns.cloudflare-gateway.com. Чтобы указать местоположение в запросе, включите заголовок с именем cf-dns-location со значением DoH-поддомена вашей локации. Например:

GET /dns-query?name=example.com&type=A HTTP/2
Host: dns.cloudflare-gateway.com
cf-dns-location: 9y65g5srsm
Accept: application/dns-message

Фильтруйте запросы DoH по пользователю

Чтобы фильтровать DoH-запросы по личности пользователя, каждый запрос должен включать токен аутентификации, привязанный к конкретному пользователю. Если у одного пользователя несколько устройств и вы хотите применять политики для каждого устройства отдельно, привяжите каждое устройство к отдельному адресу электронной почты.

В настоящее время токены аутентификации можно создать только через API. Эту команду можно выполнить интерактивный скрипт Python который автоматизирует процедуру настройки, либо выполните шаги, описанные ниже.

1. Создайте токен службы для аккаунта

У каждого аккаунта Cloudflare может быть только одна активная организация Access токен службы авторизован для DNS over HTTPS (DoH) одновременно.

curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/access/service_tokens" \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--header "Content-Type: application/json" \
--data '{"name":"ACME Corporation service token"}'

Сохраните следующее значение токена службы: client_id, client_secret, а также id.

Пример ответа

{
	"result": {
		"client_id": "88bf3b6d86161464f6509f7219099e57.access",
		"client_secret": "cfast_EqN8f9vx3sKOSY4mwCMCbZYb02L4OvfAkacLAqTZ63a435a7",
		"created_at": "2022-06-09T01:59:17Z",
		"enabled": true,
		"expires_at": "2023-06-09T01:59:17Z",
		"id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415",
		"name": "ACME Corporation service token",
		"updated_at": "2022-06-09T01:59:17Z"
	},
	"success": true,
	"errors": [],
	"messages": []
}

2. Включите функцию DoH для токена службы

curl --request PUT \
"https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/access/organizations/doh/$SERVICE_TOKEN_ID" \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"

Если вы получите access.api.error.service_token_not_found ошибка, убедитесь, что $SERVICE_TOKEN_ID это значение id и не client_id.

Пример ответа

{
	"result": {
		"client_id": "88bf3b6d86161464f6509f7219099e57.access",
		"created_at": "2022-06-09T01:59:17Z",
		"expires_at": "2023-06-09T01:59:17Z",
		"id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415",
		"name": "ACME Corporation service token",
		"updated_at": "2022-06-09T01:59:17Z",
		"duration": "8760h"
	},
	"success": true,
	"errors": [],
	"messages": []
}

3. Создайте пользователя

Создайте нового пользователя и, при необходимости, добавьте его в группу.

curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/access/users" \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--header "Content-Type: application/json" \
--data '{
  "name": "John Doe",
  "email": "[email protected]",
  "custom": {"groups":[{"id": "02fk6b3p3majl10", "email": "[email protected]", "name": "Finance"}]}
}'

Сохраните следующее значение пользователя: id возвращённый в ответе.

Пример ответа

{
	"result": {
		"id": "54d425de-7a78-4186-9975-d43c88ee7899",
		"created_at": "2022-03-16T21:18:39.93598Z",
		"updated_at": "2022-05-17T23:50:39.598345Z",
		"uid": "54d425de-7a78-4186-9975-d43c88ee7899",
		"name": "John Doe",
		"email": "[email protected]",
		"custom": {
			"groups": [
				{
					"email": "[email protected]",
					"id": "02fk6b3p3majl10",
					"name": "Finance"
				}
			]
		}
	},
	"success": true,
	"errors": [],
	"messages": []
}

4. Сгенерируйте токен DoH для пользователя

Запросите токен DoH для пользователя, используя свой токен службы для аутентификации в Team-домен.

curl "https://<TEAM_NAME>.cloudflareaccess.com/cdn-cgi/access/doh-token?account-id=<ACCOUNT_ID>&user-id=<USER_ID>&auth-domain=<TEAM_NAME>.cloudflareaccess.com" \
--header "Cf-Access-Client-Id: <CLIENT_ID>" \
--header "Cf-Access-Client-Secret: <CLIENT_SECRET>"

Ответ содержит уникальный токен DoH, связанный с пользователем. Срок действия этого токена составляет 24 часа. Рекомендуется настроить процесс обновления токена DoH, а не создавать новый токен для каждого DoH-запроса.

Пример ответа

{
	"token": "y2khbGciOiJSUzI1NiIsImtpZCI6ImJlZjVkYjg4ZTEwMjk3ZDEwNzhkMmEyYjE0MjMxZTljYTQwMjQ2NjAwOTQzNmJhOTQwOGJkODY3ZmI4OWFiOGQifQ.eyJ0eXBlIjoiZG9oIiwiYXVkIjoiY2xvdWRmbGFyZS1nYXRld2F5LmNvbSIsImlhdCI6MTY1NDc1MTg3NSwiZXhwIjoxNjU0ODM4Mjc1LCJhY2NvdW50LWlkIjoiMTA4MDM0OGIyZGYzYmQwN2QxZmI1MjM3Y2Q1ZDU5M2EiLCJ1c2VyLWlkIjoiNTRkNDI1ZGUtN2E3OC00MTg2LTk5NzUtZDQzYzg4ZWU3ODk5In0.I5p4WsH2dPhQ8vwy84zF05PsoBHCsUSXAaMpNhEH36oFZ3tXcs9ksLz7OzpZ_x3HxUfO3n57LlpAF1VehaBt2i94XCkvSgtHpYcwd_qZydLp-BGtcyfU1LbdXQC3m6zxKcIWu5VySi8I-J25UYlpyJhYgZ4DQUZIpqbSSt6WcVRKvA7OBa7xjkTux4OcqWAViO_ZS-GLwl-fqhvolmiwk37seBD3YuV1zG06VeWXfrMkZ5MbhooHD1DZDBHOZpTtmN8MbeKeI4tlY1mb_O3-jE-um6F9Hrl4NQm89MKFzsum-_Rywi5m4PTSlDza7fjdJs7RzFgJd3VWgzG-jgyQKw"
}

5. Отправьте аутентифицированный DoH-запрос

Отправляет DoH-запросы резолверу по адресу https://<ACCOUNT_ID>.cloudflare-gateway.com/dns-query, не забудьте включить токен DoH пользователя в CF-Authorization заголовок.

curl --silent "https://<ACCOUNT_ID>.cloudflare-gateway.com/dns-query?name=example.com" \
--header "accept: application/dns-json" \
--header "CF-Authorization: <USER_DOH_TOKEN>" | jq

Если сайт заблокирован и включена функция страница блокировки для политики запрос вернёт 162.159.36.12 (IP-адрес страницы блокировки Gateway). Если страница блокировки отключена, ответом будет 0.0.0.0.

Пример ответа

{
	"Status": 0,
	"TC": false,
	"RD": true,
	"RA": true,
	"AD": false,
	"CD": false,
	"Question": [
		{
			"name": "example.com",
			"type": 1
		}
	],
	"Answer": [
		{
			"name": "example.com",
			"type": 1,
			"TTL": 60,
			"data": "162.159.36.12"
		}
	]
}

Убедиться, что запрос был связан с правильным адресом электронной почты пользователя, можно, проверив Журналы DNS Gateway. Чтобы отфильтровать эти запросы, создайте DNS-политику с использованием любого из Gateway селекторы на основе идентификации.