Кто бы что ни говорил, а я люблю 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-адрес, который следует настроить на ноутбуке. Как вариант, можно действовать следующим образом:
- Клонируем соединение, которые обычно используется для проводного подключения (eth0 или в моём случае eno2):
nmcli connection clone eno2 static-connection
- Отключаем автоконнект для eno2 (главное, не забыть потом его вернуть):
nmcli connection modify eno2 connection.autoconnect no
- Настраиваем параметры подключения, полученные от сетевого администратора:
nmcli connection modify static-connection ipv4.method manual
nmcli connection modify static-connection ipv4.addresses 10.6.6.6/8
- Аналогично, можно настроить ipv4.gateway или прописать нужные маршруты через ipv4.routes
- Если соединение настроено с автоподключением, то достаточно воткнуть провод. Иначе:
nmcli connection up static-connection
После завершения всех работ, если соединение больше не нужно, легко от него избавиться:
nmcli connection delete static-connection
Подключаем Wi-Fi
А теперь давайте кратко узнаем, как обнаружить новую Wi-Fi сеть и подключиться к ней.
- Для просмотра видимых Wi-Fi сетей выполняем следующую команду. В столбце SSID увидим название для будущего подключения, а рядом кое-какие параметры, включая даже уровень сигнала ;)
nmcli device wifi
- Подключаемся к сети по её SSID. Пароль можно не указывать в аргументах команды - тогда он будет запрошен в интерактивном режиме:
nmcli device wifi connect Home_Net_5G password 12345678
- Новое подключение с именем <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 и др.