Network Manager настройка сети в командной строке Debian 11

Здравия всем! В этой статье я расскажу как настраивать сеть из консоли с помощью утилиты Network Manager.

Введение

После установки Home Assistant на свеже установленный Debian 11 столкнулся с проблемами с сетью на хостовой машине. Начал разбираться и понял, что Network Manager, который нужен для Home Assistant, не всегда точно настраивается. Решил написать для себя памятку как его настраивать из командной строки Linux.

Установка

После установки командой

apt install network-manager

В системе появляется служба NetworkManager

# service NetworkManager status
● NetworkManager.service - Network Manager
     Loaded: loaded (/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2022-08-19 13:10:14 MSK; 15min ago
       Docs: man:NetworkManager(8)
   Main PID: 8676 (NetworkManager)
      Tasks: 3 (limit: 2340)
     Memory: 4.4M
        CPU: 583ms
     CGroup: /system.slice/NetworkManager.service
             └─8676 /usr/sbin/NetworkManager --no-daemon

авг 19 13:17:26 debian NetworkManager[8676]: <info>  [1660904246.1858] device (ens18): state cha>
авг 19 13:17:26 debian NetworkManager[8676]: <info>  [1660904246.1890] device (ens18): state cha>
авг 19 13:17:26 debian NetworkManager[8676]: <info>  [1660904246.1924] device (ens18): state cha>
авг 19 13:17:26 debian NetworkManager[8676]: <info>  [1660904246.1941] dhcp4 (ens18): activation>
авг 19 13:17:26 debian NetworkManager[8676]: <info>  [1660904246.4858] dhcp4 (ens18): state chan>
авг 19 13:17:26 debian NetworkManager[8676]: <info>  [1660904246.4885] device (ens18): state cha>
авг 19 13:17:26 debian NetworkManager[8676]: <info>  [1660904246.4915] device (ens18): state cha>
авг 19 13:17:26 debian NetworkManager[8676]: <info>  [1660904246.4926] device (ens18): state cha>
авг 19 13:17:26 debian NetworkManager[8676]: <info>  [1660904246.4978] policy: set 'Supervisor e>
авг 19 13:17:26 debian NetworkManager[8676]: <info>  [1660904246.5216] device (ens18): Activatio>

Изучение информации

Работа с сетевыми устройств

Для того, чтобы посмотреть список всех устройств выполним команду

# nmcli device
DEVICE       TYPE      STATE           CONNECTION
ens18        ethernet  подключено      Supervisor ens18
docker0      bridge    без управления  --
hassio       bridge    без управления  --
veth09a87b9  ethernet  без управления  --
veth6e7e60d  ethernet  без управления  --
veth7c2ed85  ethernet  без управления  --
veth82dbf2f  ethernet  без управления  --
veth82f0817  ethernet  без управления  --
veth9e73789  ethernet  без управления  --
lo           loopback  без управления  --

Посмотреть информацию по конкретному устройству команда:

nmcli device show DEVICE

К примеру, у меня это:

# nmcli device show ens18
GENERAL.DEVICE:                         ens18
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         DA:38:AB:49:51:E6
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (подключено)
GENERAL.CONNECTION:                     Supervisor ens18
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/3
WIRED-PROPERTIES.CARRIER:               вкл.
IP4.ADDRESS[1]:                         192.168.1.37/24
IP4.GATEWAY:                            192.168.1.1
IP4.ROUTE[1]:                           dst = 0.0.0.0/0, nh = 192.168.1.1, mt = 100
IP4.ROUTE[2]:                           dst = 192.168.1.0/24, nh = 0.0.0.0, mt = 100
IP4.DNS[1]:                             192.168.1.1

Работа с соединениями

Для получения списка всех соединений команда:

# nmcli connection
NAME                    UUID                                  TYPE      DEVICE
Supervisor ens18        3beb0614-186b-4323-8dcd-80b0b4a70ebb  ethernet  ens18
Проводное соединение 1  187a4f3b-6e09-3b76-946b-5c1dbc8fc016  ethernet  --

Для получения информации по конкретному соединению команда:

nmcli connection show NAME

К примеру, у меня это:

nmcli connection show "Supervisor ens18"
connection.id:                          Supervisor ens18
connection.uuid:                        3beb0614-186b-4323-8dcd-80b0b4a70ebb
connection.stable-id:                   --
connection.type:                        802-3-ethernet
connection.interface-name:              ens18
connection.autoconnect:                 да
...

Настройка

Настройка DNS для существующего соединения

Часто бывает, что Network Manager не переносит текущий DNS сервер, и следовательно, теряется связь с интернетом, компьютер не может получить информацию об IP адресе доменов.

Для того чтобы поменять DNS воспользуемся командой

nmcli connection modify "Supervisor ens18" ipv4.DNS 192.168.1.1

Если нужно прописать более одного DNS сервера, перечислим их через запятую

nmcli connection modify "Supervisor ens18" ipv4.DNS 192.168.1.1,192.168.1.10

Для применения изменений нужно перезапустить сервис

service NetworkManager restart

Настройка статического IP для существующего соединения

Проверим текущий статус соединения. Нас интересует строчка ipv4.method, и ipv4.addresses

# nmcli connection show "Supervisor ens18"
connection.id:                          Supervisor ens18
connection.uuid:                        3beb0614-186b-4323-8dcd-80b0b4a70ebb
...
ipv4.method:                            auto
ipv4.dns:                               192.168.1.3,192.168.1.33
ipv4.dns-search:                        --
ipv4.dns-options:                       --
ipv4.dns-priority:                      100
ipv4.addresses:                         --
ipv4.gateway:                           --
ipv4.routes:                            --
...


Как видно, нам вначале нужно установить ipv4.addresses

 nmcli connection modify "Supervisor ens18" ipv4.address 192.168.1.49/24

и только потом менять метод на ручной:

nmcli connection modify "Supervisor ens18" ipv4.method manual
При выполнение этой команды, пропадет соединение. По этому не применяйте её при удаленном соединении!

Также нам нужно еще установить шлюз по умолчанию

nmcli connection modify "Supervisor ens18" ipv4.gateway 192.168.1.1

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

nmcli connection down "Supervisor ens18"
nmcli connection up "Supervisor ens18"
При выполнение этих команд, пропадет соединение. По этому не применяйте их при удаленном соединении!

Заключение

Network Manager это очень мощная утилита, которая имеет внешнее управление через API. Поэтому оно используется в Home Assistant Supervisor. И теперь у меня есть под рукой мануал, как быстро настроить сеть и не лезть за этим в поисковик.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.