Docker系列5:网络名称空间管理
admin
2023-03-27 05:41:09
0

一、ip命令介绍

ip命令是iproute软件的程序

[root@host1 ~]# yum install iproute -y 
[root@host1 ~]# rpm -q iproute
iproute-4.11.0-25.el7_7.2.x86_64

通过ip可以实现管理网络名称空间

[root@host1 ~]# ip
Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }
       ip [ -force ] -batch filename
where  OBJECT := { link | address | addrlabel | route | rule | neigh | ntable |
                   tunnel | tuntap | maddress | mroute | mrule | monitor | xfrm |
                   netns | l2tp | fou | macsec | tcp_metrics | token | netconf | ila |
                   vrf }
       OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |
                    -h[uman-readable] | -iec |
                    -f[amily] { inet | inet6 | ipx | dnet | mpls | bridge | link } |
                    -4 | -6 | -I | -D | -B | -0 |
                    -l[oops] { maximum-addr-flush-attempts } | -br[ief] |
                    -o[neline] | -t[imestamp] | -ts[hort] | -b[atch] [filename] |
                    -rc[vbuf] [size] | -n[etns] name | -a[ll] | -c[olor]}
  • OBJECT中的netns可以用来设置网络名称空间

netns的使用帮助如下

[root@host1 ~]# ip netns help
Usage: ip netns list
       ip netns add NAME
       ip netns set NAME NETNSID
       ip [-all] netns delete [NAME]
       ip netns identify [PID]
       ip netns pids NAME
       ip [-all] netns exec [NAME] cmd ...
       ip netns monitor
       ip netns list-id

二、ip命令的使用

创建两个名称空间并查看一下

[root@host1 ~]# ip netns add r1
[root@host1 ~]# ip netns add r2
[root@host1 ~]# ip netns list
r2
r1

查看网络名称空间中有几个网卡

  • 其实就是在网络名称空间中执行ip addr命令,需要加选项-a

  • 在网络名称空间执行命令是用exec

[root@host1 ~]# ip netns exec r1 ip addr
1: lo:  mtu 65536 qdisc noop state DOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

创建网卡对

  • 用的命令是ip link 

[root@host1 ~]# ip link help
Usage: ip link add [link DEV] [ name ] NAME
                   [ txqueuelen PACKETS ]
                   [ address LLADDR ]
                   [ broadcast LLADDR ]
                   [ mtu MTU ] [index IDX ]
                   [ numtxqueues QUEUE_COUNT ]
                   [ numrxqueues QUEUE_COUNT ]
                   type TYPE [ ARGS ]

创建一对网卡,两端分别为veth2.1和veth2.2

[root@host1 ~]# ip link add name veth2.1 type veth peer name veth2.2

[root@host1 ~]# ip link show | grep veth2.*
7: veth2.2@veth2.1:  mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
8: veth2.1@veth2.2:  mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
  • type veth:指定创建的是虚拟以太网卡

为名称空间分配虚拟网卡

  • 用的命令是ip link set

  • 一旦将某个虚拟网卡分配到某个名称空间,在物理机中就看不到这个网卡了

将veth2.1保留在物理机,将veth2.2分配到r1名称空间

[root@host1 ~]# ip link set veth2.2 netns r1

[root@host1 ~]# ip netns exec r1 ip addr
1: lo:  mtu 65536 qdisc noop state DOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
7: veth2.2@if8:  mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 4e:f2:68:33:47:a1 brd ff:ff:ff:ff:ff:ff link-netnsid 0

[root@host1 ~]# ip link show | grep veth2.*
8: veth2.1@if7:  mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000

也可以修改虚拟网卡的名称,例如将r1中的veth2.2改名为eth0

[root@host1 ~]# ip netns exec r1 ip link set dev veth2.2 name eth0
[root@host1 ~]# ip netns exec r1 ip addr
1: lo:  mtu 65536 qdisc noop state DOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
7: eth0@if8:  mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 4e:f2:68:33:47:a1 brd ff:ff:ff:ff:ff:ff link-netnsid 0

将veth2.1地址设置为10.0.0.1/8,将r1中的eth0地址地址设置为10.0.0.2/8

[root@host1 ~]# ip addr add 10.0.0.1/8 dev veth2.1
[root@host1 ~]# ip netns exec r1 ip addr add 10.0.0.2/8 dev eth0
[root@host1 ~]# ip addr show veth2.1
8: veth2.1@if7:  mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 1e:62:af:a2:bc:6d brd ff:ff:ff:ff:ff:ff link-netnsid 1
    inet 10.0.0.1/8 scope global veth2.1
       valid_lft forever preferred_lft forever
       
[root@host1 ~]# ip netns exec r1 ip addr show eth0
7: eth0@if8:  mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 4e:f2:68:33:47:a1 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 10.0.0.2/8 scope global eth0
       valid_lft forever preferred_lft forever

此时两个网卡都是down状态,解决方法如下

[root@host1 ~]# ip link set veth2.1 up
[root@host1 ~]# ip netns exec r1 ip link set eth0 up

也可以将veth2.1放入另一个名称空间,这样两个名称空间就可以通信了

[root@host1 ~]# ip link set veth2.1 netns r2
[root@host1 ~]# ip netns exec r2 ip link set veth2.1 up



相关内容

热门资讯

【第一资讯】“西兵互娱炸/金/... 有 亲,根据资深记者爆料西兵互娱炸/金/花是可以开挂的,确实有挂(咨询软...
我来教教您“同城乐吧510k开... 您好:同城乐吧510k这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9752949】很多玩家在...
【第一消息】“天天爱泰州麻将有... 家人们!今天小编来为大家解答天天爱泰州麻将透视挂怎么安装这个问题咨询软件客服徽9752949的挂在哪...
玩家分享攻略“天天微友棋牌究竟... 家人们!今天小编来为大家解答天天微友棋牌透视挂怎么安装这个问题咨询软件客服徽9784099的挂在哪里...
今日重大消息“杭州都莱真的有挂... 网上科普关于“杭州都莱有没有挂”话题很是火热,小编也是针对杭州都莱作*弊开挂的方法以及开挂对应的知识...
最新引进“先锋炸/金/花可以开... 有 亲,根据资深记者爆料先锋炸/金/花是可以开挂的,确实有挂(咨询软件无...
【第一消息】“九酷牛牛开挂神器... 网上科普关于“九酷牛牛有没有挂”话题很是火热,小编也是针对九酷牛牛作*弊开挂的方法以及开挂对应的知识...
今日重大发现“同城乐吧怎么开挂... 今日重大发现“同城乐吧怎么开挂?”(透视曝光猫腻)您好,同城乐吧这个游戏其实有挂的,确实是有挂的,需...
玩家最新攻略“山西互动到底有挂... 玩家最新攻略“山西互动到底有挂吗?”(太坑了原来有挂)您好,山西互动这个游戏其实有挂的,确实是有挂的...
今日重大消息“红豆大厅有没有挂... 您好:红豆大厅这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9752949】很多玩家在这款游戏...