Здравия всем! В этой статье я расскажу как настраивать сеть из консоли с помощью утилиты 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. И теперь у меня есть под рукой мануал, как быстро настроить сеть и не лезть за этим в поисковик.