在现代网络技术中,TUN(Network TUNnel)和TAP(Network TAP)是两种重要的虚拟网络设备,它们在计算机网络中发挥着关键作用。
Tun/Tap 简介
1、TUN:是三层(网络层)的虚拟网络设备,主要用于 IP 数据包的处理,TUN 设备会模拟一个网络层接口,接收到的数据包会被传递给用户空间的程序进行处理,处理完的数据包会被发送回内核网络栈。
2、TAP:是二层(数据链路层)的虚拟网络设备,主要用于以太网帧的处理,TAP 设备可以模拟一个以太网接口,能够接收和发送原始的以太网帧,这使得 TAP 设备非常适合用于桥接不同的网络环境,或者在虚拟机中模拟物理网卡。
3、异同点:相同点在于都是虚拟网络设备且都可用于网络数据转发;不同点在于工作层次、数据处理方式及应用场景不同,TUN 用于处理网络层数据包,适用于 VPN 等场景;TAP 用于处理数据链路层以太网帧,常用于虚拟局域网络(VLAN)、网络桥接等。
创建和配置 TUN 虚拟网卡步骤
1、确认内核是否支持 TUN:使用modinfo tun
命令查看内核是否支持 TUN 模块,若返回信息中有相关信息则表示支持。
2、加载 TUN 模块:执行modprobe tun
命令加载 TUN 模块,再通过lsmod | grep tun
确认模块已加载成功。
3、安装 tunctl:CentOS6 可通过yum install tunctl y
直接安装;CentOS7 需先新增 yum 源,创建/etc/yum.repos.d/nuxmisc.repo
文件并添加以下内容:
[nuxmisc]
name=Nux Misc
baseurl=http://li.nux.ro/download/nux/misc/el7/x86_64/
enabled=0
GPGcheck=1
gpgkey=http://li.nux.ro/download/nux/RPMGPGKEYnux.ro
然后执行yum enablerepo=nuxmisc install tunctl
安装 tunctl。
4、创建 TUN 虚拟网卡:执行tunctl t tap0 u root
命令创建名为 tap0 的 TUN 虚拟网卡,并通过ifconfig tap0 192.168.0.1 netmask 255.255.255.0 promisc
命令为其设置 IP 地址和子网掩码。
创建和配置 TAP 虚拟网卡步骤
1、确认内核是否支持 TAP:同样使用modinfo tun
命令查看内核是否支持 TAP 模块。
2、加载 TAP 模块:执行modprobe tun
命令可同时加载 TUN 和 TAP 模块,然后通过lsmod | grep tun
确认模块已加载成功。
3、安装 tunctl:同 TUN 虚拟网卡创建中的安装步骤。
4、创建 TAP 虚拟网卡:执行ip tuntap add tap0 mode tap
命令创建名为 tap0 的 TAP 虚拟网卡,再通过ifconfig tap0 192.168.0.1 netmask 255.255.255.0 promisc
命令为其设置 IP 地址和子网掩码。
常见问题解答
1、Q:为什么需要使用 TUN/TAP 虚拟网卡?
A:TUN/TAP 虚拟网卡提供了一种灵活的方式来模拟网络接口,使软件能够在没有物理硬件的情况下进行网络通信和数据处理,在 VPN 应用中,TUN 虚拟网卡可用于封装和解封 IP 数据包;在虚拟机环境中,TAP 虚拟网卡可用于模拟物理网卡,实现虚拟机与外部网络或其他虚拟机之间的通信。
2、Q:如何删除创建的 TUN/TAP 虚拟网卡?
A:对于 TUN 虚拟网卡,执行tunctl d tap0
命令即可删除;对于 TAP 虚拟网卡,执行ifconfig tap0 down
命令将其关闭。