Вопрос или проблема
Похоже, что netplan — это будущее, но по сравнению с этой простой командой:
ifconfig eth0 192.168.1.1 netmask 255.255.255.0 up
это гораздо больше работы, чем редактирование этого раздражающего yaml-файла (парсер yaml кажется технологией 20-летней давности…).
Кто-то знает хороший инструмент для изменения конфигурации netplan, просто используя командную строку?
Оказывается, теперь существуют CLI-инструменты для netplan, чтобы редактировать конфигурации. Они были добавлены с https://github.com/canonical/netplan/pull/163 в сентябре 2020 года.
netplan set
— это тот инструмент.
Используйте netplan get
, чтобы вывести вашу конфигурацию.
К сожалению, этот инструмент очень плохо задокументирован, его возможности описаны только в man-странице – https://manpages.ubuntu.com/manpages/impish/man8/netplan-set.8.html
netplan set [key=value] записывает заданную пару ключ/значение или поддерево YAML в файл YAML в
/etc/netplan/ и проверяет его формат.
Вы можете указать одно значение как: "[network.]ethernets.eth0.dhcp4=[1.2.3.4/24,
5.6.7.8/24]" или полное поддерево как: "[network.]ethernets.eth0={dhcp4: true, dhcp6: true}".
Есть более широкий набор примеров в тестах: https://github.com/canonical/netplan/blob/main/tests/test_cli_get_set.py
Ищите строки self._set
.
Для вашего конкретного примера:
ifconfig eth0 192.168.1.1 netmask 255.255.255.0 up
вы бы использовали
netplan set ethernets.eth0.addresses=[192.168.1.1/24]
Это обновит соответствующую конфигурацию в /etc/netplan (в отличие от ifconfig, который никогда не изменял конфигурацию загрузки, только runtime).
Вы бы продолжили с netplan try
и netplan apply
, чтобы обновить вашу работающую систему из сохраненной конфигурации.
Вы можете прочитать больше документации, какая есть, на https://netplan.io/
Команда ifconfig
все еще существует в Ubuntu, но между тем, что предназначено для ifconfig
и netplan
, нет эквивалентности. ifconfig
— это инструмент для изменения текущего состояния интерфейса в системе. netplan
— это инструмент для постоянного управления конфигурацией сети на системе.
Если вы знаете, как настраивать свои сетевые интерфейсы с помощью серии команд ifconfig, вы можете добавить unit systemd или init-скрипт, чтобы запускать их при загрузке, но это будет менее хорошо интегрировано с загрузкой системы, чем использование netplan.
В настоящее время нет инструментов командной строки для редактирования конфигурации netplan.
Вы можете найти эту страницу полезной:
https://p5r.uk/blog/2010/ifconfig-ip-comparison.html
Например:
ip addr add 192.168.0.77/24 broadcast 192.168.0.255 dev eth0
По ответу Кина, я сделал элементарную документацию для netplan set.
Вы используете .
, чтобы углубиться в дерево yaml.
Пример: netplan set ethernets.eth0.nameservers.addresses=[1.1.1.1]
netplan set ethernets.eth0.addresses=[192.168.1.2/24]
соответствует
network:
version: 2
ethernets:
eth0:
addresses:
- "192.168.1.2/24"
nameservers:
addresses:
- 1.1.1.1
search: []
Чтобы установить поле как пустое, используйте ключевое слово null
:
Пример: netplan set ethernets.eth0.addresses=null
Мне еще предстоит выяснить, как настроить nameservers с этим…
Ответ или решение
Netplan — это современный инструмент для управления сетевыми конфигурациями в операционных системах на базе Linux, который заменяет более традиционные методы, такие как использование ifconfig
. Несмотря на мнение некоторых пользователей о том, что редактирование YAML-файлов может быть неудобным процессом, на данный момент существуют инструменты командной строки, которые значительно упрощают задачу настройки сети.
Использование netplan
через командную строку
В версии Netplan, которая была обновлена в сентябре 2020 года, были добавлены команды, позволяющие настроить сетевые параметры без необходимости вручную редактировать YAML-файлы. Эти команды включают netplan set
и netplan get
.
Основные команды
-
netplan get
— позволяет получить текущее состояние конфигурации сети. Это полезно, чтобы убедиться, какие параметры уже установлены, и просмотреть действующие настройки перед внесением изменений.netplan get
-
netplan set
— непосредственно устанавливает новые значения для сетевых параметров. С его помощью можно обновить как отдельные значения, так и целые поддеревья конфигурации. Основной синтаксис команды:netplan set [ключ=значение]
Например, для того чтобы задать IP-адрес и маску подсети для интерфейса
eth0
, вы можете использовать команду:netplan set ethernets.eth0.addresses=[192.168.1.1/24]
Это добавит адрес и соответственно изменит файл конфигурации в
/etc/netplan/
.
Применение изменений
После внесения изменений с помощью netplan set
, следующие шаги — это применение конфигурации:
-
netplan try
— позволяет протестировать внесенные изменения, обеспечивая возможность отмены в случае проблем с подключением.netplan try
-
netplan apply
— применяет изменения окончательно, обновляя текущие параметры сети.netplan apply
Управление DNS и другими параметрами
Чтобы задать параметры DNS, например, в вашем случае для eth0
, используйте следующую команду:
netplan set ethernets.eth0.nameservers.addresses=[1.1.1.1]
Это обновит ваши имена серверов, добавив указанный адрес.
Для очистки поля, вы можете использовать ключевое слово null
, например:
netplan set ethernets.eth0.addresses=null
Дополнительные ресурсы
Несмотря на то, что документация по этим командам довольно ограничена, вы можете ознакомиться с дополнительными примерами на GitHub и в документации Netplan. Это поможет вам лучше понять функциональные возможности netplan set
и его применения в различных сценариях.
Вывод
Netplan предоставляет мощный и гибкий инструмент для управления сетевыми конфигурациями. Использование команд netplan set
и netplan get
позволяет избежать сложности ручного редактирования YAML-файлов, упрощая процесс настройки сети. Если вы привыкли к простоте ifconfig
, переход к Netplan может потребовать времени на привыкание, однако он обеспечивает более устойчивое и управляемое решение для современных сетевых конфигураций.