https://blog.csdn.net/Michaelwubo/article/details/110478175
虚拟网卡分类
tap与tun
https://www.cnblogs.com/daizichuan/p/18360705
https://blog.csdn.net/skywalk8163/article/details/141331103
- 判断内核配置文件是否配置TUN功能选项
方法1:
import gzip
import re
def is_tun_tap_enabled():
try:
with open('/proc/config.gz', 'rb') as file:
config = gzip.decompress(file.read())
pattern = re.compile(r'CONFIG_TUN=y')
match = pattern.search(config.decode())
return match is not None
except FileNotFoundError:
# 如果/proc/config.gz文件不存在,可能是因为内核不是自定义配置的,
# 或者是一个较新的Linux发行版,其内核配置可能不存在这个压缩文件。
# 在这种情况下,可以通过检查模块是否加载来判断。
try:
with open('/sys/module/tun/parameters/type') as file:
return 'tun' in file.read()
except FileNotFoundError:
# 如果模块参数也不存在,可能是TUN/TAP设备在当前系统上不受支持或未被内核模块化。
return False
if is_tun_tap_enabled():
print("TUN/TAP 已启用")
else:
print("TUN/TAP 未启用")
方法2:
判断是否存在/dev/net/tun
节点
- 创建tap/tun接口:
https://www.cnblogs.com/bakari/p/10449664.html
创建 tap/tun 设备:ip tuntap add dev tap0 mod tap # 创建 tap ip tuntap add dev tun0 mod tun # 创建 tun
删除 tap/tun 设备:
ip tuntap del dev tap0 mod tap # 删除 tap ip tuntap del dev tun0 mod tun # 删除 tun
0 条评论