У меня есть сервер DigitalOcean, это настраивается через облако-init. С Ubuntu Бионический Бобр это создает netplan файл в /etc/netplan/50-cloud-init.yaml
это содержит адреса сервера имен. Однако переопределение этих адресов не просто.
На бионическом бобре, /etc/resolv.conf
управляется systemd-разрешенным сервисом. Я могу отредактировать глобальные серверы имен как так:
echo 'DNS=1.1.1.1 1.0.0.1' >> /etc/systemd/resolved.conf
service systemd-resolved restart
Однако это не влияет на определенные для интерфейса серверы имен, настроенные облаком-init. Для этого я должен отредактировать netplan файл непосредственно или переопределить его так или иначе. Я могу отредактировать файл непосредственно, но это не очень благоприятно для автоматизации. В netplan документации говорится, что существует иерархия для netplan YAML файлы:
Конфигурационные файлы могут существовать в трех различных местах с приоритетом от самого важного до наименьшее количество следующим образом:
- /run/netplan / *.yaml
- /etc/netplan / *.yaml
- /lib/netplan / *.yaml
В алфавитном порядке более поздние файлы, независимо от того, что каталог в, исправят ключи, если ключ не будет уже существовать и переопределит предыдущие ключи, если они делают.
Учитывая это, я записал "в алфавитном порядке более поздний файл" следующим образом:
# /etc/netplan/51-cloudflare-dns.yaml
network:
ethernets:
eth0:
nameservers:
addresses:
- 1.1.1.1
- 1.0.0.1
Давший указания выше, я ожидал, что это заменит серверы имен для eth0 с новыми примененными. Однако выполнение netplan apply
добавленный к списку серверов имен для интерфейса вместо того, чтобы заменить их, как замечено с systemd-resolve --status
:
Link 2 (eth0)
Current Scopes: DNS
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNS Servers: 8.8.8.8
8.8.4.4
1.1.1.1
1.0.0.1
Как я могу переопределить серверы имен netplan на интерфейс, вместо того, чтобы добавить им? И решения основанной на файле и командной строки, которые сохраняются через перезагрузки, приветствуются.
Это - единственный способ, которым я нашел:
Переименовать /etc/netplan/50-cloud-init.yaml
кому: /etc/netplan/51-network-settings.yaml
и отредактируйте его с изменениями, которые Вы хотите. Удостоверьтесь, что удалили старую версию файла для препятствования серверам имен то, чтобы быть добавленным к старым. Затем создайте файл, названный чем-то как /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
с содержанием network: {config: disabled}
, который будет препятствовать тому, чтобы облако-init воссоздало свой выходной файл.
Оборотная сторона этого - то, если изменения конфигурации сети иначе, поскольку облако-init не будет справляться с настройками больше. Я предполагаю, что было бы лучше настроить облако-init для изменения просто серверов имен, но я не нашел способ сделать это.