Ich kann beim besten Willen nicht verstehen, warum diese Frage abgelehnt werden sollte. Es ist klar, richtig, es hat eine wohldefinierte Antwort. Ich habe es positiv bewertet.
Sie verwenden veraltete Dienstprogramme wie tunctl, Sie sollten ip verwenden stattdessen. Die richtige Strophe für /etc/network/interfaces ist:
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
Ihr Fehler war die Verwendung von statisch statt manuell . Der Grund dafür ist, dass, da Sie versuchen, der virtuellen Schnittstelle eine Adresse im selben Subnetz wie Ihre Hauptschnittstelle (wlan0/eth0) zu geben, wenn sie automatisch versucht, eine lokale Route hinzuzufügen,
ip route add 192.168.1.0/24 dev tap1
es stellt fest, dass eine solche Route bereits existiert, und beschwert sich. Wenn Sie manuell verwenden Anstelle von static dürfen Sie diese Route löschen, was natürlich nutzlos ist.
Außerdem sollten Sie eine Route hinzufügen
ip route add 192.168.1.121/32 dev tap1
um Ihren Kernel zu informieren, dass es eine Ausnahme für die Route gibt
ip route add 192.168.1.0/24 dev eth0/wlan0
Das ist alles.