Я хотел бы добавить наш собственный сервер имен доменов в COS. Как мне это сделать?
Это просто создать следующее в /etc/dhcp/dhclient.conf
:
prepend domain-name-servers <domain ip>;
Я добавил указанную выше конфигурацию, но по-прежнему не могу использовать свой домен в экземпляре COS VM. Есть что-то, что я пропустил?
Как перезапустить сетевой адаптер в COS без сброса/перезагрузки?
Спасибо. Что помогает. Знаете ли вы, как я могу добавить свой домен поверх Google DNS 169.254.169.254? Конфигурация prepend
работает на виртуальной машине CentOS, но не работает на виртуальной машине COS. Есть идеи ?
Не изменять /etc/dhclient.conf
. Это перезаписывается при каждом обновлении DHCP. COS заблокирован, вы не можете изменить конфигурацию ОС.
Спасибо, Джон. Я думаю, единственный способ — изменить конфигурацию внутри контейнера, работающего на хосте COS.
COS использует "cloud-init". Если вы хотите добавить DNS-сервер в качестве подобных конфигураций в COS, вы должны использовать cloud-init как способ настройки своего экземпляра при его загрузке. Инструмент cloud-init ожидает свою конфигурацию в значении ключа пользовательских данных метаданных экземпляра. Для получения дополнительной информации1
Чтобы передать конфигурации cloud-init в экземпляр, вам нужно создать свой экземпляр с флагом: --metadata-from-file user-data=[имя файла] или добавить пару ключ-значение user-data=[имя файла] к экземпляру из консоли, где файл будет храниться во внешнем расположении, таком как облачное хранилище, которому вы предоставите URL-адрес. Также можно просто скопировать конфигурацию в раздел значений при настройке метаданных. Примеры конфигураций для указания серверов имен и доменов можно найти по следующей ссылке.
Заменив значение конфигурации yaml в метаданных (но сохранив ключ «user-data») следующей конфигурацией, вы можете настроить resolv.conf для использования пользовательских серверов имен и заставить экземпляр использовать эти серверы имен для разрешения адресов.
В качестве примера вы можете создать файл с именем cloud-config-resolv, содержащий следующее:
#cloud-config
write_files:
- path: /etc/systemd/resolved.conf
permissions: "0644"
owner: root:root
content: |
# This is my custom resolv.conf!
[Resolve]
DNS= 8.8.8.8 (Use your IP)
runcmd:
- ['systemctl', 'restart', 'systemd-resolved']
Затем вы можете запустить следующую команду, чтобы добавить [Ваш-IP] в файл resolv.conf.
gcloud compute instances create instance-name \
--image-family cos-stable \
--image-project cos-cloud \
--metadata-from-file user-data=cloud-config-resolv \
--zone us-central1-a
Я не уверен, что он сохранится через 24 часа, так как аренда dhcp продлевается и все изменения очищаются. Но файл сохраняется после перезапуска сетевого демона и перезапуска виртуальной машины.
Насколько я знаю, /etc
в COS не имеет гражданства. Если виртуальная машина сброшена, изменения исчезнут. Его необходимо перенастроить с помощью cloud-init
через метаданные. Ваши решения кажутся рабочими, но я не уверен, есть ли какой-либо побочный эффект. На данный момент разрешение имен работает между OnPrem и GCP VM после внесения предложенных вами изменений. Я не видел никаких проблем до сих пор. Я подожду 24 часа, чтобы посмотреть, не случится ли что-нибудь плохое. По словам Джона, он прав, но я не уверен, насколько отличается это решение с добавлением dhcp
, о котором я упоминал ранее. Приведет ли это изменение к непригодности внутреннего DNS 169.254.169.254?
@jlim Надеюсь, узел работает правильно. Я не заметил никаких документов, касающихся внутренней проблемы DNS.
Все идет нормально. Работает 2 дня без нареканий. Конфликтов с внутренним DNS Google не наблюдалось 169.254.169.,254
. Я пока буду придерживаться этого решения. Спасибо
Попробуйте этот «systemctl перезапустить google-network-daemon.service», чтобы перезапустить сетевую службу, и «статус systemctl google-network-daemon.service», чтобы увидеть текущий статус