Linux Net Namespace 介绍

发布时间: 更新时间: 总字数:661 阅读时间:2m 作者: 分享
专栏文章
  1. Linux tap/tun 介绍
  2. Linux Veth Pair 介绍
  3. Linux 网桥介绍
  4. Linux Net Namespace 介绍(当前)
  5. 通过 Linux ip_forward 实现两个 netns 通信

linux net namespace 在逻辑上是网络堆栈的一个副本,它有独立的路由防火墙网络设备。在云计算中,通过 netns 使一台机器可以模拟数多台服务器以及路由器的网络环境。

工具包

linux net namespace 操作的工具有 iproute 提供,使用 ip netns 操作 netns。

help

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 netns add ns1

可以创建一个完全隔离的新网络环境,该环境包括一个独立的网卡空间路由表ARP表ip地址iptablesebtables等。总之,与网络有关的组件都是独立的。

  • 查看
$ ip netns list
ns1

查看我们刚才创建的 netns

  • 删除
ip netns del ns1
  • 执行配置
$ ip netns exec ns1 `command`
$ ip netns exec ns1 ip link
  • 进入 netns
$ ip netns exec ns1 bash
$ ip addr show
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

使用上述命令,可以在新的网络环境中打开一个shell,可以看到,新的网络环境里面只有一个lo设备,并且该lo设备与外面的lo设备是相互隔离的。

  • 其他与 OpenvSwitch 配置使用见:TODO(xiexianbin)

特殊说明

netns 可以对网络设备进行隔离

  • 查看网络设备:
$ ls -lhart /sys/class/net
total 0
drwxr-xr-x  2 root root 0 Mar 18 03:37 .
lrwxrwxrwx  1 root root 0 Mar 18 03:37 ovs-system -> ../../devices/virtual/net/ovs-system
lrwxrwxrwx  1 root root 0 Mar 18 03:37 lo -> ../../devices/virtual/net/lo
lrwxrwxrwx  1 root root 0 Mar 18 03:37 ens33 -> ../../devices/pci0000:00/0000:00:11.0/0000:02:01.0/net/ens33
lrwxrwxrwx  1 root root 0 Mar 18 03:37 docker0 -> ../../devices/virtual/net/docker0
lrwxrwxrwx  1 root root 0 Mar 18 03:37 br0 -> ../../devices/virtual/net/br0
drwxr-xr-x 54 root root 0 Mar 18 03:37 ..
  • 创建 ns1
ip netns add ns1
  • br0 分配给 ns1
ip link set br0 netns ns1
  • 查看:br0 只在 ns1 中,这也说明一个网络设备只能位于一个 netns 中。
$ ls -lhart /sys/class/net/
total 0
drwxr-xr-x  2 root root 0 Mar 18 03:37 .
lrwxrwxrwx  1 root root 0 Mar 18 03:37 ovs-system -> ../../devices/virtual/net/ovs-system
lrwxrwxrwx  1 root root 0 Mar 18 03:37 lo -> ../../devices/virtual/net/lo
lrwxrwxrwx  1 root root 0 Mar 18 03:37 ens33 -> ../../devices/pci0000:00/0000:00:11.0/0000:02:01.0/net/ens33
lrwxrwxrwx  1 root root 0 Mar 18 03:37 docker0 -> ../../devices/virtual/net/docker0
drwxr-xr-x 54 root root 0 Mar 18 03:37 ..
$ ip netns exec ns1 ls -lhart /sys/class/net/
total 0
drwxr-xr-x  2 root root 0 Mar 18 03:37 .
lrwxrwxrwx  1 root root 0 Mar 18 03:37 br0 -> ../../devices/virtual/net/br0
drwxr-xr-x 54 root root 0 Mar 18 03:37 ..
lrwxrwxrwx  1 root root 0 Mar 18 03:41 lo -> ../../devices/virtual/net/lo
专栏文章
  1. Linux tap/tun 介绍
  2. Linux Veth Pair 介绍
  3. Linux 网桥介绍
  4. Linux Net Namespace 介绍(当前)
  5. 通过 Linux ip_forward 实现两个 netns 通信
最新评论
加载中...
Home Archives Categories Tags