Вопрос или проблема
Я пытаюсь сделать некоторые вещи с Docker на 18.04 Bionic Beaver (серверная версия!), что требует отключения DNS-резолвера
sudo systemctl disable systemd-resolved.service
sudo systemctl stop systemd-resolved.service
Поскольку все обычные сетевые инструменты, похоже, недоступны, мне показали в сторону netplan, в частности cat /etc/netplan/*.yaml
, что вернуло
# Этот файл сгенерирован на основе информации, предоставленной
# источником данных. Изменения в нём не сохранятся после перезапуска.
# Чтобы отключить возможности конфигурации сети cloud-init, создайте файл
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg со следующим содержимым:
# network: {config: disabled}
network:
ethernets:
enp0s3:
addresses: []
dhcp4: true
version: 2
Итак, будучи овцой в стаде, я создал /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
и заполнил его network: {config: disabled}
. Я хотел перезапустить сеть, и предложение, которое я постоянно находил, было
sudo netplan apply
что вернуло:
sudo: не удается разрешить хост generic: Временный ресурс недоступен
где моё имя хоста generic. Я предполагаю, что это из-за того, что я отключил разрешение? Но, похоже, я вернулся к своей исходной проблеме, потому что я следую этому руководству, которое говорит, что нужно добавить dns=default
в NetworkManager.config. Я предполагаю, что я должен добавить что-то подобное для BB, но не знаю, куда это поместить.
Добавьте renderer: networkd
в конфигурационный файл:
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
dhcp4: true
Ответ или решение
Чтобы перезапустить сетевое соединение в Ubuntu 18.04 с использованием Netplan, выполните следующие шаги. Учитывая, что вы уже останавливаете и отключаете systemd-resolved для требований Docker, вам необходимо внести изменения в конфигурацию сети, а затем перезапустить её.
Шаг 1: Настройка Netplan
-
Проверьте текущую конфигурацию Netplan. Для этого выполните команду:
cat /etc/netplan/*.yaml
Вы уже видели вывод, который говорит, что используется DHCP и что конфигурация поступает от cloud-init.
-
Отключите cloud-init от управления сетью. Вы правильно создали файл:
sudo touch /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg echo "network: {config: disabled}" | sudo tee /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
-
Измените конфигурацию сети с помощью Netplan. Вам нужно добавить
renderer: networkd
для управления сетевыми настройками через Netplan. Откройте файл конфигурации Netplan:sudo nano /etc/netplan/01-netcfg.yaml
Если он отсутствует, вы можете создать новый. Ваш файл должен выглядеть примерно так:
network: version: 2 renderer: networkd ethernets: enp0s3: dhcp4: true
Пожалуйста, убедитесь, что имя интерфейса (
enp0s3
) соответствует тому, что у вас в системе (вы можете проверить его с помощьюip link
).
Шаг 2: Применение изменений
После внесения всех необходимых изменений сохраните файл и выйдите из редактора. Теперь примените изменения конфигурации Netplan:
sudo netplan apply
Шаг 3: Проверка сетевого состояния
Теперь вам нужно проверить, работает ли сеть корректно. Вы можете выполнить следующую команду, чтобы увидеть текущее состояние интерфейсов:
ip addr show
Шаг 4: Решение проблемы с разрешением имен
Если вы видите сообщение об ошибке, подобное sudo: unable to resolve host generic: Resource temporarily unavailable
, это связано с тем, что hostname вашего сервера не может быть разрешен. Вам нужно убедиться, что файл /etc/hosts
содержит запись для вашего hostname:
sudo nano /etc/hosts
Убедитесь, что строка с вашим hostname выглядит так:
127.0.0.1 localhost
127.0.1.1 generic
Замените generic
на фактическое имя вашего хоста, если необходимо.
В заключение
Теперь ваша сеть должна работать корректно, и вы можете продолжать настраивать Docker. Если вам нужно добавить параметры DNS, вы можете сделать это в вашем конфигурационном файле Netplan следующим образом:
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
Добавьте эти строки под ethernets
, чтобы установить DNS-серверы Google.
Не забывайте перезапускать услуги или перезагружать систему по мере необходимости, чтобы применить все изменения.