NetworkManager — Управление сетью.

Установка, настройка, эксплуатация.
Ответить
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

NetworkManager — Управление сетью.

Сообщение root »

Последний раз редактировалось root 19 апр 2026 10:52, всего редактировалось 1 раз.
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Сообщение root »


Показать общее состояние NetworkManager

Код: Выделить всё

nmcli general status
Показать активные соединения

Код: Выделить всё

nmcli connection show --active
Показать все сконфигурированные соединения

Код: Выделить всё

nmcli connection show configured
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Сообщение root »


[anchor=3 goto=top] Подключиться / отключиться от уже настроенного соединения
Подключиться к настроенному соединению по имени

Код: Выделить всё

nmcli connection up id <connection name>
Отключение по имени

Код: Выделить всё

nmcli connection down id <connection name>
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Сообщение root »


Получить статус Wifi.

Код: Выделить всё

nmcli radio wifi
Включить или выключить Wi-Fi.

Код: Выделить всё

nmcli radio wifi <on|off>
Список доступных точек доступа (AP) для подключения.

Код: Выделить всё

nmcli device wifi list
Обновить предыдущий список.

Код: Выделить всё

nmcli device wifi rescan
Создать новое подключение к открытой точке доступа.

Код: Выделить всё

nmcli device wifi connect <SSID|BSSID>
Создать новое подключение к интересующей нас точке, защищенной паролем.

Код: Выделить всё

nmcli con add con-name WIFI5 ifname wlo1 type wifi ssid WIFI5
Теперь модифицируем созданное соединение, указав что нужно использовать тип шифрования wpa_psk

Код: Выделить всё

nmcli con modify WIFI5 wifi-sec.key-mgmt wpa_psk
Теперь задаём, заранее выбранному типу шифрования, пароль для соединения

Код: Выделить всё

nmcli con modify WIFI5 wifi-sec.psk Password
И активируем соединение

Код: Выделить всё

nmcli con up WIFI5
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Сообщение root »


Список доступных устройств и их статус

Код: Выделить всё

nmcli device status
Отключить интерфейс

Код: Выделить всё

nmcli device disconnect iface <interface>
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Сообщение root »


[anchor=6 goto=top]Создать / изменить соединение
создать новое соединение с помощью интерактивного редактора

Код: Выделить всё

nmcli connection edit con-name <name of new connection>
Редактировать уже существующее соединение с помощью интерактивного редактора

Код: Выделить всё

nmcli connection edit <connection name>
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Сообщение root »


Давайте создадим новое соединение

Код: Выделить всё

nmcli connection edit con-name <name of new connection>
NetworkManager попросит нас определить тип подключения

Код: Выделить всё

Valid connection types: 802-3-ethernet (ethernet), 802-11-wireless (wifi), wimax, gsm, cdma, infiniband, adsl, bluetooth, vpn, 802-11-olpc-mesh (olpc-mesh), vlan, bond, team, bridge, bond-slave, team-slave, bridge-slave
Enter connection type: 
В этом примере мы будем использовать Ethernet

Код: Выделить всё

Enter connection type: ethernet
Next this will appear, note that "nmcli>" is a prompt and that it lists the main settings available
Далее это появится, обратите внимание, что «nmcli>» - это приглашение и в нем перечислены основные доступные настройки

Код: Выделить всё

===| nmcli interactive connection editor |===

Adding a new '802-3-ethernet' connection

Type 'help' or '?' for available commands.
Type 'describe [<setting>.<prop>]' for detailed property description.

You may edit the following settings: connection, 802-3-ethernet (ethernet), 802-1x, ipv4, ipv6
nmcli> 
Мы будем редактировать настройку "ipv4"

Код: Выделить всё

nmcli> goto ipv4
Обратите внимание, что после этого наш запрос изменился на этот, чтобы указать, что мы в настоящее время редактируем настройку «ipv4»

Код: Выделить всё

nmcli ipv4>
List available properties under the setting "ipv4" and describe the property "method"
Перечислите доступные свойства в параметре «ipv4» и опишите свойство «метод»

Код: Выделить всё

nmcli ipv4> describe
Available properties: method, dns, dns-search, addresses, routes, ignore-auto-routes, ignore-auto-dns, dhcp-client-id, dhcp-send-hostname, dhcp-hostname, never-default, may-fail
Property name?
Property name? method
Давайте установим свойство "method" в "auto"

Код: Выделить всё

nmcli ipv4> set method auto
Теперь, когда мы закончили редактирование настройки «ipv4», давайте вернемся к основному уровню. Выполняйте следующую команду, пока подсказка не будет выглядеть как «nmcli>»

Код: Выделить всё

nmcli> back
Если вам нужно снова перечислить основные настройки, используйте команду «goto» без каких-либо аргументов. После этого просто нажмите ввод и игнорируйте ошибку.

Код: Выделить всё

nmcli> goto
Available settings: connection, 802-3-ethernet (ethernet), 802-1x, ipv4, ipv6
Setting name?
Можно установить значение для свойства непосредственно с основного уровня

Код: Выделить всё

nmcli> set <setting>.<property> <value>
Например

Код: Выделить всё

nmcli> set connection.autoconnect TRUE
nmcli> set connection.interface-name <interface name this connection is bound to>
nmcli> set ethernet.cloned-mac-address <Spoofed MAC address>
Наконец, проверьте изменения подключения, сохраните и выйдите

Код: Выделить всё

nmcli> print
nmcli> save
nmcli> quit
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Сообщение root »


Чтобы вручную отредактировать конфигурацию соединения, откройте или создайте в текстовом редакторе файл конфигурации соединения, расположенный в:

Код: Выделить всё

"/etc/sysconfig/network-scripts/ifcfg-<connection name>"
Описание наиболее распространенных параметров конфигурации доступно по адресу

Чтобы изменить пароль подключения, откройте текстовый редактор и отредактируйте файл "keys-<connection id>" расположенный в"/etc/sysconfig/network-scripts/". Пароль хранится в виде простого текста. Например

Код: Выделить всё

$ cat /etc/sysconfig/network-scripts/keys-<connection name>
WPA_PSK='password'
Или, если вы используете ключевой файл, просто отредактируйте файл подключения, расположенный внутри
"/etc/NetworkManager/system-connections/"
Сохраните файлы и примените изменения к уже активному соединению. Выполните

Код: Выделить всё

nmcli connection up id <connection name>
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Сообщение root »


Удалить соединение

Код: Выделить всё

nmcli connection delete id <connection name>
Обратите внимание, что это также деактивирует соединение.
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Сообщение root »


Код: Выделить всё

nmcli con add type dummy ifname dummy0 ipv4.addresses 192.168.50.1/24
Настройки данного соединения находятся в файле

Код: Выделить всё

/etc/NetworkManager/system-connections/dummy-dummy0.nmconnection

Код: Выделить всё

[connection]
id=dummy-dummy0
uuid=e23a1d4d-cb3f-4738-b248-c68762a60d33
type=dummy
interface-name=dummy0
permissions=
[ipv4]
address1=192.168.50.1/24
dns-search=
method=auto
[ipv6]
addr-gen-mode=stable-privacy
dns-search=
method=auto
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Сообщение root »


Следующей конструкцией можно просмотреть текущий статус настроек Wake-on-LAN:

Код: Выделить всё

nmcli c show "enp42s0" | grep 802-3-ethernet.wake-on-lan
Включить "магический" пакет Wake-on-LAN для соединения можно так:

Код: Выделить всё

nmcli connection modify enp42s0 802-3-ethernet.wake-on-lan magic
параметр в файлле конфигурации
cat /etc/NetworkManager/system-connections/enp42s0.nmconnection

Код: Выделить всё

...
[ethernet]
wake-on-lan=64
...
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Сообщение root »


Добавляем новое соединение с типом bridge

Код: Выделить всё

nmcli connection add type bridge autoconnect yes con-name br0 ifname br0
Назначаем адреса на новый интерфейс br0

Код: Выделить всё

nmcli connection modify br0 ipv4.addresses 195.0.1.3/24 ipv4.method manual
nmcli connection modify br0 ipv6.addresses 2000:2cc0:13b1:3333::3/64 ipv6.method manual
Назначаем шлюзовые адреса для интераейса br0

Код: Выделить всё

nmcli connection modify br0 ipv4.gateway 195.0.1.254
nmcli connection modify br0 ipv6.gateway 2000:2cc0:13b1:3333::1
Указываем список IP-адресов DNS-серверов для br0

Код: Выделить всё

nmcli connection modify br0 ipv4.dns 195.0.1.3
nmcli connection modify br0 ipv6.dns 2000:2cc0:13b1:3333::3
Указываем в каких DNS-зонах искать неполные имена

Код: Выделить всё

nmcli connection modify br0 ipv4.dns-search free-adm.ru
nmcli connection modify br0 ipv6.dns-search free-adm6.ru
Запрещаем системе автоматически настраивать DNS-серверы, полученные по DHCP

Код: Выделить всё

nmcli connection modify br0 ipv4.ignore-auto-dns yes ipv6.ignore-auto-dns yes
Теперь отключим протокол STP (Spanning Tree Protocol) и установим задержку пересылки равной 0. Это часто делается в средах, где обнаружение петель не является проблемой, например, в качестве моста для виртуальных машин, чтобы ускорить работу моста.

Код: Выделить всё

nmcli connection modify br0 bridge.stp no bridge.forward-delay 0
Удаляем текущий сетевой интерфейс

Код: Выделить всё

nmcli connection del enp42s0
Добавляем удалённый интерфейс снова в качестве одного из портов моста br0

Код: Выделить всё

nmcli connection add type bridge-slave autoconnect yes con-name enp42s0 ifname enp42s0 master br0
Включаем на интерфейсе протокол пробуждения по сети

Код: Выделить всё

nmcli connection modify enp42s0 802-3-ethernet.wake-on-lan magic
Компактно-достаточный пример команд для создания моста

Код: Выделить всё

nmcli connection add type bridge con-name br0 ifname br0
nmcli connection add type bridge-slave con-name br0-port1 ifname enp42s0 master br0
nmcli connection modify br0 ipv4.method manual ipv6.method manual ipv4.ignore-auto-dns yes ipv6.ignore-auto-dns yes \
	ipv4.addresses 195.0.1.3/24 ipv4.gateway 195.0.1.254 ipv4.dns 195.0.1.254 ipv4.dns-search "free-adm.ru" \
	ipv6.addresses 2000:2cc0:13b1:3333::3/64 ipv6.gateway 2000:2cc0:13b1:3333::1 ipv6.dns 2000:2cc0:13b1:3333::1 ipv6.dns-search "free-adm.ru"
nmcli connection modify br0 bridge.stp no bridge.forward-delay 0
Перезапускаем систему

Код: Выделить всё

systemctl reboot
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Сообщение root »

Код: Выделить всё

nmcli connection modify enp0s3 ipv4.dns-search free-adm.ru
nmcli connection modify enp0s3 ipv6.dns-search free-adm.ru
nmcli connection modify enp0s3 ipv4.gateway 195.0.1.254
nmcli connection modify enp0s3 ipv6.gateway 2000:2cc0:13b1:3333::1
nmcli connection modify enp0s3 ipv4.dns 195.0.1.3
nmcli connection modify enp0s3 ipv6.dns 2000:2cc0:13b1:3333::3
nmcli connection modify enp0s3 ipv4.addresses 195.0.1.4/24
nmcli connection modify enp0s3 ipv6.addresses 2000:2cc0:13b1:3333::4/64
nmcli connection modify enp0s3 ipv4.method manual
nmcli connection modify enp0s3 ipv6.method manual
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Сообщение root »

[anchor=14 goto=top]Пример для TunnelBroker Hurricane Electric 6in4
Перейдите на страницу конфигурации вашего туннеля (Главная страница => Нажмите на ваш туннель), чтобы найти настройки, необходимые для заполнения примера команды ниже, чтобы заменить места, где слова написаны ПРОПИСНЫМИ.

Код: Выделить всё

nmcli connection add type ip-tunnel con-name sit1 ifname sit1 mode sit \
remote SERVER_IPV4_ADDRESS -- ipv4.method disabled ipv6.method manual \
ipv6.address CLIENT_IPV6_ADDRESS ipv6.gateway SERVER_IPV6_ADDRESS ip-tunnel.ttl 64
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Сообщение root »

Для указания параметров negotiate, duplex, speed, mtu Можно использовать nmcli со следующими опциями:

Код: Выделить всё

nmcli connection modify Lan 802-3-ethernet.auto-negotiate yes 802-3-ethernet.speed 10000 802-3-ethernet.duplex full 802-3-ethernet.mtu 1480
Значение MTU выставлено 1480, так как на роутере используется туннельное соединение с указанным ограничением. Дабы избежать фрагментации кадров на роутере, при прохождении через туннельное соединение, выставлено минимально используемое значение туннельного соединения.
Так же можно прибегнуть к редактированию соответствующего конфигурационного файла NetworkManager:

Код: Выделить всё

[ethernet]
duplex=full
mac-address=2C:F0:5D:82:D4:A2
mtu=1480
speed=1000
Перечисленные параметры задаются в секции [ethernet]
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Сообщение root »

Иногда нужно чтобы NetworkManager не ждал поднятия всех имеющихся интерфейсов. Например в системе есть не настроенные интерфейсы, из-за чего служба NetworkManager-wait-online.service грузится с ошибкой. Для такого случая можно для NetworkManager указать настроенный интерфейс, после активаци которого сеть будет считаться активной. Как правило в роли такого интерфейса может выступать основной интерфейс системы к которому подключены службы. Создаём файл со следующим содержанием:

Код: Выделить всё

/etc/NetworkManager/conf.d/wait-for-interface.conf
Вот пример конфигурации NetworkManager для ожидания поднятия конкретного интерфейса:

Код: Выделить всё

[main]
wait-online=yes

[wait-online]
interfaces=<interface_name>
Здесь <interface_name> - имя интерфейса, для которого вы хотите ожидать поднятия (например, eth0, wlan0, и т.д.).
Если в системе есть несколько важных для правильного функционирования сервера интерфейсов, активация которых важна, то их можно указать через запятую:

Код: Выделить всё

interfaces=<interface_name1>,<interface_name2>,...
После внесения изменений в конфигурационный файл, перезапустите NetworkManager:

Код: Выделить всё

sudo systemctl restart NetworkManager
NetworkManager будет ожидать поднятия указанного интерфейса перед продолжением процесса запуска.
Если вам нужно указать время ожидания, вы можете добавить параметр wait-online-timeout в секцию [wait-online]:

Код: Выделить всё

[wait-online]
interfaces=<interface_name>
wait-online-timeout=<timeout_in_seconds>
Здесь <timeout_in_seconds> - время ожидания в секундах (например, 30 для 30 секунд).
Обратите внимание, что параметр wait-online может быть указан также в файле /etc/NetworkManager/NetworkManager.conf.
Последний раз редактировалось root 19 апр 2026 10:53, всего редактировалось 2 раза.
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Re: NetworkManager — Управление сетью.

Сообщение root »

Простыми словами, мост в Linux — это виртуальный сетевой коммутатор, созданный программно. Он объединяет несколько сетевых интерфейсов (физических, виртуальных, виртуальных машин) в единый сегмент локальной сети (L2). Все устройства, подключенные к мосту, "видят" друг друга так, как если бы они были подключены к одному физическому свитчу.
Польза и преимущества применения мостов
  1. Виртуализация (самая частая причина)
    • Объединение ВМ и контейнеров с хостом: Мост позволяет виртуальным машинам (KVM, VirtualBox) и контейнерам (LXC/LXD, Docker) получить IP-адрес из той же сети, что и хост-машина. Для внешней сети ВМ выглядит как обычное самостоятельное устройство.
    • Пример: У вас есть хост с IP `192.168.1.10`. Вы создаете мост `br0`, добавляете в него физический интерфейс `eth0` и виртуальный интерфейс ВМ `vnet0`. ВМ получает от роутера IP `192.168.1.11`. Теперь хост и ВМ могут общаться друг с другом и с интернетом на одном сетевом уровне.
  2. Создание сложных сетевых конфигураций
    • Объединение сегментов сети: Можно объединить несколько физических интерфейсов (например, `eth0` и `wlan0`) в один мост, создав единую точку доступа для проводных и беспроводных клиентов.
    • Сетевые фильтры и фаерволы: На мост можно вешать правила `ebtables` или `nftables` (для L2), чтобы фильтровать кадры Ethernet, ARP-запросы и другой низкоуровневый трафик, что полезно для безопасности и анализа.
  3. Изоляция и сегментация трафика
    • Вы можете создать несколько независимых мостов для разных целей. Например, `br-vm` для виртуальных машин, `br-management` для управления оборудованием, `br-guest` для гостевой сети. Это помогает разделить трафик и повысить безопасность.
  4. Прозрачность для конечных устройств
    • Для виртуальных машин и других устройств, подключенных к мосту, он выглядит как обычный физический коммутатор. Им не нужно знать о тонкостях реализации на хосте.
  5. Гибкость и управляемость программными средствами
    • Мосты создаются и управляются стандартными утилитами Linux (`ip`, `brctl`), что позволяет легко автоматизировать процесс с помощью скриптов и инструментов вроде Ansible.

Негативная сторона и недостатки
  1. Снижение производительности (Overhead)
    • Весь трафик, проходящий через мост, обрабатывается на программном уровне ядром Linux, а не "железом" сетевой карты. Это создает дополнительную нагрузку на CPU, особенно при высоких скоростях (1 Гбит/с и выше) и большом количестве подключенных устройств.
    • Сравнение: Аппаратный коммутатор справляется с этой задачей гораздо эффективнее.
  2. Усложнение сетевой конфигурации
    • Настройка моста требует больше шагов, чем простая настройка сетевого интерфейса. Легко допустить ошибку, которая может привести к потере сетевого соединения с сервером (особенно при удаленной настройке — это опасно!).
    • Требуется понимание, как работают сети на канальном уровне (L2).
  3. Единая точка отказа
    • Если по какой-то причине мост "падает" или останавливается его демон (например, `libvirtd`), все подключенные к нему интерфейсы (и ВМ) теряют сетевую связность.
  4. Проблемы с беспроводными интерфейсами (Wi-Fi)
    • Большинство беспроводных драйверов и протоколов (802.11) не поддерживают режим моста в чистом виде из-за особенностей работы Wi-Fi (полудуплексная среда, аутентификация). Для этого обычно используется режим "точки доступа" (AP), что является более сложной и не всегда стабильной конфигурацией.
  5. Зависимость от хоста
    • Если хост-система перезагружается или зависает, вся сеть, построенная на его мостах, перестает работать. В критически важных инфраструктурах это недопустимо.

Когда использовать мосты?
  1. Идеально: На серверах виртуализации (KVM, Proxmox VE), для изоляции сетей в контейнерах (LXC), при тестировании сетевых приложений и протоколов.
  2. Не идеально (или не стоит): Для простого подключения одного компьютера к интернету, в ситуациях, где критична максимальная сетевая производительность с минимальной загрузкой CPU, для объединения беспроводных клиентов стандартными средствами.
Вывод: Мосты в Linux — это мощный и незаменимый инструмент для создания сложных виртуализированных и изолированных сетей. Однако за эту гибкость приходится платить производительностью и сложностью настройки. Используйте их там, где их преимущества действительно нужны, и избегайте в простых сценариях.
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Сообщение root »

Чем значение меньше, тем приоритет выше. В /etc/resolv.conf сервера с малым приоритетом не попадают. Обшие параметры для системы живут в /etc/NetworkManager/NetworkManager.conf. Для добавления параметров в основную конфигурацию можно воспользоваться дополнительным файлом /etc/NetworkManager/conf.d/dns-priority.conf:

Код: Выделить всё

[connection]
ipv4.dns-priority=200
ipv6.dns-priority=50
Так же эти параметры доступны для конкретных интерфейсов

Код: Выделить всё

nmcli connection show "br0" |grep dns-priority
ipv4.dns-priority:                      0
ipv6.dns-priority:                      0
Меняем параметры на лету

Код: Выделить всё

nmcli connection modify "br0" ipv4.dns-priority 10
nmcli connection modify "br0" ipv6.dns-priority 5
nmcli меняет параметры в /etc/NetworkManager/system-connections/ (профили), а глобальные настройки в /etc/NetworkManager/NetworkManager.conf меняются только текстовым редактором.
Последний раз редактировалось root 19 апр 2026 11:19, всего редактировалось 3 раза.
Ответить