Рейтинг:2

Как постоянно включать беспорядочный режим на сетевой карте, управляемой NetworkManager?

флаг th

Я пытаюсь соединить две из нескольких сетевых карт, чтобы они действовали как коммутационный концентратор.
Для этого необходимо включить неразборчивый режим на сетевых картах.
Даже если я установлю его на «promisc on» с помощью команды «ip link», настройка будет сброшена при перезагрузке ПК.

Как я могу включить беспорядочный режим на постоянной основе, даже если я перезагружу свой компьютер?

Среда — Ubuntu Desktop 20.04 LTS.
По этой причине конфигурация сети основана на NetworkManager.

Пример минимальной конфигурации показан ниже:

Vagrant.configure("2") сделать |config|
  config.vm.define: мост делать |машина|
    machine.vm.box = "бенто/убунту-20.04"
    machine.vm.network :private_network, auto_config: false, virtualbox__intnet: "intnet_a"
    machine.vm.network :private_network, auto_config: false, virtualbox__intnet: "intnet_b"

    machine.vm.provision "оболочка", встроенный: <<-SHELL
      apt-получить обновление
      apt-get install -y сетевой менеджер
      кошка > /etc/netplan/50-bridge.yaml <<'EOS'
сеть:
  версия: 2
  Ethernet:
    эт1:
      адреса:
        - 0.0.0.0/32
    эт2:
      адреса:
        - 0.0.0.0/32
  мосты:
    бр0:
      интерфейсы:
        - эт1
        - эт2
ЭОС
      echo 'сеть: {версия: 2, рендерер: NetworkManager}' > /etc/netplan/99-NetworkManager.yaml
      применить сетевой план
    РАКУШКА
  конец
конец

Команда «ip link» активирует статус PROMISC сетевой карты, как показано ниже.

$ sudo ip link set dev eth1 promisc on
$ sudo ip link set dev eth2 promisc on
$ IP-адрес
[...]
3: eth1: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
    ссылка/эфир xx:xx:xx:xx:c4:f5 brd ff:ff:ff:ff:ff:ff
4: eth2: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
    ссылка/эфир xx:xx:xx:xx:48:57 brd ff:ff:ff:ff:ff:ff
5: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    ссылка/эфир xx:xx:xx:xx:c4:f5 brd ff:ff:ff:ff:ff:ff
[...]

Однако после перезагрузки ОС статус PROMISC будет сброшен.

$ перезагрузить судо
[...]
$ IP-адрес
[...]
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 состояние UP группа по умолчанию qlen 1000
    ссылка/эфир xx:xx:xx:xx:c4:f5 brd ff:ff:ff:ff:ff:ff
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 состояние UP группа по умолчанию qlen 1000
    ссылка/эфир xx:xx:xx:xx:48:57 brd ff:ff:ff:ff:ff:ff
5: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    ссылка/эфир xx:xx:xx:xx:c4:f5 brd ff:ff:ff:ff:ff:ff
[...]

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

Рейтинг:0
флаг th

Я нашел несколько способов и решил сам.

Способ 1: Используйте NetworkManager-диспетчер

$ sudo bash -c 'cat > /etc/NetworkManager/dispatcher.d/50-promisc' <<'EOS'
#!/usr/bin/bash -e
случай "$2" в
    вверх)
        если [[ "$1" = "eth1" ]] || [[ "$1" = "eth2" ]]; тогда
            ip link set dev $1 promisc on
        фи
        ;;
эсак
ЭОС
$ sudo chmod u=rwx,g=rx,o=rx /etc/NetworkManager/dispatcher.d/50-promisc
$ перезагрузить судо
[...]
$ IP-адрес
[...]
3: eth1: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
    ссылка/эфир xx:xx:xx:xx:c4:f5 brd ff:ff:ff:ff:ff:ff
4: eth2: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
    ссылка/эфир xx:xx:xx:xx:48:57 brd ff:ff:ff:ff:ff:ff
5: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    ссылка/эфир xx:xx:xx:xx:c4:f5 brd ff:ff:ff:ff:ff:ff
[...]

Зарегистрируйте скрипт для NetworkManager-диспетчер это включит промиск, когда целевая сетевая карта (eth1 или eth2) находится в рабочем состоянии.

Способ 2. Зарегистрируйте одноразовую службу в systemd, которая откладывается до запуска модуля network-online.target.

$ sudo bash -c 'cat > /etc/systemd/system/bridge-promisc.service' <<'EOS'
[Ед. изм]
Description=Заставляет интерфейсы работать в неразборчивом режиме при загрузке
After=network-online.target

[Оказание услуг]
Тип = ваншот
ExecStart=/usr/sbin/ip link set dev eth1 promisc on
ExecStart=/usr/sbin/ip link set dev eth2 promisc on
Таймаутстартсек=0
RemainAfterExit=да

[Установить]
WantedBy=default.target
ЭОС
$ sudo systemctl включить мост-promisc
$ перезагрузить судо
[...]
$ IP-адрес
[...]
3: eth1: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
    ссылка/эфир xx:xx:xx:xx:c4:f5 brd ff:ff:ff:ff:ff:ff
4: eth2: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
    ссылка/эфир xx:xx:xx:xx:48:57 brd ff:ff:ff:ff:ff:ff
5: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    ссылка/эфир xx:xx:xx:xx:c4:f5 brd ff:ff:ff:ff:ff:ff
[...]

Я думаю, что этот метод можно применить к шаблонам, которые не используют NetworkManager.

Ответить или комментировать

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