TAP/TUN
TAP/TUN 是 Linux 内核实现的一对虚拟网络设备,TAP 工作在二层虚拟以太设备,TUN 工作在三层
基于 TAP 驱动,即可实现虚拟机 vNIC 的功能,虚拟机的每个 vNIC 都与一个 TAP 设备相连,vNIC 之于 TAP 就如同 NIC 之于 eth
甚至连数据结构,tap与tun的定义都是同一个,两者仅仅是通过一个Flag来区分
当一个 TAP 设备被创建时,在 Linux 设备文件目录下会生成一个对应的字符设备文件,用户程序可以像打开一个普通文件一样对这个文件进行读写
Linux得有tun模块(Linux使用tun模块实现了tun/tap)
1 | # modinfo tun |
当Linux版本具有tun模块时,还得看看其是否已经加载
1 | # lsmod | grep tun |
如果没有加载,则使用如下命令进行加载:
1 | # modprobe tun |
创建 tap/tun 设备:
1 | ip tuntap add dev tap0 mod tap # 创建 tap |
删除 tap/tun 设备:
1 | ip tuntap del dev tap0 mod tap # 删除 tap |
VETH 设备总是成对出现,一端连着内核协议栈,另一端连着另一个设备,一个设备收到内核发送的数据后,会发送到另一个设备上去,这种设备通常用于容器中两个 namespace 之间的通信。