NetworkManager — Управление сетью.
NetworkManager — Управление сетью.
Темы
Описание
Статус NetworkManager'а
Подключиться / отключиться от уже настроенного соединения
Wifi
Сетевые интерфейсы
Создать / изменить соединение
Пример / Руководство
Редактирование вручную
Удалить конфигурацию соединения
Создаём виртуальный адаптер
Wake On Lan
Bridge
Смена IPv4 и IPv6 адресов на интерфейсе
Пример для TunnelBroker Hurricane Electric 6in4
Настройка параметров Ethernet
Настройка ожидания определенного интерфейса в NetworkManager
Теория мостов
Приоритезация DNS серверов при DualStack
Дополнительные материалы
Systemd-networkd — Управление сетью
Network-Scripts — Управление сетью
nmcli - это инструмент, который позволяет управлять сетью из командной строки.
Показать общее состояние NetworkManager
Код: Выделить всё
nmcli general statusКод: Выделить всё
nmcli connection show --activeКод: Выделить всё
nmcli connection show configured[anchor=3 goto=top] Подключиться / отключиться от уже настроенного соединения
Подключиться к настроенному соединению по имени
Код: Выделить всё
nmcli connection up id <connection name>Код: Выделить всё
nmcli connection down id <connection name>Получить статус Wifi.
Код: Выделить всё
nmcli radio wifiКод: Выделить всё
nmcli radio wifi <on|off>Код: Выделить всё
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Код: Выделить всё
nmcli con modify WIFI5 wifi-sec.key-mgmt wpa_pskКод: Выделить всё
nmcli con modify WIFI5 wifi-sec.psk PasswordКод: Выделить всё
nmcli con up WIFI5Список доступных устройств и их статус
Код: Выделить всё
nmcli device statusКод: Выделить всё
nmcli device disconnect iface <interface>[anchor=6 goto=top]Создать / изменить соединение
создать новое соединение с помощью интерактивного редактора
Код: Выделить всё
nmcli connection edit con-name <name of new connection>Код: Выделить всё
nmcli connection edit <connection name>Давайте создадим новое соединение
Код: Выделить всё
nmcli connection edit con-name <name of new connection>Код: Выделить всё
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: Код: Выделить всё
Enter connection type: ethernetДалее это появится, обратите внимание, что «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> Код: Выделить всё
nmcli> goto ipv4Код: Выделить всё
nmcli ipv4>Перечислите доступные свойства в параметре «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Код: Выделить всё
nmcli ipv4> set method autoКод: Выделить всё
nmcli> backКод: Выделить всё
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Чтобы вручную отредактировать конфигурацию соединения, откройте или создайте в текстовом редакторе файл конфигурации соединения, расположенный в:
Код: Выделить всё
"/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>Удалить соединение
Код: Выделить всё
nmcli connection delete id <connection name>Код: Выделить всё
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Следующей конструкцией можно просмотреть текущий статус настроек Wake-on-LAN:
Код: Выделить всё
nmcli c show "enp42s0" | grep 802-3-ethernet.wake-on-lanКод: Выделить всё
nmcli connection modify enp42s0 802-3-ethernet.wake-on-lan magiccat /etc/NetworkManager/system-connections/enp42s0.nmconnection
Код: Выделить всё
...
[ethernet]
wake-on-lan=64
...
Добавляем новое соединение с типом bridge
Код: Выделить всё
nmcli connection add type bridge autoconnect yes con-name br0 ifname 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Код: Выделить всё
nmcli connection modify br0 ipv4.gateway 195.0.1.254
nmcli connection modify br0 ipv6.gateway 2000:2cc0:13b1:3333::1Код: Выделить всё
nmcli connection modify br0 ipv4.dns 195.0.1.3
nmcli connection modify br0 ipv6.dns 2000:2cc0:13b1:3333::3Код: Выделить всё
nmcli connection modify br0 ipv4.dns-search free-adm.ru
nmcli connection modify br0 ipv6.dns-search free-adm6.ruКод: Выделить всё
nmcli connection modify br0 ipv4.ignore-auto-dns yes ipv6.ignore-auto-dns yesКод: Выделить всё
nmcli connection modify br0 bridge.stp no bridge.forward-delay 0Код: Выделить всё
nmcli connection del enp42s0Код: Выделить всё
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Код: Выделить всё
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Перейдите на страницу конфигурации вашего туннеля (Главная страница => Нажмите на ваш туннель), чтобы найти настройки, необходимые для заполнения примера команды ниже, чтобы заменить места, где слова написаны ПРОПИСНЫМИ.
Код: Выделить всё
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Код: Выделить всё
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Так же можно прибегнуть к редактированию соответствующего конфигурационного файла NetworkManager:
Код: Выделить всё
[ethernet]
duplex=full
mac-address=2C:F0:5D:82:D4:A2
mtu=1480
speed=1000Код: Выделить всё
/etc/NetworkManager/conf.d/wait-for-interface.confКод: Выделить всё
[main]
wait-online=yes
[wait-online]
interfaces=<interface_name>Если в системе есть несколько важных для правильного функционирования сервера интерфейсов, активация которых важна, то их можно указать через запятую:
Код: Выделить всё
interfaces=<interface_name1>,<interface_name2>,...Код: Выделить всё
sudo systemctl restart NetworkManagerЕсли вам нужно указать время ожидания, вы можете добавить параметр wait-online-timeout в секцию [wait-online]:
Код: Выделить всё
[wait-online]
interfaces=<interface_name>
wait-online-timeout=<timeout_in_seconds>Обратите внимание, что параметр wait-online может быть указан также в файле /etc/NetworkManager/NetworkManager.conf.
Re: NetworkManager — Управление сетью.
- Виртуализация (самая частая причина)
- Объединение ВМ и контейнеров с хостом: Мост позволяет виртуальным машинам (KVM, VirtualBox) и контейнерам (LXC/LXD, Docker) получить IP-адрес из той же сети, что и хост-машина. Для внешней сети ВМ выглядит как обычное самостоятельное устройство.
- Пример: У вас есть хост с IP `192.168.1.10`. Вы создаете мост `br0`, добавляете в него физический интерфейс `eth0` и виртуальный интерфейс ВМ `vnet0`. ВМ получает от роутера IP `192.168.1.11`. Теперь хост и ВМ могут общаться друг с другом и с интернетом на одном сетевом уровне.
- Создание сложных сетевых конфигураций
- Объединение сегментов сети: Можно объединить несколько физических интерфейсов (например, `eth0` и `wlan0`) в один мост, создав единую точку доступа для проводных и беспроводных клиентов.
- Сетевые фильтры и фаерволы: На мост можно вешать правила `ebtables` или `nftables` (для L2), чтобы фильтровать кадры Ethernet, ARP-запросы и другой низкоуровневый трафик, что полезно для безопасности и анализа.
- Изоляция и сегментация трафика
- Вы можете создать несколько независимых мостов для разных целей. Например, `br-vm` для виртуальных машин, `br-management` для управления оборудованием, `br-guest` для гостевой сети. Это помогает разделить трафик и повысить безопасность.
- Прозрачность для конечных устройств
- Для виртуальных машин и других устройств, подключенных к мосту, он выглядит как обычный физический коммутатор. Им не нужно знать о тонкостях реализации на хосте.
- Гибкость и управляемость программными средствами
- Мосты создаются и управляются стандартными утилитами Linux (`ip`, `brctl`), что позволяет легко автоматизировать процесс с помощью скриптов и инструментов вроде Ansible.
- Снижение производительности (Overhead)
- Весь трафик, проходящий через мост, обрабатывается на программном уровне ядром Linux, а не "железом" сетевой карты. Это создает дополнительную нагрузку на CPU, особенно при высоких скоростях (1 Гбит/с и выше) и большом количестве подключенных устройств.
- Сравнение: Аппаратный коммутатор справляется с этой задачей гораздо эффективнее.
- Усложнение сетевой конфигурации
- Настройка моста требует больше шагов, чем простая настройка сетевого интерфейса. Легко допустить ошибку, которая может привести к потере сетевого соединения с сервером (особенно при удаленной настройке — это опасно!).
- Требуется понимание, как работают сети на канальном уровне (L2).
- Единая точка отказа
- Если по какой-то причине мост "падает" или останавливается его демон (например, `libvirtd`), все подключенные к нему интерфейсы (и ВМ) теряют сетевую связность.
- Проблемы с беспроводными интерфейсами (Wi-Fi)
- Большинство беспроводных драйверов и протоколов (802.11) не поддерживают режим моста в чистом виде из-за особенностей работы Wi-Fi (полудуплексная среда, аутентификация). Для этого обычно используется режим "точки доступа" (AP), что является более сложной и не всегда стабильной конфигурацией.
- Зависимость от хоста
- Если хост-система перезагружается или зависает, вся сеть, построенная на его мостах, перестает работать. В критически важных инфраструктурах это недопустимо.
- Идеально: На серверах виртуализации (KVM, Proxmox VE), для изоляции сетей в контейнерах (LXC), при тестировании сетевых приложений и протоколов.
- Не идеально (или не стоит): Для простого подключения одного компьютера к интернету, в ситуациях, где критична максимальная сетевая производительность с минимальной загрузкой CPU, для объединения беспроводных клиентов стандартными средствами.
Код: Выделить всё
[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