CentOS下创建tap虚拟网卡与Veth的使用

Posted vibrancy..

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS下创建tap虚拟网卡与Veth的使用相关的知识,希望对你有一定的参考价值。

利用TUN创建虚拟网络与Veth的使用

我用的环境是CentOS7, 6.5版本在下面配置YUM源不支持,图片具体步骤自己在虚拟机上完成即可,前提是需要你有完整版的centos7镜像。有一些我遇到的以及身边人常见的问题已列在下面

一、利用TUN创建虚拟网络
整体思路为:
1.确认内核是否支持TUN/TAP,并确认是否有TUN模块。
2.添加CentOS7的tunctl源
3.安装tunctl rpm包
4.使用tunctl新建虚拟网卡tap0

具体步骤如下:
1.先安装一个第三方源:

yum install -y epel-release

epel-release不懂的小伙伴可见详细介绍https://blog.csdn.net/u012577474/article/details/90108471

2.检查内核是否支持TUN/TAP:

#modinfo tun

3.加载TUN模块:

#modprobe tun
#lsmod |grep tun


4.添加CentOS7的tunctl源:

  • 配置YUM源:

#cd /etc/yum.repos.d
#touch nux-misc.repo
#vim nux-misc.repo
[nux-misc]
name=Nux-Misc
baseurl=http://li.nux.ro/download/nux/misc/el7/x86_64/
enabled=0
gpgcheck=0
gpgkey=http://li.nux.ro/download/nux/PRM-GPG-KEY-nux.ro

  • 安装tunctl rpm包:

#yum --enablerepo=nux-misc install -y tunctl


5.安装TUN/TAP的管理工具tunctl
若第4步已经配置完成了TUN源,则这一步则会显示“”无需任何处理

#yum install -y tunctl

6.创建虚拟网卡:名为tap0

#tunctl -b -u root -t tap0

7.创建临时IP并查看:

#ifconfig tap0 10.0.1.2/24
#ifconfig tap0
查看网卡具体信息的命令#ifconfig -a

8.检测连通性:

#ping -I tap0 10.0.1.2 -c 4


9.删除虚拟网卡:

#tunctl -d tap0

出现“nonpersistent“即为删除成功,可通过#ifconfig -a来查看目前的网卡配置情况

到目前为止我们创建tap虚拟网卡部分完成,但会出现ping不通所配临时IP的情况,有以下原因:

1.在安装tunctl工具之前,并未配置yum源
2.在配置临时IP之后,未重启网络服务
#systemctl restart network
3.重启网络服务但未启用tap0网卡
#ifconfig tap0 up

身边的同学遇到的问题多在于第3点原因

二、Veth的使用
1.创建Namespace:名称为xd_ns

#ip netns add xd_ns
#ip netns list

2.创建Veth接口:

#ip link add veth0 type veth peer name veth1
#ip a

3.添加veth:

#ip link set veth1 netns xd_ns
#ip link list


4.检查网络信息:查看xd_ns内部的网络信息

#ip netns exec xd_ns ip link list

5.配置命名空间地址:
配置命名空间xd_ns中的Veth1的IP为10.1.0.2/24

#ip netns exec xd_ns ifconfig veth1 10.1.0.2/24 up
#ip netns exec xd_ns ip addr list

6.检查连通性:
通过ping检查与veth1的连通性

#ping 10.1.0.2 -c 4

对于非Debian的系统,这里有可能ping不通,我用的是CentOS7的系统最后一步是无法ping通,RHEL可支持。主要是因为内核中的一些APR相关配置导致veth1不返回APR应答包。

以上是关于CentOS下创建tap虚拟网卡与Veth的使用的主要内容,如果未能解决你的问题,请参考以下文章

CentOS下使用TUN/TAP虚拟网卡的基本教程

[Linux用户空间编程-4]:Linux虚拟网络设备TUN/TAP的工作原理与代码示例

k8s里pod与宿主机的veth-pair匹配关系查找方法

什么?网卡也能虚拟化?

Linux 虚拟化网络技术 — 虚拟二层网卡(Tap)与虚拟三层隧道网卡(Tun)

使用 Veth Pair 虚拟网卡对不同的网络空间进行通信