Puncte:2

Cum se activează permanent Modul Promiscuous pe o NIC gestionată de NetworkManager?

drapel th

Încerc să pun două dintre mai multe NIC-uri pentru a acționa ca un hub de comutare.
Pentru a face acest lucru, trebuie să activați modul promiscuu pe NIC-urile.
Chiar dacă l-am setat la âpromisc onâ cu comanda âip linkâ, setarea va fi resetată când repornesc computerul.

Cum pot activa modul Promiscuous permanent, chiar dacă îmi repornesc computerul?

Mediul este Ubuntu Desktop 20.04 LTS.
Din acest motiv, configurația rețelei se bazează pe NetworkManager.

O mostră de configurație minimă este prezentată mai jos:

Vagrant.configure("2") face |config|
  config.vm.define :bridge do |mașină|
    machine.vm.box = "bento/ubuntu-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”, inline: <<-SHELL
      apt-get update
      apt-get install -y network-manager
      cat > /etc/netplan/50-bridge.yaml <<'EOS'
reţea:
  versiunea: 2
  ethernet:
    eth1:
      adrese:
        - 0.0.0.0/32
    eth2:
      adrese:
        - 0.0.0.0/32
  poduri:
    br0:
      interfete:
        - et1
        - et2
EOS
      echo „network: { version: 2, renderer: NetworkManager }” > /etc/netplan/99-NetworkManager.yaml
      netplan se aplică
    COAJĂ
  Sfârşit
Sfârşit

Comanda „ip link” activează starea PROMISC a NIC, așa cum se arată mai jos.

$ sudo ip link set dev eth1 promisc on
$ sudo ip link set dev eth2 promisc on
$ adresă ip
[...]
3: eth1: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
    link/ether 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
    link/eter 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
    link/ether xx:xx:xx:xx:c4:f5 brd ff:ff:ff:ff:ff:ff
[...]

Cu toate acestea, după repornirea sistemului de operare, starea PROMISC va fi resetată.

$ sudo repornire
[...]
$ adresă ip
[...]
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
    link/ether 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 state UP group default qlen 1000
    link/eter 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
    link/ether xx:xx:xx:xx:c4:f5 brd ff:ff:ff:ff:ff:ff
[...]

În acest exemplu, am folosit Vagrant cu scopul de a arăta un mediu reproductibil.
Vagrant nu este o cerință, ceea ce vreau cu adevărat să folosesc este Ubuntu pe un computer fizic.
Pur și simplu activarea modului promiscuu printr-o rulare de aprovizionare Vagrant nu rezolva aceasta problema.

Puncte:0
drapel th

Am găsit mai multe metode și m-am rezolvat.

Metoda 1: Utilizați NetworkManager-dispatcher

$ sudo bash -c 'cat > /etc/NetworkManager/dispatcher.d/50-promisc' <<'EOS'
#!/usr/bin/bash -e
carcasa „$2” în
    sus)
        dacă [[ "$1" = "eth1" ]] || [[ "$1" = "eth2" ]]; atunci
            ip link set dev $1 promisc activat
        fi
        ;;
esac
EOS
$ sudo chmod u=rwx,g=rx,o=rx /etc/NetworkManager/dispatcher.d/50-promisc
$ sudo repornire
[...]
$ adresă ip
[...]
3: eth1: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
    link/ether 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
    link/eter 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
    link/ether xx:xx:xx:xx:c4:f5 brd ff:ff:ff:ff:ff:ff
[...]

Înregistrați un script pentru NetworkManager-dispecer care va activa promisc atunci când NIC-ul țintă (eth1 sau eth2) este în starea de sus.

Metoda 2: Înregistrați un serviciu one-shot în systemd care este amânat până când pornește unitatea network-online.target

$ sudo bash -c 'cat > /etc/systemd/system/bridge-promisc.service' <<'EOS'
[Unitate]
Description=Face interfețele să ruleze în modul promiscuu la pornire
După=network-online.target

[Serviciu]
Type=onehot
ExecStart=/usr/sbin/ip link set dev eth1 promisc activat
ExecStart=/usr/sbin/ip link set dev eth2 promisc activat
TimeoutStartSec=0
RemainAfterExit=da

[Instalare]
WantedBy=default.target
EOS
$ sudo systemctl enable bridge-promisc
$ sudo repornire
[...]
$ adresă ip
[...]
3: eth1: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
    link/ether 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
    link/eter 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
    link/ether xx:xx:xx:xx:c4:f5 brd ff:ff:ff:ff:ff:ff
[...]

Cred că această metodă poate fi aplicată modelelor care nu folosesc NetworkManager.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.