Подключаться автоматически с приоритетом linux

Обновлено: 05.07.2024

Если машина Ubuntu 11.04 подключена к WiFi и 3G одновременно, как мне установить приоритет, чтобы приложения (браузер и т.д.) Сначала использовали WiFi? Если это не доступно, он должен использовать 3G.

В принципе, я хотел бы установить порядок, в котором используются сетевые подключения.

Изменить: я ищу более простой подход, который был бы полезен для тех, кто просто удобен и не является экспертом в Ubuntu/Linux.

Я удивлен, что никто не упомянул простейшую команду для этого: ifmetric . Его можно установить с помощью sudo apt-get install ifmetric . Эта команда может быть использована для изменения метрики любого интерфейса. Интерфейс с более низкой метрикой предпочтителен для Интернета.

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

Здесь eth0 имеет более низкую метрику, поэтому она будет предпочтительнее wlan0 . Если вы хотите отдать предпочтение wlan0 , то уменьшите его показатель:

Теперь таблица маршрутизации будет выглядеть так:

Теперь Linux будет использовать wlan0 для Интернета. Изменение будет отражено немедленно.

Установка метрик - это то, как вы меняете приоритеты. Более высокая метрика является более "дорогой" в использовании, поэтому ОС будет использовать интерфейсы с самой низкой метрикой, если ей нужно будет направлять трафик. В случае, если интерфейс с более низкой метрикой отключен, он будет использовать интерфейс с более высокой метрикой, поскольку он является единственным интерфейсом, который можно использовать для маршрутизации трафика в эту конкретную сеть / пункт назначения.

Метрики указаны в файле /etc/network/interfaces, ссылки на документацию.

Используйте любой текстовый редактор, чтобы редактировать файл, идентифицировать сети, просто измените параметр metric и сохраните. Перезагрузка - это самый простой способ сбросить все значения, не вдаваясь в подробности перезапуска сетевых служб.

Приоритизация интерфейсов для общего трафика осуществляется путем манипулирования метриками маршрутизации. Каждый маршрут имеет связанные параметры, такие как количество переходов и пропускная способность. Смотрите параметр "метрика" на странице руководства для команды route .

Приоритизация доступа приложений к сетевым ресурсам часто решается путем "формирования трафика" - я бы использовал веб-поисковик, чтобы посмотреть, сможет ли это сделать Ubuntu или маршрутизатор.

В MS Windows, но не в Linux, команда netstat -nr выводит ту же информацию, что и route print . Включая метрики маршрутизации.

Используйте все возможности инструмента управления сетевыми подключениями NetworkManager в командной строке Linux c помощью утилиты nmcli.

Утилита nmcli напрямую обращается к API для доступа к функциям NetworkManager.

Она появилась в 2010 году и для многих стала альтернативным способом настройки сетевых интерфейсов и соединений. Хотя кто-то до сих пор использует ifconfig. Так как nmcli — это инструмент интерфейса командной строки (CLI), предназначенный для использования в окнах терминалов и скриптах, он идеально подходит для системных администраторов, работающих без GUI.

Синтаксис команд nmcli

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

  • options — это параметры, которые определяют тонкости работы nmcli,
  • section (секция) — определяет, какими возможностями утилиты пользоваться,
  • action (действие) — позволяет указать, что, собственно, нужно сделать.

Простые примеры

Перед началом работы убедитесь, что NetworkManager запущен и nmcli может общаться с ним:


Часто работу начинают с просмотра всех профилей сетевых подключений:


Это команда использует действие show для секции Connection.

На тестовой машине крутится Ubuntu 20.04. В данном случае мы нашли три проводных подключения: enp0s3, enp0s8, and enp0s9.

Управление подключениями

Важно понимать, что в nmcli под термином Connection мы подразумеваем сущность, которая содержит всю информацию о соединении. Другими словами, это конфигурация сети. Connection инкапсулирует всю информацию, связанную с соединениями, включая канальный уровень и информацию об IP-адресации. Это уровень 2 и уровень 3 в сетевой модели OSI.

Когда вы настраиваете сеть в Linux, вы обычно настраиваете соединения, которые в конечном итоге будут привязаны к сетевым устройствам, которые в свою очередь являются сетевыми интерфейсами, установленными на компьютере. Когда устройство использует соединение, оно считается активным или поднятым. Если соединение не используется, то оно неактивно или сброшено.

Добавление сетевых соединений

Утилита nmcli позволяет быстро добавлять и сразу же настраивать соединения. Например, чтобы добавить Wired connection 2 (с enp0s8), нужно от имени суперпользователя запустить следующую команду:


В опции type мы указываем, что это будет Ethernet-соединение, а в опции ifname (interface name) указываем сетевой интерфейс, который хотим использовать.

Вот что будет после запуска команды:


Создано новое соединение, ethernet-enp0s8. Ему был назначен UUID, тип подключения — Ethernet. Поднимем его с помощью команды up:


Ещё раз проверяем список активных соединений:


Добавлено новое соединение ethernet-enp0s8, оно активно и использует сетевой интерфейс enp0s8.

Настройка подключений

Утилита nmcli позволяет легко менять параметры уже существующих подключений. Например, вам нужно сменить динамический (DHCP) на статический IP-адрес.

Пусть нам нужно установить IP-адрес равным 192.168.4.26. Для этого используем две команды. Первая непосредственно установит IP-адрес, а вторая переключит метод установки IP-адреса на значение «вручную» (manual):


Не забудьте также задать маску подсети. Для нашего тестового подключения это 255.255.255.0, или с /24 для бесклассовой маршрутизации (CIDR).

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


Если вам наоборот нужно установить DHCP, вместо manual используйте auto:

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

Для этого мы используем секцию Device.

Проверка статуса устройств

Запрос информации об устройстве

Для этого используем действие show из секции Device (нужно обязательно указать имя устройства). Утилита показывает достаточно много информации, часто на нескольких страницах.
Давайте посмотрим на интерфейс enp0s8, который использует наше новое соединение. Убедимся, что оно использует ровно тот IP-адрес, который мы установили ранее:


Информации достаточно много. Выделим главное:

  • Имя сетевого интерфейса: enp0s8.
  • Тип соединения: проводное Ethernet-соединение.
  • Мы видим MAC-адрес устройства.
  • Указан Maximum transmission unit (MTU) — максимальный размер полезного блока данных одного пакета, который может быть передан протоколом без фрагментации.
  • Устройство в данный момент подключено.
  • Имя соединения, которое использует устройство: ethernet-enp0s8.
  • Устройство использует тот IP-адрес, который мы установили ранее: 192.168.4.26/24.

Интерактивный редактор nmcli

У nmcli также имеется простенький интерактивный редактор, в котором кому-то работать может быть комфортнее. Чтобы запустить его, например, для соединения ethernet-enp0s8, используйте действие edit:


У него также есть небольшая справка, которая, правда, уступает по размеру консольной версии:


Если вы введёте команду print и нажмёте Enter, nmcli отобразит все свойства соединения:


Например, чтобы задать для подключения свойство DHCP, введите goto ipv4 и нажмите Enter:


Затем пропишите set method auto и нажмите Enter:


Если вы хотите очистить статический IP-адрес, нажмите Enter. В противном случае введите no и нажмите Enter. Вы можете сохранить его, если думаете, что он понадобится вам в будущем. Но даже с сохраненным статическим IP-адресом будет использован DHCP, если method установлен в значение auto.

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


Введите quit, чтобы выйти из Интерактивного редактора nmcli. Если передумали выходить — используйте команду back.

И это далеко не всё

Откройте Интерактивный редактор nmcli и посмотрите, сколько существует настроек и сколько свойств имеет каждая настройка. Интерактивный редактор — отличный инструмент, но, если вы хотите использовать nmcli в однострочниках или скриптах, вам понадобится обычная версия для командной строки.

Теперь, когда у вас есть основы, ознакомьтесь со справочной страницей nmcli, чтобы узнать, чем ещё она может вам помочь.

На правах рекламы

Эпичные серверы — это виртуальные серверы на Windows или Linux с мощными процессорами семейства AMD EPYC и очень быстрыми NVMe дисками Intel. Спешите заказать!

Если компьютер Ubuntu 11.04 подключен одновременно к WiFi и 3G, как установить приоритет, чтобы приложения (браузер и т. д.) сначала использовали WiFi? Если это не доступно, оно должно использовать 3G.

В принципе, я хотел бы установить порядок, в котором используются сетевые подключения.

Изменить: я ищу более простой подход, который был бы полезен для тех, кто просто удобен, а не экспертов в Ubuntu /Linux.

Я удивлен, что никто не упомянул простейшую команду для этого: ifmetric . Его можно установить с помощью sudo apt-get install ifmetric . Эта команда может использоваться для изменения метрики любого интерфейса. интерфейс с более низкой метрикой предпочтительнее для Интернета.

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

Здесь eth0 имеет более низкую метрику, поэтому будет предпочтительнее wlan0 . Если вы хотите предпочесть wlan0 , затем опустите его метрику:

Теперь таблица маршрутизации будет выглядеть так:

Теперь Linux будет использовать wlan0 для Интернета. Это изменение будет немедленно отражено.

Настройка показателей - это то, как вы меняете приоритеты. Более высокая метрика более «дорогая» для использования, поэтому ОС будет использовать интерфейсы с самой низкой метрикой, если это необходимо для маршрутизации трафика. В случае отключения нижнего метрического интерфейса он будет использовать более высокий метрический интерфейс, поскольку он является единственным интерфейсом, который можно использовать для маршрутизации трафика по этой конкретной сети /месту назначения.

Показатели указаны в файле /etc /network /interfaces , ссылка указывает на документацию.

Используйте любой текстовый редактор для редактирования файла, определения сетей и просто измените параметр metric и сохраните. Перезагрузка - это самый простой способ сбросить все значения, не вникая в детали, связанные с перезагрузкой сетевых сервисов.

Приоритезация интерфейсов для общего трафика выполняется путем управления метриками маршрутизации. Каждый маршрут имеет связанные параметры, такие как подсчет ходов и пропускная способность. См. Параметр «метрика» на man-странице для команды route .

Приоритезация доступа приложений к сетевым ресурсам часто обращается на «формирование трафика» - я бы использовал механизм веб-поиска, чтобы убедиться, что Ubuntu или маршрутизатор могут это сделать.

В MS Windows, но не в Linux, команда netstat -nr выводит ту же информацию, что и route print . Включая метрики маршрутизации.

Я не пробовал, но для этой цели можно использовать NCD (Daemon Network Configuration Daemon - 1). Сайт заявляет, что упрощает настройку сети. Синтаксис кажется простым.

Это все из-за показателей маршрута. Вы хотите удалить маршрут по умолчанию с минимальной метрикой, а затем восстановить старый маршрут с более высоким показателем. Следуйте приведенным ниже командам.

Допустим, ваша таблица маршрутизации выглядит так:

Теперь удалите шлюз по умолчанию

Теперь восстановите старый шлюз по умолчанию (обратите внимание, что метрика в этом случае выше 102, чем текущий маршрут 101 по умолчанию)

Вы также можете написать скрипт bash, используя утилиту pacmd звуковой системы PulseAudio.

Я нашел для вас пример скрипта: pulsevol.sh

WiFi Radar - это утилита Python/PyGTK2 для управления профилями WiFi. Она . позволяет сканировать доступные сети и создавать профили для предпочитаемые вами сети. Во время загрузки, запуск WiFi Radar будет автоматически сканирует доступную предпочитаемую сеть и подключается к это. Вы можете перетащить предпочитаемые вами сети, чтобы организовать Приоритет профиля. 1

Установите WiFi радар, просто нажмите Ctrl + Alt + T на клавиатуре, чтобы открыть терминал. Когда он откроется, выполните команду ниже.

WiFi Radar имеет новую версию 2.0, которую можно скачать с их сайта. Или загрузить его с here

1 Source: Ubuntu Geek

Hatramin'ny nanamboarana ireo fikirana (tambajotra) tao amin'ny GNOME, ny fampiasa sasany tsy afaka atao ampidirina amin'ny interface interface vaovao. Raha hampiasa ilay taloha, izay mampiseho safidy maro kokoa, dia mihazakazaha nm-connection-editor .

Setting connection priority in <code>nm-connection-editor</code>

По-видимому, в 2014 году команда NetworkManager представила такую ​​возможность - определять приоритеты для разных сетей. Теперь существует connection.autoconnect-priority .

Эта статья предоставляет много информации о том, как взаимодействовать с NetworkManager через nmcli .

Например, с помощью

вы можете перечислить известные сети и увидеть, что их приоритет по умолчанию равен 0. Теперь я запустил

, чтобы дать моему домашнему Wi-Fi более высокий приоритет. У меня есть те же рабочие точки Wi-Fi, доступные дома, но мне нужно подключиться к HOME-WIFI, когда я дома. Эта команда сильно переписана / etc / NetworkManager / system-connections / HOME-WIFI , которая добавила autoconnect-priority = 10 в раздел [connection] - время покажет если работает как надо.

Краткий ответ: «Еще нет». По состоянию на середину 2018 года в Ubuntu нет ничего проще, чем Microsoft Windows для установки приоритета WiFi. Однако есть способы добиться желаемого.

TL; DR? Резюме

Для командной строки используйте nmcli . Для графического интерфейса пользователя Plasma-nm .

Доступные альтернативы

Вот доступные в настоящее время способы установки приоритета WiFi, а также краткое описание того, почему они не совсем отвечают на исходный вопрос.

Инструменты командной строки (nmcli)

Хотя это решение, вероятно, самый простой способ сделать это, и оно действительно работает с NetworkManager, nmcli не позволяет перетаскивать мышью в стиле Microsoft Windows. -бросьте переупорядочивание. Фактически, nmcli (как следует из названия) представляет собой «интерфейс командной строки» для NetworkManager, что означает, что вам нужно будет вводить команды в терминале, что может оттолкнуть некоторых людей. Подробнее о том, как его использовать, я расскажу ниже.

Plasma-nm (kde5-nm-connection-editor)

Этот инструмент не позволяет переупорядочивать перетаскивание, но он работает с NetworkManager. Несмотря на название «KDE», он работает с любым окружением рабочего стола (я тестировал его с GNOME). Он представляет собой графический интерфейс, который позволяет редактировать "приоритет автоподключения" сети. Я расскажу, как его использовать ниже.

Wifi Radar

Этот инструмент действительно позволяет перемещать приоритеты сети вверх и вниз по запросу. Однако на самом деле он не интегрирован с Network Manager; на самом деле, я считаю ошибкой запускать обе программы одновременно. Кроме того, несмотря на наличие графического интерфейса, пользоваться им не так просто, как хотелось бы. Еще одна причина не использовать Wifi Radar заключается в том, что это скрипт Python, который должен запускаться от имени пользователя root, что представляет потенциальную угрозу безопасности. Кроме того, согласно странице руководства, WiFi Radar потребляет очень много энергии и, вероятно, имеет много ошибок.

Сетевая панель управления GNOME (даже не запущенная)

Я упоминаю об этом больше для полноты, так как это то, что люди ожидают от работы,но это не так. GNOME, текущая среда рабочего стола Ubuntu по умолчанию, поставляется с сетевой панелью управления, которая вообще не может отображать или редактировать приоритеты автоматического подключения. (Между прочим, nmcli и Plasma-nm работают нормально под GNOME.)

nm-connection-editor: старая панель управления сетью GNOME

GNOME раньше имела возможность устанавливать приоритеты подключения, пусть и неуклюжим способом, а не перетаскиванием. Старая панель управления еще включена в GNOME, но недоступна при нажатии. Вместо этого запустите команду nm-connection-editor , затем выберите сеть Wi-Fi, нажмите «Изменить», перейдите на вкладку «Общие» и нажмите кнопки - / + рядом с «приоритетом подключения для автоматической активации».

Emacs / vi

Если вы заядлый компьютерщик, бормочите код во сне, все, что вам нужно сделать, это добавить строку «autoconnect-priority: 10» в файл / etc / NetworkManager / system -connections / foo . См. Nm-settings (5).

Полное объяснение с примерами

Оба nmcli и kde5-nm-connection-editor могут редактировать индивидуальные приоритеты автоподключения сети. Только nmcli может показать вам список всех текущих установленных приоритетов. Оба предполагают, что вы знаете, что более высокие числа представляют более высокий приоритет и что ноль является значением по умолчанию. Отрицательные числа разрешены и работают, чтобы пометить сеть как «последнее средство», если больше ничего не доступно (см. man nm-settings и выполните поиск «autoconnect-priority».)

Изменения nmcli и Плазма-нм make постоянно хранятся в NetworkManager в /etc/NetworkManager/system-connections/.

Как использовать nmcli

Это мое предпочтительное решение, и оно уже поставляется с Ubuntu. Если вы знакомы с командной строкой или если у вас от природы лингвистический мозг, вам может показаться, что это решение проще, чем использование мыши. С другой стороны, если вы хотите сначала попробовать графический интерфейс, переходите к следующему разделу, посвященному плазменному нм KDE. Для всех приведенных ниже примеров вам нужно открыть Терминал, чтобы вводить команды.

Список текущих приоритетов

Совет: если у вас очень длинный список, вы можете отсортировать их по приоритету:

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

Обратите внимание, что Вы можете использовать любой номер для приоритета. Большее число перемещает сеть в верхнюю часть списка.

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

Отрицательные значения приоритета ниже, чем значение по умолчанию, равное 0, что означает, что они будут проверяться последними, если не будет обнаружена никакая другая известная сеть WiFi. Обратите внимание, что из-за ошибки в некоторых версиях nmcli вы можете увидеть отрицательные числа, перечисленные как огромные положительные числа, например 4294967286. Не беспокойтесь об этом, так как он все равно будет работать нормально.

Как использовать плазменный нм

Plasma-нм, клиент NetworkManager KDE, позволяет изменять приоритет сети с помощью нескольких щелчков мышью в графическом интерфейсе. Вы не можете перетаскивать, вместо этого вы должны указать число. Как и в случае nmcli , более высокие числа имеют более высокий приоритет. К сожалению, вы не можете увидеть список других приоритетов, которые вы установили в прошлом, поэтому вам, возможно, придется угадывать их число. Лично я просто использую «10» для предпочтительных сетей и «-10» для сетей «в крайнем случае», и я не делаю различий между ними, кроме этого.

Вам не нужно устанавливать все KDE только для того, чтобы получить плазменный нм. . (На моей машине, работающей под управлением GNOME, для полного пакета KDE потребовалось бы загрузить более 600 МБ; в отличие от плазма-нм было всего 8 МБ). Я установил Plasma-nm из командной строки следующим образом:

и запустил его, набрав это:

(Ну, технически я не набирал все это. Я использовал TAB для автозаполнения ввода за меня).

Если вы не используете KDE, при первом запуске Plasma-nm вас попросят создать «кошелек» для хранения учетных данных. Я просто нажимаю «Отмена» на вопрос, и у меня все сработало.

Затем он покажет вам список подключений. Дважды щелкните соединение, которое нужно отредактировать. Это вызовет панель «Редактор подключений». Выберите вкладку «Общая конфигурация». Внизу вы увидите поле с надписью «Приоритет». Измените его с 0 на 10 (предпочтительно) или -10 (в крайнем случае). Нажмите «ОК», чтобы сохранить изменения.

Connection Editor panel of plasma-nm

Поскольку изменения постоянно хранятся в NetworkManager, после того, как вы закончите настройку приоритетов, вам не нужно устанавливать плазменный нм, если вы этого не хотите. ( sudo apt remove Plasma-nm )

Читайте также: