Назад | Перейти на главную страницу

Переименовать сетевой интерфейс при загрузке в зависимости от того, какой трафик он видит

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

Я также использую выразительные названия интерфейсов; вместо того ethX У меня есть такие имена, как intra или mgmt или someprovider, в зависимости от назначения интерфейса. Эти имена упоминаются в правилах брандмауэра и т. Д.

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

В настоящее время скрипт определяет сети следующими способами:

Я ищу способ предпочтительно интегрировать это с ifupdown. Я просмотрел сопоставления, но мне кажется, что с помощью скрипта карты я могу только выбрать логическую конфигурацию для применения к физическому интерфейсу, но не переименовать интерфейс. interfaces(5) Говорит, что Lines beginning with "rename" are used to rename interfaces. It takes one or more arguments in the form of "CUR=NEW", where CUR is the name of an existing interface, and NEW is the new name. This becomes very powerful when combined with pattern matching for the CUR interface.; однако сопоставление с образцом мне тоже не помогает.

Если бы можно было использовать результат сопоставления в rename заявление каким-то образом, это может сработать.

Я также посмотрел на whereami пакет, но это не выглядело многообещающим.

Я бы больше всего хотел, чтобы ifupdown переименовать сетевой интерфейс на основе чего-то if-pre-up сценарий или вывод сценария сопоставления.

Подумав об этом, я пришел к выводу, что могу сделать это с pre-up скрипты, например:

iface intra inet static
    pre-up find-interface intra
    address ...

В find-interface скрипт творит чудеса, чтобы определить, какой ethX (или enX или что-то еще) интерфейс должен быть intra, переименовывает его и ifupdown берет это оттуда.

Я опубликовал свой find-interface сценарий в https://gist.github.com/akorn/7b96e78c7d1b3ca70e35261f9b1a2f2b на случай, если кто-то еще сочтет это полезным.