NetworkManager - популярный инструмент управления сетевыми подключениями в Linux, имеет удобный графический интерфейс как для Gnome, так и для KDE, но бывают ситуации когда окружение рабочего стола не запускается, и нужно поднимать сеть из консоли, или нужно настроить сеть на сервере где не установлено рабочее окружение.
В этой инструкции будет рассмотрена настройка Network Manager в консоли с помощью утилиты nmcli. С настройкой в графическом интерфейсе вы разберетесь без каких-либо инструкций, поэтому была выбрана именно эта тема. Также поговорим о том, как посмотреть информацию о сетевых интерфейсах в системе.
Содержание статьи
Собираем информацию о системе
Чтобы получить информацию обо всех установленных в системе сетевых интерфейсах используйте команду:
ip addr show
Примерный вывод:
Для просмотра статистики переданных и полученных пакетов для интерфейса, например, enp24s0, наберите:
ip -s link show enp24s0
А чтобы посмотреть таблицу маршрутизации:
ip route show match 0/0
Синтаксис и опции nmcli
Утилита nmcli - многофункциональный и гибкий инструмент командной строки для настройки сети с помощью Network Mananger из консоли. Сначала рассмотрим ее синтаксис:
$ nmcli опции объект команда
Чаще всего в nmcli мы будем использовать такие объекты:
- device - управление сетевыми интерфейсами;
- connection - управление соединениями;
- networking - управление сетью в целом;
- general - показывает состояние всех сетевых протоколов и NetworkManager в целом;
- radio - управление сетевыми протоколами, wifi, ethernent и т д.
Команды для каждого объекта разные, а опции нам не будут интересны. Дальше рассмотрим примеры nmcli network manager.
Настройка сети с помощью nmcli
1. Запустить NetworkManager
Первым делом нужно запустить NetworkManager из консоли:
sudo systemctl start NetworkManager
Теперь смотрим состояние интерфейсов с помощью nmcli:
Еще мы можем посмотреть имя хоста:
nmcli general hostname
Получаем состояние интерфейсов
nmcli device status
2. Список подключений
Теперь самое интересное, управление сетью nmcli. Смотрим список доступных подключений:
nmcli connection show
Здесь вы можете видеть одно проводное подключение для интерфейса enp24s0. С помощью следующей команды можно посмотреть информацию о нём:
nmcli connection show "Проводное соединение 2"
3. Управление подключениями
Чтобы подключится к сети с помощью нужного подключения используйте команду up:
nmcli connection up "Проводное соединение 2"
Команды можно сокращать, например:
nmcli conn up "Проводное соединение 2"
А для деактивации подключения используйте команду down:
nmcli conn down "Проводное соединение 2"
4. Создание DHCP соединения
Чтобы создать новое подключение используйте команду add. Например создадим новое подключение с именем dhcp:
nmcli connection add con-name "dhcp" type ethernet ifname enp24s0
Команде надо передать параметр type - тип устройства, в нашем случае ethernet (Проводное соединение), а также ifname - название сетевого интерфейса, в этом примере enp24s0. По умолчанию используется тип подключения DHCP, поэтому больше ничего настраивать не надо и вы можете уже активировать это подключение как описано выше.
5. Создание соединения с статическим адресом
Для статического подключения настроек больше, вам надо передать команде add ip адрес, который будет использоваться в качестве основного в параметре ip4, а также шлюз с помощью параметра gw4:
nmcli connection add con-name "static" ifname enp2s0 autoconnect no type ethernet ip4 192.168.0.210 gw4 192.168.0.1
6. Настройка подключения
Продолжим настройку нашего статического соединения. Обычно оно уже может работать, но вы можете захотеть добавить DNS сервер. Для этого используется команда modify:
nmcli conn modify "static" ipv4.dns 8.8.8.8
И ещё один DNS сервер с помощью оператора +:
nmcli conn modify "static" +ipv4.dns 8.8.4.4
Для добавления дополнительной информации в поле используйте символ +. Например, вот так можно добавить еще один ip адрес:
nmcli conn modify "static" +ipv4.addresses 192.168.0.240/24
Обратите внимание, что IP адрес должен быть из той же подсети, что и ваш шлюз иначе может ничего не работать. Теперь можете активировать подключение:
nmcli connection up static
7. Настройка Wifi
В графическом интерфейсе это делается одной галочкой, здесь одной командой. Смотрим состояние wifi:
nmcli radio wifi
Теперь включаем:
nmcli radio wifi on
Или отключаем:
nmcli radio wifi off
Такой командой можно посмотреть список доступных сетей wifi:
nmcli device wifi list
Команда для подключения к новой сети wifi выглядит не намного сложнее. Например, давайте подключимся к сети TP-Link с паролем 12345678:
nmcli device wifi connect "TP-Link" password 12345678 name "TP-Link Wifi"
Если всё прошло хорошо, то вы получите уже привычное сообщение про создание подключения с именем TP-Link Wifi и это имя в дальнейшем можно использовать для редактирования этого подключения и управления им, как описано выше.
Выводы
Как видите, все очень просто и быстро. Настройка network manager в консоли выполняется в пару команд, достаточно только их запомнить или где-нибудь написать, чтобы вы могли выполнить управление сетью nmcli когда это понадобится.
Здравтствуйте, интересная заметка, а как сохранить введенные настройки?
Настройки должны автоматически сохраняться для редактируемого соединения.
Отлично. Выкинул netctl, внедрил NetworkManager
как настроить as persistent
ip route add 192.168.0.0/16 via 192.168.3.1
помимо роута по умолчанию? ip route add default via 192.168.0.1
В netctl было так
Возьмем за образец настройки пример из набора
[root@localhost ~]# cp /etc/netctl/examples/ethernet-static /etc/netctl/enp3s0
Исправим его в соответствие с нашими нуждами:
Description='A basic static ethernet connection'
Interface=enp3s0
Connection=ethernet
IP=static
Address=('192.168.0.23/24' '192.168.3.23/24')
Routes=('192.168.0.0/16 via 192.168.3.1')
Gateway='192.168.0.1'
DNS=('192.168.0.1')
$ sudo service NetworkManager start
В Убунту этот сервис сейчас - network-manager. Т.е., чтобы включить:
# service network-manager start
Спасибо, очень помогло, кода чинил систему. Не было интернета и не работал apt в консоли.
Network Manager пришлось устанавливать вручную.
Команды:
$ sudo dpkg --configure network-manager
и взятая из статьи команда запуска network-manager
$ sudo service NetworkManager start
решили проблему интернета.
nmcli device wifi list не выдаёт ничего абсолютно, хотя WiFi сети через nmcli connection show видно, весь копаюсь в этом, не могу вай фай настроить никак и уже не пойму в чем дело
КИРИЛЛ нужно включить WiFi -> nmcli radio wifi on
Добрый день!
Ситуация такая как у КИРИЛЛ. команду nmcli radio wifi on выполнял.
Адаптер USB WiFi D-LINK DWA-171.
Здравствуйте!
а как создать GSM соединение?
# mmcli -m 0
-----------------------------
General | dbus path: /org/freedesktop/ModemManager1/Modem/0
| device id: 91c0b946a92aaca130edfbb57cfc7eeddfcb0c76
-----------------------------
Hardware | manufacturer: huawei
| model: EM770W
| firmware revision: 11.126.10.80.00
| supported: gsm-umts
| current: gsm-umts
| equipment id: 357030021538604
Статья хороша. Мне пошла на пользу. Но то что я искал я не нашел в ней, да и в прочем в других статьях. Дело в том что все выше описанное работает при условии если ваша точка доступа не является скрытой. А вот если точка доступа скрыта то при команде: " nmcli device wifi list " - В поле SSID проходит пустота. Даже если мне известна моя сеть ( как пример Asdf ) и пароль ( qwerty ) то по команде: " nmcli device wifi connect "Asdf" password qwerty name "Asdf Wifi" выдаст ошибку как указано далее. Ошибка: не найдена сеть с SSID «Asdf». Если вы знаете как проводить подключение из терминала к скрытой точке доступа то пожалуйста напишите. Мне кажется что нужно проводить подключение по BSSID
Уберите кавычки.
sudo nmcli device wifi connect Keenetic-2295 password 00000000 name "K Wifi"
А что делать, если на шаге nmcli general status видим вот такое?
ia@ubuntu:~$ nmcli general status
STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN
disconnected unknown enabled enabled enabled enabled
$ nmcli c add type wifi con-name ifname wlan0 ssid
$ nmcli c modify wifi-sec.key-mgmt wpa-psk wifi-sec.psk
$ nmcli c up
Источник:
https://ubuntu.com/core/docs/networkmanager/configure-wifi-connections
Привет!
Может кто сталкивался, на fedora перестала работать сеть.
$ systemctl status NetworkManager
● NetworkManager.service - Network Manager
Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2022-12-27 04:21:48 EST; 5min ago
Docs: man:NetworkManager(8)
Main PID: 864 (NetworkManager)
Tasks: 3 (limit: 4611)
Memory: 11.1M
CPU: 74ms
CGroup: /system.slice/NetworkManager.service
└─ 864 /usr/sbin/NetworkManager --no-daemon
$ nmcli general
STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN
disconnected unknown missing enabled missing enabled
Как это полечить можно?
Спасибо большое! Оказалось всё довольно просто. Даже драйверов никаких сторонних для моего старого китайского usb-адаптера к deb-десктопу ставить не пришлось, всё установилось по "plug&play" (в отличие от Windows, на которой пришлось скачивать буквально из дебрей интернета старые драйвера, т.к. "официальный" сайт china-производителя давно почил). Люблю когда "из каропки", без геммороя лишнего. 🙂
самое главное забыл :
nmcli networking on/off
Всё это, конечно, хорошо, но с Network Manager происходят постоянные разрывы соединения проводной сети, сеть на секунду разрывается, а затем соединение снова восстанавливается.
Колупался с этой проблемой несколько лет, поменял три "свитча", однако, проблема оставалась.
Плюнул на всё и удалил Network Manager, а сеть настроил вручную, через конфигурационные файлы. В Debian удалось настроить только проводную сеть, а вот Wi-Fi настроить не удаётся.
Попробовал всё это проделать в Alt Linux K10.3 и в нём удалось всё настроить, сеть стабильно работает и проводная, через etcnet, и Wi-Fi, через Network Manager, более того они работают одновременно и друг другу не мешают.
Пробовал это повторить в других Linux: Debian, Fedora, OpenSUSE, Rosa Fresh, Astra...
Во всех одна и та же проблема с разрывами проводного соединения и более того, без Network Manager настроить сеть почти ни в одной системе не удаётся.
Лет 10 назад нашёл способ настройки сети без Network Manager в CentOS и даже настроил сеть домашнего сервера без использования Network Manager, но из-за одной неприятной особенности CentOS, заменил его на Debian, а это описание где-то затерялось.
Помню, что в описании настройки, взятом с какого-то сайта, первыми строками были:
1. Отключаем Network Manager, "команда"
2. Удаляем Network Manager, "команда"
...............
И всё получилось, сеть стала работать нормально.