web-dev-qa-db-fra.com

Comment rendre les interfaces tap persistantes après le redémarrage?

Certaines tâches nécessitent la configuration d’interfaces tactiles + attribution de propriété . Donc, je le fais manuellement:

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

ou en utilisant

ip tuntap add dev tap0 mode tap user <username>

Comment rendre la configuration des interfaces tap permanente après les redémarrages sans ajouter ces commandes à un script shell et les ajouter au démarrage

Ce que j'ai à l’esprit, c’est de le faire /etc/network/interfaces comme suit:

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

Mais pour une raison quelconque, cela ne fonctionne pas.

Des idées?

22
AJN

Pour ma vie, je ne vois pas pourquoi cette question devrait être votée à la baisse. C'est clair, correct, il a une réponse bien définie. Je l'ai voté.

Vous utilisez des utilitaires obsolètes comme tunctl, vous devriez plutôt utiliser ip . La strophe correcte pour /etc/network/interfaces est la suivante:

    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

Votre erreur était d'utiliser statique au lieu de manuel . La raison en est que, puisque vous essayez de donner à l’interface virtuelle une adresse dans le même sous-réseau que votre principal intermédiaire (wlan0/eth0), lorsqu’il essaie automatiquement d’ajouter un itinéraire local,

    ip route add 192.168.1.0/24 dev tap1

il constate qu'une telle route existe déjà et il se plaint. Si vous utilisez manuel au lieu de statique, vous êtes autorisé à supprimer cette route, ce qui est bien sûr inutile.

En outre, vous devriez ajouter un itinéraire

     ip route add 192.168.1.121/32 dev tap1

pour informer votre noyau qu'il existe une exception à la route

     ip route add 192.168.1.0/24 dev eth0/wlan0 

C'est tout.

20
MariusMatutiae

Vous devrez peut-être effectuer quelques étapes supplémentaires:

  1. Ajouter une nouvelle table de routage Modifiez/etc/iproute2/rt_tables pour ajouter une nouvelle table de routage. Appelez-la table de routage "rt2" et définissez ses préférences sur 1:
    55     local
    254     main
    253     default
    0       unspec
    1       rt2
  1. Comme expliqué dans la réponse précédente, créez une interface Tap, mais vous devez ensuite configurer les nouvelles tables de routage et définir des règles de routage. Ajoutez à/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

Pour le tester:

ip route list table rt2
ip rule show
0
ehsan