- приоритет сетевых подключений
- Как установить приоритет сетевых подключений в Ubuntu?
- 5 ответов
- Как мне установить приоритет сетевых подключений в Ubuntu?
- 5 ответов 5
- Как мне установить приоритет сетевых подключений в Ubuntu?
- Автоконфигурация сетевых интерфейсов в Debian GNU/Linux
- Автоподнятие интерфейса
- Автоконфигурация сети
- Пара штрихов
приоритет сетевых подключений
Хост имеет два подключения — eth0 и wlan0.
Шлюз на основании source mac принимает решение о дальнейшей судьбе пакета.
Если активно оба подключения, то пакеты ходят от имени eth0 и только если я отключаю eth0, пакеты начинают ходить от имени wlan0, можно-ли как-то сделать наоборот, чтоб если подключены оба интерфейса, то приоритет был в сторону wlan0 и пакеты ходили от него? пытался с помощью ip route менять метрики, но это не помогло.
И еще сразу вопросец — после ковыряния ip route, удалил маршруты proto kernel scope link (как я понимаю — это directly connected networks, т.е. сети подключенные к хосту), и теперь не знаю как их восстановить. Добавляю обычные ip route add 192.168.0.0/24 dev eth0 и dev wlan0 но добавляются они как обычный статик. Подскажите, как вернуть маршруту тип — proto kernel scope link.
но добавляются они как обычный статик.
он при этом работает?
ну да, поменяй маршруты местами. Я так понимаю у тебя пакеты идут первым подходящим маршрутом.
Первая же строчка в гугле про link local:
ip route add table local broadcast 10.10.20.255 dev eth0 proto kernel scope link src 10.10.20.67
(подставь свои данные).
Что значит «пакеты от имени»? Там есть адреса (ip, mac), а имён нет.
Покажите таблицу маршрутизации целиком (или все таблицы и «ip rule show»). И после ковыряния с маршрутами неплохо чистить их кеш «ip route flush cache».
Вроде, ядро не убирает машруты в зависимости от состояния линка на Ethernet карточке. У вас там работает ifplugd?
Источник
Как установить приоритет сетевых подключений в Ubuntu?
Если компьютер Ubuntu 11.04 подключен одновременно к WiFi и 3G, как установить приоритет, чтобы приложения (браузер и т. д.) сначала использовали WiFi? Если это не доступно, оно должно использовать 3G.
В принципе, я хотел бы установить порядок, в котором используются сетевые подключения.
Изменить: я ищу более простой подход, который был бы полезен для тех, кто просто удобен, а не экспертов в Ubuntu /Linux.
5 ответов
Я удивлен, что никто не упомянул простейшую команду для этого: 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). Сайт заявляет, что упрощает настройку сети. Синтаксис кажется простым.
# Подождите некоторое сетевое подключение. Предпочитаю eth1, поставив его перед eth0.
список («NET-eth1», «NET-eth0») pnames;
Это все из-за показателей маршрута. Вы хотите удалить маршрут по умолчанию с минимальной метрикой, а затем восстановить старый маршрут с более высоким показателем. Следуйте приведенным ниже командам.
Допустим, ваша таблица маршрутизации выглядит так:
Теперь удалите шлюз по умолчанию
Теперь восстановите старый шлюз по умолчанию (обратите внимание, что метрика в этом случае выше 102, чем текущий маршрут 101 по умолчанию)
Источник
Как мне установить приоритет сетевых подключений в Ubuntu?
Если машина Ubuntu 11.04 подключена к WiFi и 3G одновременно, как мне установить приоритет, чтобы приложения (браузер и т.д.) Сначала использовали WiFi? Если это не доступно, он должен использовать 3G.
В принципе, я хотел бы установить порядок, в котором используются сетевые подключения.
Изменить: я ищу более простой подход, который был бы полезен для тех, кто просто удобен и не является экспертом в Ubuntu/Linux.
5 ответов 5
Я удивлен, что никто не упомянул простейшую команду для этого: 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 . Включая метрики маршрутизации.
Источник
Как мне установить приоритет сетевых подключений в Ubuntu?
Если компьютер с 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 . Включая метрики маршрутизации.
Я на самом деле не пробовал, но NCD (Network Configuration Daemon — 1) можно использовать для этой цели. Сайт утверждает, что облегчает настройку сети. Синтаксис кажется простым.
# Ждите какого-то сетевого соединения. Предпочитаю eth1, поставив его перед eth0.
list («NET-eth1», «NET-eth0») pnames;
Это все из-за метрик маршрута. Вы хотите удалить маршрут по умолчанию с самой низкой метрикой, а затем восстановить старый маршрут с более высокой метрикой. Пожалуйста, следуйте командам ниже.
Допустим, ваша таблица маршрутизации выглядит так:
Теперь удалите шлюз по умолчанию
Теперь восстановите старый шлюз по умолчанию (обратите внимание, что показатель в этом случае выше 102, чем текущий маршрут по умолчанию 101)
[Обновление] Начиная с Ubuntu 18.04 LTS (сервер), netplan это оболочка по умолчанию для управления сетью. Настройка Netplan по умолчанию выполняется через файл YAML /etc/netplan/01-netcfg.yaml (более подробно здесь ).
Метрика маршрутизации определяется параметром » metric «, который ожидает положительное целое число ( 100 обычно это значение по умолчанию). Вот пример со справочной страницы:
Маршрут с наименьшим metric (длина пути) становится «предпочтительным» шлюзом. (Используйте: sudo netplan try для включения изменений)
Обратите внимание, что в среде роуминга (несколько подключений, включение и выключение) может потребоваться установить для параметра optional (логическое значение) значение true (по умолчанию — false):
Обратите внимание на немного другой синтаксис для метрики маршрута в случае соединений DHCP.
Вы также можете использовать NetworkManager в качестве средства визуализации, которое, как я полагаю (я еще не проверял), позволит вам просматривать / редактировать эту часть конфигурации также с помощью инструментов GUI.
Используйте данный сетевой бэкэнд для этого определения. В настоящее время поддерживаются networkd и NetworkManager . Это свойство может быть указано глобально networks: , для типа устройства (например, ethernets: ) или для конкретного определения устройства. По умолчанию это networkd .
(Самый последний «большой» пример на странице ссылок показывает такое гибридное использование обоих средств визуализации).
Источник
Автоконфигурация сетевых интерфейсов в Debian GNU/Linux
Автоподнятие интерфейса
Автоподнятие интерфейса — вещь достаточно удобная, так как избавляет от необходимости каждый раз вручную поднимать и опускать интерфейс (хотя я знаю людей, которым больше по душе именно ручное поднятие интерфейсов). В большинстве случаев для этих целей можно использовать замечательную программу ifplugd.
Настройка ifplugd не представляет особой сложности сама по себе, но как минимум в Debian есть возможность опции указать в файле /etc/default/ifplugd . Стоит обратить внимание на опцию -d — время между определением отключения среды передачи данных (кабеля) и деконфигурацией интерфейса, возможно, имеет смысл его увеличить, так как весьма неприятно, когда из-за случайно выдернутого кабеля разрываются соединения. Опцию -u же, напротив, можно установить в небольшое значение — поднять интерфейс при появлении кабеля практически никогда не вредно.
Теоретически, ifplugd умеет работать и с отключаемыми адаптерами (параметр HOTPLUG_INTERFACES в конфигурационном файле), на практике же мне не удалось заставить его работать, потому это было сделано через udev. Всего у меня использовалось три Wi-Fi-адаптера, один из них подключался как PC Card (PCMCIA), другой — через USB, а позже появился встроенный, подключаемый через MiniPCI. Соответственно, в /etc/udev/rules.d/80-LOCAL-wlan-start.rules постепенно дописывались правила:
В этом файле первая после комментария строка отрабатывает при подключении внешнего адаптера. Остальные же строки отрабатывают при получении события rfkill, которое означает изменение состояния переключателя встроенного Wi-Fi. Значения параметров здесь указаны для драйвера b43, у других драйверов они могут отличаться. К сожалению, так и не удалось придумать, как не указывать при этом имя интерфейса вручную.
Содержимое файла /etc/network/wlan-up :
Установка переменной PATH необходима, так как при вызове скрипта из udev эта переменная не установлена, потому многие вещи начинают работать совершенно не так, как хотелось бы.
Файл /etc/network/wlan-up изначально представлял собой достаточно сложный bash-скрипт, производивший поиск сетей, а также предпринимавший попытки входа в них, но был значительно упрощён после того, как я случайно наткнулся на пакет guessnet, о котором речь пойдёт ниже.
Автоконфигурация сети
После того, как интерфейс, собственно, поднят, возникают две проблемы. Первая заключается в том, чтобы в случае Wi-Fi определить, какая из знакомых нам сетей доступна. Вторая заключается в том, чтобы непосредственно эту сеть настроить, если по какой-либо причине настройка по протоколу DHCP невозможна.
В Debian есть замечательнейший пакет guessnet, который позволяет достаточно легко решить обе проблемы, не прибегая к километровым колдунствам на bash, grep и sed, которыми мне пришлось воспользоваться до того, как я его нашёл.
guessnet пользуется такой возможностью механизма настройки сети в Debian /etc/network/interfaces , как логические интерфейсы и ключевое слово mapping . Логические интерфейсы, как подсказывает их название, представляют собой ни что иное, как профили настроек сети, которые можно применить при поднятии того или иного интерфейса примерно так: ifup eth0=home . Ключевое слово mapping представляет возможность написать скрипт, который осуществляет сопоставление физического интерфейса логическому.
Всё, что необходимо, чтобы подключить guessnet в /etc/network/interfaces — добавить секцию (stanza) mapping для соответствующего интерфейса:
Ключевое слово map приобретает новый смысл: оно используется для передачи параметров в guessnet (про оригинальный смысл можно прочитать на странице interfaces (5) или в документации на ifupdown). Но об этом позже.
Сами профили определяются в точности так же, как и любые другие интерфейсы, с одной лишь только разницей: имя логического интерфейса не совпадает с именем физического (хотя может содержать его как подстроку в себе):
Как видно, в настройках каждого из приведённых логических интерфейсов присутствует ключевое слово test . Очень гибкая архитектура программы ifupdown позволяет сторонним программам (таким, как guessnet) перехватить их обработку либо просто игнорировать их (хотя конкретно guessnet работает иначе — он просто разбирает файл заново). Слово test позволяет задать условие, по которому будет выбрана та или иная конфигурация.
Логический интерфейс no-link рекомендуется создавать специально для того, чтобы guessnet не пытался запускать другие тесты при отсутствии кабеля.
Конфигурация dhcp принимает все настройки по DHCP, не заменяя ничего. Её бывает полезно установить как конфигурацию по умолчанию — большинство сетей всё же имеют хоть какой-нибудь DHCP сервер, слушая указания которого можно хотя бы получить базовый набор настроек.
Конфигурация eth-lab используется в сети с DHCP-сервером, который игнорирует запросы от незнакомых ему клиентов. Потому делается arping шлюза в данной сети — такой запрос отработает только в случае, если оба узла находятся в одном физическом сегменте сети.
Наконец, конфигурация eth-home одновременно использует настройки от DHCP-сервера, но дополнительно поднимает IPv6-туннель, а также удаляет IPv4-шлюз по умолчанию, фактически превращая машину в IPv6-only узел. Ещё одна особенность: для того, чтобы получить доступ к «другому концу» IPv6-туннеля, используется ADSL-соединение, которое любезно предоставляет модем Zyxel серии P-660. У модемов этой марки есть одна интересная прихоть: они игнорируют анонимные ARP-запросы (а именно такие рассылает по умолчанию guessnet). Чтобы избежать этого, в явном виде прописан адрес, который записывается в поле «источник» пакета. Кроме того, здесь в явной форме указан MAC-адрес модема.
Кроме этого, как я уже упоминал, guessnet умеет обнаруживать Wi-Fi-сети. Для этого ключевое слово test поддерживает опцию wireless :
Необходимо учесть, что достаточно часто guessnet не может корректно определить «наличие кабеля» для Wi-Fi (оно и понятно), из-за чего в mapping для Wi-Fi-интерфейса нужно добавлять строку map !no-link .
Более подробно с возможностями guessnet можно ознакомиться на странице guessnet(8) . Также к пакету прилагается неплохая документация с примерами использования. В принципе, ничто не мешает использовать guessnet и в других дистрибутивах — существует режим работы, «отвязанный» от специфичного для Debian пакета ifupdown.
Пара штрихов
Одна из сетей, в которых мне довольно часто приходится бывать, имеет DHCP-сервер, настроенный так, что запросы на обновление адреса отправляются два раза в минуту. Вместе с тем, через DHCP раздаются не подходящие мне настройки DNS и раз в полминуты перезаписывают мой /etc/resolv.conf . Решением такой проблемы может быть следующий скрипт (для dhclient3):
Поместить его нужно в /etc/dhcp3/dhclient-enter-hooks.d под любым именем.
Конечно, такое решение является довольно грубым «хаком», так что возможно, установка пакета resolvconf и «подкручивание» приоритетов интерфейсов будут более предпочтительными.
Кроме того, рекомендуется поставить пакет ifupdown-extra, в нём есть несколько полезных дополнений к стандартным возможностям ifupdown.
Вот, пожалуй, и всё, что хотелось рассказать. Спасибо за внимание.
Источник