Рейтинг:0

Как вы разрешаете как общедоступные, так и частные зоны в DNS с разделением горизонта (с использованием GCP Cloud DNS)?

флаг tr

Мы используем GCP и Cloud DNS для управления нашим доменом, и я пытаюсь решить следующие варианты использования:

  1. Имейте личные записи для таких вещей, как базы данных, которые могут быть разрешены только в сети компании (наше VPC).
  2. Замените общедоступные записи частными IP-адресами для альтернативной маршрутизации в сети компании.
  3. Иметь возможность отправлять запросы DNS01 и разрешать записи в нашей сети и публично. Нам это нужно из-за того, как работает cert-manager (который мы используем для выпуска сертификатов с помощью letsencrypt).

Я пытался решить эту проблему с помощью общедоступной и частной зоны (AKA, DNS с разделенным горизонтом), однако это решение решает только варианты использования 1 и 2. И оно решает только вариант использования 2, если мы гарантируем, что в частной зоне есть копия все записи в публичной зоне (если нет приватной копии).

Вариант использования 3 не подходит для этого решения, так как наш сервер cert-manager создает записи в общедоступной зоне, а затем не может разрешить их в общедоступной зоне. Из-за специфики нашей установки настройка cert-manager для разрешения обеих зон через какую-либо локальную конфигурацию не идеальна. Также было бы сложно создать записи в обеих зонах, что опять же не идеальное решение.

Я бы хотел, чтобы частная зона перенаправляла запросы в общедоступную, если в ней нет записи для конкретного запроса. Есть ли способ сделать это, в частности, с помощью GCP Cloud DNS?

Идеал nslookup -> частная зона -> публичная зона

В настоящее время у нас есть nslookup -> частная зона -> ошибка (NXDOMAIN), если нет записи

Например,

# На моем ноутбуке
> nslookup ws1.example.com
...
Имя: ws1.example.com
Адрес: 34.111.111.111 # Публичный IP для веб-сервера

# Находясь в сети GCP
> nslookup db.example.com
...
Имя: db.example.com
Адрес: 10.10.0.2 # Частный IP для базы данных
> nslookup ws1.example.com
...
Имя: ws1.example.com
Адрес: 10.0.0.10 # Частный IP (из частной зоны) для веб-сервера

Это прекрасно работает для вариантов использования 1 и 2, но когда мы пытаемся разрешить запись, которая существует только в общедоступной зоне...

# На моем ноутбуке
> nslookup ws1.example.com
...
Имя: ws1.example.com
Адрес: 34.111.111.111 # Публичный IP для веб-сервера
> nslookup ws2.example.com # У нас есть только эта запись в публичной зоне
...
Имя: ws2.example.com
Адрес: 34.111.111.112 # Публичный IP-адрес для другого веб-сервера

# Находясь в GCP VPC
> nslookup ws1.example.com
...
Имя: ws1.example.com
Адрес: 10.0.0.1 # Частный IP-адрес (переопределение) для веб-сервера
> nslookup ws2.example.com # У нас есть только эта запись в публичной зоне
...
** сервер не может найти ws2.example.com: NXDOMAIN # Не удается разрешить. Следует посмотреть на частную, а затем на публичную зону и разрешить 34.111.111.112.

Какие-либо предложения?

В качестве обходного пути на данный момент мы переключились на использование вызовов HTTP01 для cert-manager, но мы бы предпочли использовать DNS01, если это возможно.

Рейтинг:2
флаг cn

Если пример.com является как частной, так и общедоступной зоной, то у вас должны быть записи ресурсов для ws2 как в общественной, так и в частной зоне. Переключения с частного на общедоступный нет. Каждая зона должна быть авторитетный.

Ключ к пониманию вашей проблемы: запрос выполняется в пример.com. Если зона возвращает NXDOMAIN, это конец поиска. Затем DNS не переходит на другой сервер для запроса другого ответа.

James avatar
флаг tr
Я знаю, что есть способ настроить сервер для использования DNS через локальную конфигурацию, нет ли какого-нибудь хитрого трюка с каким-то прокси-DNS, который может это сделать? Или использовать зоны политики ответа (RPZ) или какую-то другую новую функцию DNS для достижения этой цели?
John Hanley avatar
флаг cn
@James - 1/2) Что касается политик ответа Google Cloud DNS, я не уверен в разделенном DNS. Вам нужно будет создать сквозное правило. Однако я не знаю возможности прикрепить политику ответа к **частной** зоне, чтобы запрос для **ws2.example.com** обходил частную зону и вместо этого отправлялся в общедоступную зону. В этом случае вы не будете использовать spit Horizon DNS. Вы должны создать политику ответа для каждой зоны, в которой вы хотите получить другой ответ.
John Hanley avatar
флаг cn
@James - 2/2) Что для вашего варианта использования проще в управлении? Создание политик ответа для каждой зоны, в которой вы хотите изменить результаты, или создание записей ресурсов в частной зоне? Я не думаю, что политика реагирования предложит то волшебство, которое вы ищете. Придется что-то настраивать либо в зоне, либо через политику.
James avatar
флаг tr
Хорошо, спасибо, Джон. Я переоценю наши варианты использования. Возможно, нам просто придется принять это ограничение и переключиться на HTTP01 для cert-manager.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.