Мы используем GCP и Cloud DNS для управления нашим доменом, и я пытаюсь решить следующие варианты использования:
- Имейте личные записи для таких вещей, как базы данных, которые могут быть разрешены только в сети компании (наше VPC).
- Замените общедоступные записи частными IP-адресами для альтернативной маршрутизации в сети компании.
- Иметь возможность отправлять запросы 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, если это возможно.