Come rendere persistenti le interfacce di tocco dopo il riavvio?


24

Alcune attività richiedono la configurazione di interfacce di tocco + l'assegnazione della proprietà . Quindi lo sto facendo manualmente:

sudo tuntap -u <username>
sudo ifconfig tap0 up
sudo ip a a 192.168.1.1/24 dev tap0

o usando

ip tuntap add dev tap0 mode tap user <username>

Come posso rendere permanente la configurazione delle interfacce di tocco dopo il riavvio senza aggiungere questi comandi a uno script di shell e aggiungerlo all'avvio

Quello che ho in mente è farlo attraverso / etc / network / interfaces come il seguente:

iface tap1 inet static
address 192.168.1.121
netmask 255.255.255.0
pre-up /usr/sbin/tunctl -u ajn -t tap1

Ma per qualche motivo, non funziona.

Qualche idea?

Risposte:


20

Non riesco a capire, per la mia vita, perché questa domanda debba essere votata in negativo. È chiaro, corretto, ha una risposta ben definita. L'ho votato.

Stai usando utility obsolete come tunctl, invece dovresti usare ip . La stanza corretta per / etc / network / interfaces è:

    iface tap1 inet manual 
    pre-up ip tuntap add tap1 mode tap user root
    pre-up ip addr add 192.168.1.121/24 dev tap1
    up ip link set dev tap1 up
    post-up ip route del 192.168.1.0/24 dev tap1 
    post-up ip route add 192.168.1.121/32 dev tap1
    post-down ip link del dev tap1

Il tuo errore è stato nell'usare statico invece che manuale . Il motivo è che, poiché stai provando a fornire all'interfaccia virtuale un indirizzo nella stessa sottorete della tua interfae principale (wlan0 / eth0), quando tenta di aggiungere automaticamente una route locale,

    ip route add 192.168.1.0/24 dev tap1

scopre che esiste già un percorso del genere e si lamenta. Se si utilizza il manuale anziché statico, è possibile eliminare questa route, che è ovviamente inutile.

Inoltre, è necessario aggiungere un percorso

     ip route add 192.168.1.121/32 dev tap1

per informare il kernel che esiste un'eccezione alla route

     ip route add 192.168.1.0/24 dev eth0/wlan0 

È tutto.


Qualcosa non funziona per me qui su Ubuntu 17.10: il mio tun0 non è stato creato - lo stato della rete di servizio dice che l'interfaccia tun0non esiste. Ecco il file delle interfacce se qualcuno si preoccupa di dare un'occhiata: gist.github.com/velis74/ab75a46893eaed8bd08b8c6292b2737a
velis

@velis La tua nuova interfaccia si chiama tap0 , non tun0 , ecco perché non viene trovata. Si noti che le interfacce tun e tap sono fondamentalmente diverse, en.wikipedia.org/wiki/TUN/TAP , quale si desidera creare?
MariusMatutiae,

Sì, si chiama tap0. Questa risposta riguarda la creazione di un dispositivo tap, non di uno tun. Non riesco a vedere come questa possa essere la causa del mio fallimento. Il comando pre-up aggiungi dispositivo viene eseguito perfettamente dalla riga di comando.
Velis,

Si scopre che mi mancava solo una auto tap0strofa. Gist aggiornato di conseguenza.
Velis,

0

Ci sono alcuni altri passaggi che potresti dover fare:

  1. Aggiungi una nuova tabella di routing Modifica / etc / iproute2 / rt_tables per aggiungere una nuova tabella di routing. Chiamalo tabella di routing "rt2" e imposta le sue preferenze su 1:
    55     local
    254     main
    253     default
    0       unspec
    1       rt2
  1. Come spiegato nella risposta precedente, creare un'interfaccia di tocco, ma è necessario configurare le nuove tabelle di routing e impostare le regole di routing. Aggiungi a / etc / network / interfaces:
   #create a tap interface and make it persistent
    iface tap1 inet manual 
    pre-up ip tuntap add tap1 mode tap user root
    pre-up ip addr add 192.168.1.121/24 dev tap1
    up ip link set dev tap1 up
    post-up ip route del 192.168.1.0/24 dev tap1 
    post-up ip route add 192.168.1.121/32 dev tap1
    post-down ip link del dev tap1

    #configure the new routing table so that network 192.168.1.0 can be reached through the tap1 interface
    post-up ip route add 192.168.1.0/24 dev tap1 src 192.168.1.121 table rt2

    #set the default gateway to be 192.168.1.10
    post-up ip route add default via 192.168.1.10 dev tap1 table rt2

    #set rules so that traffic from and to 192.168.1.121 use the rt2 routing table 
    post-up ip rule add from 192.168.1.121/24 table rt2
    post-up ip rule add to 192.168.1.121/24 table rt2
sudo ifup tap1

Per testarlo:

ip route list table rt2
ip rule show
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.