null

Полезные команды nmcli

Кто бы что ни говорил, а я люблю NetworkManager и его консольный интерфейс nmcli. Даже рутинное подключение к сети (если оно не настроено на автоподключение) мне привычно выполнять через команду:

nmcli c u my-net

nmcli богат на аргументы и позволяет их сокращать, что я и сделал в предыдущей команде. Далее я буду приводить полные варианты команд, во избежание путаницы. Просто знайте, что у них есть сокращенные варианты и экспериментируйте ;)

Полный вариант команды, активирующей соединение, выглядит так:

nmcli connection up my-net

Чтобы его деактивировать:

nmcli connection down my-net

В приведённых командах my-net - это название соединения.

Различные соединения могут существовать для физических интерфейсов ethernet, usb-модемов, bluetooth и Wi-Fi сетей, виртуальных частных сетей и т.п. NetworkManager сам создаёт соединения для интерфейсов ethernet с автоматической настройкой IP и автоподключением. Вставил провод - соединение поднялось.

Как вывести список доступных соединений. Активированные в настоящий момент соединения выводятся вверху списка и помечаются цветом:

nmcli connection

Вывести параметры какого-либо соединения:

nmcli connection show my-net

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

nmcli connection show 77de23a4-e2e4-4635-b839-833571884f9b

Настраиваем соединения

Для изменения параметров есть сразу несколько вариантов, упомяну два из них. Первый - интерактивный. После ввода команды:

nmcli connection edit my-net

открывается интерактивная оболочка со встроенной справкой.

  • print в​​ывести текущие праметры;
  • describe <setting>.<prop> вывести описание интересующего параметра;
  • set <setting>.<prop> <value> изменить значение параметра;
  • verify выполнить проверку на валидность;
  • save сохранить изменения.

Второй вариант изменения параметров - прямо в аргументах команды. Выводим параметры соединения, находим интересующий параметр и изменяем его командой вида:

nmcli connection modify <connection> <setting>.<prop> <value>

Далее, рассмотрим примеры.

Изменить название соединения:

nmcli connection modify my-net connection.id new-awesome-name

Убрать автоподключение. Здесь стоит пояснить, что значение булево, а для них nmcli позволяет указывать как true/false, так и 1/0, так и yes/no.

nmcli connection modify my-net connection.autoconnect no

Добавить DNS-сервера (список указывается через запятую)

nmcli connection modify eno2 ipv4.dns 8.8.8.8,8.8.4.4

Кстати, чтобы их убрать, следует указать пустой параметр:

nmcli connection modify eno2 ipv4.dns ''

Как настроить автоподключение со статическим адресом?

Рассмотрим следующий сценарий. Вы пришли с ноутбуком в серверную, там вас ждёт ethernet с доступом в нужную сеть, но DHCP в сети нет. Сетевой администратор сообщил Вам IP-адрес, который следует настроить на ноутбуке. Как вариант, можно действовать следующим образом:

  1. Клонируем соединение, которые обычно используется для проводного подключения (eth0 или в моём случае eno2):
    
    nmcli connection clone eno2 static-connection
  2. Отключаем автоконнект для eno2 (главное, не забыть потом его вернуть):
    ​​​​​​​
    nmcli connection modify eno2 connection.autoconnect no
  3. Настраиваем параметры подключения, полученные от сетевого администратора:
    
    nmcli connection modify static-connection ipv4.method manual
    ​​​​​​​nmcli connection modify static-connection ipv4.addresses 10.6.6.6/8
  4. Аналогично, можно настроить ipv4.gateway или прописать нужные маршруты через ipv4.routes
  5. Если соединение настроено с автоподключением, то достаточно воткнуть провод. Иначе:
    
    nmcli connection up static-connection

После завершения всех работ, если соединение больше не нужно, легко от него избавиться:

nmcli connection delete static-connection

Подключаем Wi-Fi

А теперь давайте кратко узнаем, как обнаружить новую Wi-Fi сеть и подключиться к ней.

  1. Для просмотра видимых Wi-Fi сетей выполняем следующую команду. В столбце SSID увидим название для будущего подключения, а рядом кое-какие параметры, включая даже уровень сигнала ;)
    
    nmcli device wifi
  2. Подключаемся к сети по её SSID. Пароль можно не указывать в аргументах команды - тогда он будет запрошен в интерактивном режиме:
    
    ​​​​​​​nmcli device wifi connect Home_Net_5G password 12345678
  3. Новое подключение с именем <code>Home_Net_5G</code> можно увидеть в списке соединений:
    ​​​​​​​
    nmcli connection

Импортируем конфиг OpenVPN

Ну и на вкусное рассмотрим, как импортировать конфиг OpenVPN, чтобы управлять им через nmcli:

nmcli connection import type openvpn file path/to/my-work.ovpn

В результате будет создано соединение, по имени совпадающее с именем конфига.

По умолчанию весь траффик будет заворачиваться в него. В случае, если это соединение до рабочей сети, довольно часто требуется не заворачивать весь траффик, а настроить маршруты до нужных сетей, пропуская весь остальной траффик не через openvpn:

nmcli connection modify my-work ipv4.never-default yes

Теперь при активации соединения не будет добавляться маршрут по умолчанию. Остальная конфигурация вообще говоря лежит на openvpn, но переопределить её можно с помощью таких параметров как ipv4.routes, ipv4.route-table, ipv4.ignore-auto-routes и др.

Вперед