重启后如何使tap接口持久化?

AJN*_*AJN 25 networking linux ubuntu network-interface

某些任务需要配置Tap 接口+ 分配所有权。所以,我是手动操作的:

sudo tuntap -u <username>
sudo ifconfig tap0 up
sudo ip a a 192.168.1.1/24 dev tap0
Run Code Online (Sandbox Code Playgroud)

或使用

ip tuntap add dev tap0 mode tap user <username>
Run Code Online (Sandbox Code Playgroud)

如何在重新启动后使 Tap 接口配置持久化而不将这些命令添加到 shell 脚本并添加到启动

我的想法是通过/etc/network/interfaces 进行操作,如下所示:

iface tap1 inet static
address 192.168.1.121
netmask 255.255.255.0
pre-up /usr/sbin/tunctl -u ajn -t tap1
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,它不起作用。

有任何想法吗?

Mar*_*iae 21

对于我的一生,我看不出为什么这个问题应该被否决。很清楚,正确,它有一个明确的答案。我已经投了赞成票。

您正在使用过时的实用程序,例如 tunctl,您应该改用ip/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
Run Code Online (Sandbox Code Playgroud)

您的错误在于使用static而不是manual。原因是,由于您尝试为虚拟接口提供与主接口 (wlan0/eth0) 位于同一子网中的地址,因此当它尝试自动添加本地路由时,

    ip route add 192.168.1.0/24 dev tap1
Run Code Online (Sandbox Code Playgroud)

它发现这样的路线已经存在,它会抱怨。如果使用手动代替静态,则允许删除此路由,这当然没有用。

另外,您应该添加一条路线

     ip route add 192.168.1.121/32 dev tap1
Run Code Online (Sandbox Code Playgroud)

通知您的内核路由有异常

     ip route add 192.168.1.0/24 dev eth0/wlan0 
Run Code Online (Sandbox Code Playgroud)

就这样。