linux上使用tun/tap设备模拟一个虚拟网卡,并将该虚拟网卡连接到新创建的网桥上

linux上使用tun/tap设备模拟一个虚拟网卡,并将该虚拟网卡连接到新创建的网桥上

一、tun/tap设备简介

tun/tap 设备是操作系统内核中的虚拟网络设备,是用软件模拟的网络设备,提供与硬件网络设备完全相同的功能。主要用于用户空间和内核空间传递报文。

tun/tap 设备与物理网卡的区别:

  1. 对于硬件网络设备而言,一端连接的是物理网络,一端连接的是网络协议栈。
  2. 对于 tun/tap 设备而言,一端连接的是应用程序(通过 字符设备文件 /net/dev/tun),一端连接的是网络协议栈。

二、在linux上使用tun/tap设备模拟一个虚拟网卡

  1. 确认内核是否支持tun/tap

    确认内核是否有tun模块

    modinfo tun
    

    出现如下提示,表示有tun模块

    image-20230318232301374

    加载tun模块

    modprobe tun
    
  2. 创建和配置虚拟网卡

    先安装tunctl,该工具可以通过安装软件包uml-utilities来获得,我的环境ubuntu,具体命令如下:

    apt install uml-utilities
    # 如果安装的时候找不到安装包,就使用如下命令更新软件列表信息
    apt upgrade
    

    创建虚拟网卡设备,命名为tap0

    tunctl -t tap0 -u root
    

    设置虚拟网卡,并配置ip地址和子网掩码等信息

    ifconfig tap0 192.168.0.1 netmask 255.255.255.0 promisc
    

三、 创建网桥连接到虚拟网卡上

# 创建一个名为br1的网桥
ip link add br1 type bridge

# 将tap0网卡设备加进来
ip tuntap add dev tap0 mode tap

# 将br1设置为tap0的目标网桥
ip link set dev tap0 master br1

# 启动网桥
ip link set dev br0 up

都搞定以后,查看网桥状态,需要安装brctl,该工具可以通过安装软件包bridge-utils来获得,具体命令如下:

apt install bridge-utils

安装好以后,用brctl show命令来查看网桥状态

四、参考资料:

Linux下添加虚拟网卡

在Linux系统下使用TUN/TAP虚拟网卡的基本教程

Linux 虚拟网卡技术:Macvlan

qemu网桥配置

猜你喜欢

转载自blog.csdn.net/qq_38505969/article/details/129645659