使用Docker,需要用到ip netns命令来创建网络;Centos6.x默认不支持network namespaces;
在shell中会看到下面的信息:
# ip netns Object "netns" is unknown, try "ip help".
Centos6.x要获取network namespaces的支持需要升级Centos的内核和更新iproute软件包:
这里通过yum快速升级CentOS 6.x内核到3.10:
# rpm -ivh http://www.elrepo.org/elrepo-release-6-5.el6.elrepo.noarch.rpm # yum --enablerepo=elrepo-kernel install kernel-lt -y
在grub.conf中确认装好的内核在哪个位置:
# vi /etc/grub.conf default=0
重启系统,后查看内核信息:
# uname -r 3.10.65-1.el6.elrepo.x86_64
安装软件源:
# yum install -y http://rdo.fedorapeople.org/rdo-release.rpm
更新rdo-release.repo文件为以下内容:
# cat /etc/yum.repos.d/rdo-release.repo [openstack-juno] name=OpenStack Juno Repository baseurl=http://repos.fedorapeople.org/repos/openstack/openstack-havana/epel-6/ enabled=1 skip_if_unavailable=0 gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-RDO-Juno
升级iproute软件包:
# yum upgrade iproute ... $ rpm -qa | grep iproute iproute-2.6.32-130.el6ost.netns.2.x86_64
3.常用的namespace的命令
添加一个namespace:
# ip netns add NETNSNAME
在namespace中新加一个设备:
# ip link set [dev-name] netns NETNSNAME
在namespace中启用一个设备:
# ip netns exec NETNSNAME ip link set lo up
查看指定namespace中指定设备的参数信息:
# ip netns exec NAETNSNAME ip addr show [dev-name] permanent scope global
为namespace中指定设备设置ip:
# sudo ip netns exec NETNSNAME ip -4 addr add 192.168.1.231/24 brd 192.168.1.255 scope global dev [dev-name]
查看所有network namespace:
# ip netns list
ping虚拟机实例:
# ip netns exec [name] ping 192.168.1.231