利用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不懂的小伙伴可见详细介绍
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应答包。