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


24

Certaines tâches nécessitent la configuration d' interfaces tactiles + l'attribution de la 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 puis-je rendre la configuration des interfaces tap persistante après les redémarrages sans ajouter ces commandes à un script shell et ajouter au démarrage

Ce que j'ai en tête, c'est de le faire via / etc / network / interfaces comme ceci:

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?

Réponses:


20

Je ne vois pas, pour ma vie, pourquoi cette question devrait être rejetée. 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 devez utiliser ip à la place. La strophe correcte pour / etc / network / interfaces est:

    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 a été d'utiliser du statique au lieu du 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 interfae principale (wlan0 / eth0), lorsqu'elle essaie automatiquement d'ajouter une route locale,

    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 cet itinéraire, ce qui est bien sûr inutile.

Vous devez également ajouter un itinéraire

     ip route add 192.168.1.121/32 dev tap1

pour informer votre noyau qu'il y a une exception à l'itinéraire

     ip route add 192.168.1.0/24 dev eth0/wlan0 

C'est tout.


Quelque chose ne fonctionne pas pour moi ici sur ubuntu 17.10: mon tun0 n'est pas créé - l'état du réseau de service indique que l'interface tun0n'existe pas. Voici le fichier d'interfaces si quelqu'un veut
velis

@velis Votre nouvelle interface s'appelle tap0 , pas tun0 , c'est pourquoi elle n'est pas trouvée. Veuillez noter que les interfaces tun et tap sont fondamentalement différentes, en.wikipedia.org/wiki/TUN/TAP , laquelle souhaitez-vous créer?
MariusMatutiae

Oui, cela s'appelle tap0. Cette réponse consiste à créer un appareil de prise, pas un appareil de tun. Je ne vois pas comment cela peut être la cause de mon échec. La commande pre-up add device s'exécute parfaitement à partir de la ligne de commande.
velis

Il s'avère que je ne manquais qu'une auto tap0strophe. Gist mis à jour en conséquence.
velis

0

Il y a quelques étapes supplémentaires que vous pourriez avoir à faire:

  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 tactile, 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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.