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

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

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

一、利用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

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

3.加载TUN模块:

#modprobe tun
#lsmod |grep tun

《CentOS下创建tap虚拟网卡与Veth的使用》
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

《CentOS下创建tap虚拟网卡与Veth的使用》
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

《CentOS下创建tap虚拟网卡与Veth的使用》8.检测连通性:

#ping -I tap0 10.0.1.2 -c 4

《CentOS下创建tap虚拟网卡与Veth的使用》
9.删除虚拟网卡:

#tunctl -d tap0
《CentOS下创建tap虚拟网卡与Veth的使用》
出现“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

《CentOS下创建tap虚拟网卡与Veth的使用》3.添加veth:

#ip link set veth1 netns xd_ns
#ip link list

《CentOS下创建tap虚拟网卡与Veth的使用》
4.检查网络信息:查看xd_ns内部的网络信息

#ip netns exec xd_ns ip link list

《CentOS下创建tap虚拟网卡与Veth的使用》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

《CentOS下创建tap虚拟网卡与Veth的使用》6.检查连通性:
通过ping检查与veth1的连通性

#ping 10.1.0.2 -c 4

《CentOS下创建tap虚拟网卡与Veth的使用》对于非Debian的系统,这里有可能ping不通,我用的是CentOS7的系统最后一步是无法ping通,RHEL可支持。主要是因为内核中的一些APR相关配置导致veth1不返回APR应答包。

    原文作者:vibrancy..
    原文地址: https://blog.csdn.net/m0_52723360/article/details/115058352
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞