Как мне установить приоритет сетевых подключений в Ubuntu?

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

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

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

8 ответов

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

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

$ route -n

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.42.0.1       0.0.0.0         UG    100    0        0 eth0
0.0.0.0         10.42.0.2       0.0.0.0         UG    600    0        0 wlan0

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

sudo ifmetric wlan0 50

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

$ route -n

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.42.0.2       0.0.0.0         UG    50     0        0 wlan0
0.0.0.0         10.42.0.1       0.0.0.0         UG    100    0        0 eth0

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

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

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

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

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

    $ route -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref     Use Iface
    0.0.0.0         192.168.1.254   255.255.255.255 U     0      0        0 eth0
    192.168.1.0     0.0.0.0         255.255.255.0   U     256    0        0 eth0
    
  2. Приоритизация доступа приложений к сетевым ресурсам часто решается путем "формирования трафика" - я бы использовал веб-поисковик, чтобы посмотреть, сможет ли это сделать Ubuntu или маршрутизатор.


Сноска.

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

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

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

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.16.87.254    0.0.0.0         UG    100    0        0 ens38
0.0.0.0         192.168.151.2   0.0.0.0         UG    101    0        0 ens33
10.16.86.64     0.0.0.0         255.255.255.248 U     100    0        0 ens38
10.16.87.254    0.0.0.0         255.255.255.255 UH    100    0        0 ens38
10.16.88.6      10.16.87.254    255.255.255.255 UGH   100    0        0 ens38
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 ens38
192.168.151.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33

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

# route delete default gateway

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

# route add default gw 10.16.87.254 metric 102 dev ens38                                                              
# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.151.2   0.0.0.0         UG    101    0        0 ens33
0.0.0.0         10.16.87.254    0.0.0.0         UG    102    0        0 ens38
10.16.86.64     0.0.0.0         255.255.255.248 U     100    0        0 ens38
10.16.87.254    0.0.0.0         255.255.255.255 UH    100    0        0 ens38
10.16.88.6      10.16.87.254    255.255.255.255 UGH   100    0        0 ens38
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 ens38
192.168.151.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33

[Обновление] Начиная с Ubuntu 18.04 LTS (сервер), netplan является оболочкой по умолчанию для управления сетью. Конфигурирование Netplan выполняется через файл YAML, по умолчанию /etc/netplan/01-netcfg.yaml (подробнее здесь).

Метрика маршрутизации определяется metric параметр, который ожидает положительное целое число (100 это значение по умолчанию, как правило). Вот пример со справочной страницы:

network:
  version: 2
  renderer: networkd
  ethernets:
    eno1:
      addresses:
      - 10.0.0.10/24
      - 11.0.0.11/24
      nameservers:
        addresses:
          - 8.8.8.8
          - 8.8.4.4
      routes:
      - to: 0.0.0.0/0
        via: 10.0.0.1
        metric: 100
      - to: 0.0.0.0/0
        via: 11.0.0.1
        metric: 100

Маршрут с самым низким metric (длина пути) становится "предпочтительным" шлюзом. (Использование: sudo netplan try включить изменения)

Обратите внимание, что в среде роуминга (несколько подключений, включение и выключение), вы можете установить optional (булево) параметр для true (по умолчанию false):

network:
  version: 2
  ethernets:
    enred:
      dhcp4: yes
      dhcp4-overrides:
        route-metric: 100
    engreen:
      dhcp4: yes
      dhcp4-overrides:
        route-metric: 200
      # this is plugged into a test network that is often
      # down - don't wait for it to come up during boot.
      optional: true

Обратите внимание на немного другой синтаксис для метрики маршрута в случае соединений DHCP.

Вы также можете использовать NetworkManager как средство визуализации, которое, как я полагаю (я еще не проверял), позволит вам просматривать / редактировать эту часть конфигурации также с помощью инструментов с графическим интерфейсом.

renderer (Скалярное)

Используйте данный сетевой бэкэнд для этого определения. В настоящее время поддерживаются networkd а также NetworkManager, Это свойство может быть указано глобально в networks: для типа устройства (например, ethernets:) или для конкретного определения устройства. По умолчанию это networkd,

(Самый последний "большой" пример на странице ссылок показывает такое гибридное использование обоих средств визуализации).

Смотрите также этот вопрос (аскубунту).

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

# Ждите какого-то сетевого соединения. Предпочитаю eth1, поставив его перед eth0.
list ("NET-eth1", "NET-eth0") pnames;

(1) - http://code.google.com/p/badvpn/wiki/NCD

2022 год: Беги

С тех пор, как настройки (сети) были переработаны в GNOME, доступ к некоторым функциям больше невозможен из нового интерфейса настроек. Чтобы использовать старую версию, которая предоставляет больше возможностей, запустите .

Установка приоритета соединения в <code>nm-connection-editor</code>

Кредиты: https://askubuntu.com/a/1061981

Здесь, когда оба подключены, а у основного нет интернета, второе подключение не используется.

Можно использоватьifmetricно должен запускаться автоматически.

Если Wi-Fi не работает, чтобы установить соединение Wi-Fi без поиска Интернета, в Ubuntu: Настройки > Wi-Fi > В разделе «Видимые сети» используйте колесо на соединении > IPv4 > В разделе «Маршруты» установите флажок «Использовать это соединение только для ресурсов в своей сети». Чтобы проверить это правильно:route -nи интерфейс Wi-Fi (Iface, вот wlp3s0) будет иметь на одно правило меньше (Destination 0.0.0.0 не добавлялось).

Другие вопросы по тегам