linux网络命名空间实验,网络命名空间 Linux Network Namespace

Linux Network Namespace

命名空间相关的命令:

ip netns list: 查看网络命名空间

ip netns add test1: 添加网络命名空间

ip netns delete test1: 删除网络命名空间

在不同的命名空间中执行命令:

ip netns exec test1 ip a: 在test1网络命名空间中执行ip a命令

ip netns exec test1 ip link: 在test1网络命名空间中执行ip link命令

ip netns exec test1 ip link set dev lo up: 启动网卡

root@localhost:~# ip netns exec test1 ip a

1: lo: mtu 65536 qdisc noop state DOWN group default qlen 1

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

root@localhost:~# ip netns exec test1 ip link

1: lo: mtu 65536 qdisc noop state DOWN mode DEFAULT group default qlen 1

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

root@localhost:~# ip netns exec test1 ip link set dev lo up

root@localhost:~# ip netns exec test1 ip addr

1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

valid_lft forever preferred_lft forever

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

Veth Pair

Veth Pair是成对出现的,Veth Pair设备的特点:

它被创建出来后,总是两张虚拟网卡(Veth Pear)的形式成对出现的。

并且,从其中一个网卡发出的数据包,可以直接出现在对应的另一张网卡上,哪怕这两个网卡在不同的Network Namespace里。

在linux中创建Veth Pair设备

root@localhost:~# ip link add veth-test1 type veth peer name veth-test2

root@localhost:~# ip link

1: lo: mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

2: ens160: mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000

link/ether 00:50:56:9d:fc:ad brd ff:ff:ff:ff:ff:ff

3: docker0: mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default

link/ether 02:42:8a:ca:8b:01 brd ff:ff:ff:ff:ff:ff

4: veth-test2@veth-test1: mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000

link/ether 26:37:a3:35:a5:6f brd ff:ff:ff:ff:ff:ff

5: veth-test1@veth-test2: mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000

link/ether ba:14:cf:a3:5c:79 brd ff:ff:ff:ff:ff:ff

把这两个虚拟网卡添加到前面创建的命名空间中

ip link set veth-test1 netns test1

ip link set veth-test2 netns test2

root@localhost:~# ip netns exec test1 ip link

1: lo: mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

root@localhost:~# ip link set veth-test1 netns test1

root@localhost:~# ip netns exec test1 ip link

1: lo: mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

5: veth-test1@if4: mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000

link/ether ba:14:cf:a3:5c:79 brd ff:ff:ff:ff:ff:ff link-netnsid 0

给Veth Pair两个虚拟网卡分配IP地址

ip netns exec test1 ip addr add 172.17.0.101/24 dev veth-test1

ip netns exec test1 ip addr add 172.17.0.102/24 dev veth-test2

root@localhost:~# ip netns exec test1 ip addr add 172.17.0.101/24 dev veth-

root@localhost:~# ip netns exec test1 ip link

1: lo: mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

5: veth-test1@if4: mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000

link/ether ba:14:cf:a3:5c:79 brd ff:ff:ff:ff:ff:ff link-netnsid 0

root@localhost:~# ip netns exec test1 ip addr

# .....

5: veth-test1@if4: mtu 1500 qdisc noop state DOWN group default qlen 1000

link/ether ba:14:cf:a3:5c:79 brd ff:ff:ff:ff:ff:ff link-netnsid 0

inet 172.17.0.101/24 scope global veth-test1

valid_lft forever preferred_lft forever

可以通过ip addr命令查看到test1中的vetg-test1已经有了IP。

root@localhost:~# ip link set veth-test2 netns test2

root@localhost:~# ip netns exec test2 ip addr add 172.17.0.102/24 dev veth-test2

root@localhost:~# ip netns exec test2 ip addr

1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

valid_lft forever preferred_lft forever

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

4: veth-test2@if5: mtu 1500 qdisc noop state DOWN group default qlen 1000

link/ether 26:37:a3:35:a5:6f brd ff:ff:ff:ff:ff:ff link-netnsid 0

inet 172.17.0.102/24 scope global veth-test2

valid_lft forever preferred_lft forever

注意:通过命令查看veth-test1和veth-test2其状态是DOWN的哦。

启动两个网卡:

ip netns exec test1 ip link set dev veth-test1 up

ip netns exec test2 ip link set dev veth-test2 up

root@localhost:~# ip netns exec test1 ip link set dev veth-test1 up

root@localhost:~# ip netns exec test1 ip link

1: lo: mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

5: veth-test1@if4: mtu 1500 qdisc noqueue state LOWERLAYERDOWN mode DEFAULT group default qlen 1000

link/ether ba:14:cf:a3:5c:79 brd ff:ff:ff:ff:ff:ff link-netnsid 1

可以看到veth-test1的状态是UP了

ping不同命名空间中的IP地址:

root@localhost:~# ip netns exec test1 ping 172.17.0.102

PING 172.17.0.102 (172.17.0.102) 56(84) bytes of data.

64 bytes from 172.17.0.102: icmp_seq=1 ttl=64 time=0.116 ms

64 bytes from 172.17.0.102: icmp_seq=2 ttl=64 time=0.055 ms

64 bytes from 172.17.0.102: icmp_seq=3 ttl=64 time=0.102 ms

^C

--- 172.17.0.102 ping statistics ---

3 packets transmitted, 3 received, 0% packet loss, time 1998ms

rtt min/avg/max/mdev = 0.055/0.091/0.116/0.026 ms

root@localhost:~# ip netns exec test2 ping 172.17.0.101

PING 172.17.0.101 (172.17.0.101) 56(84) bytes of data.

64 bytes from 172.17.0.101: icmp_seq=1 ttl=64 time=0.073 ms

64 bytes from 172.17.0.101: icmp_seq=2 ttl=64 time=0.073 ms

^C

--- 172.17.0.101 ping statistics ---

2 packets transmitted, 2 received, 0% packet loss, time 999ms

rtt min/avg/max/mdev = 0.073/0.073/0.073/0.000 ms

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值