有些任务需要有点击界面已配置 + 分配所有权。因此,我手动进行此操作:
sudo tuntap -u <username>
sudo ifconfig tap0 up
sudo ip a a 192.168.1.1/24 dev tap0
或使用
ip tuntap add dev tap0 mode tap user <username>
如何才能使 tap 接口配置在重启后保持不变,而无需将这些命令添加到 shell 脚本并添加到启动中
我想做的是通过/etc/网络/接口如下所示:
iface tap1 inet static
address 192.168.1.121
netmask 255.255.255.0
pre-up /usr/sbin/tunctl -u ajn -t tap1
但由于某种原因,它不起作用。
有任何想法吗?
答案1
我实在看不出为什么这个问题应该被否决。它很清晰、正确,并且有明确的答案。我已将其点赞。
您正在使用过时的实用程序,如 tunctl,您应该使用知识产权正确的诗节是/etc/网络/接口是:
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
你的错误在于使用静止的代替手动的原因是,由于您尝试为虚拟接口提供与主接口 (wlan0/eth0) 位于同一子网的地址,因此当它尝试自动添加本地路由时,
ip route add 192.168.1.0/24 dev tap1
它发现这样的路线已经存在,并且会发出警告。如果你使用手动的而不是静态的,你可以删除这个路由,当然这是没用的。
另外,你应该添加一条路线
ip route add 192.168.1.121/32 dev tap1
通知你的内核路由有异常
ip route add 192.168.1.0/24 dev eth0/wlan0
就这样。
答案2
您可能还需要执行几个步骤:
- 添加新路由表 编辑 /etc/iproute2/rt_tables 添加新路由表。将其命名为路由表“rt2”,并将其首选项设置为 1:
55 local
254 main
253 default
0 unspec
1 rt2
- 如上一个答案所述,创建一个 tap 接口,但随后您需要配置新的路由表并设置路由规则。添加到 /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
测试一下:
ip route list table rt2
ip rule show
答案3
遵循以下简单步骤:
步骤1:安装uml-实用程序使用
sudo apt-get install uml-utilities
第2步:在以下位置添加以下命令/etc/网络/接口
auto tap0
iface tap0 inet static
address 192.168.100.1
netmask 255.255.255.0
pre-up /usr/bin/tunctl -t tap0
步骤3: 重启机器并执行命令ifconfig
你所做的更改应该反映出来