为了账号安全,请及时绑定邮箱和手机立即绑定

Linux network namespace 学习

标签:
运维
  • 在同一台主机上,不同的进程是共享内核资源的。但是,整体资源是有限的,分配不合理势必会相互影响。Linux中提出了namespace机制,来解决资源隔离问题。
  • namespace,即命名空间。最简单的理解就相当于文件夹,对于文件名为 foo 的文件只能在文件夹 bar0 出现一次,却可以在文件夹 bar1 再次出现,表现为 /xxx/bar0/foo 和 /xxx/bar1/foo。访问 namespace 下的资源时, 同样要加上 namespace 。Linux下能用 namespace 隔离的资源有多种,network namespace 是比较常用的一种。

ip netns 命令

查看帮助

$ ip netns help
Usage: ip netns list	# 列出主机上所有的 ns
       ip netns add NAME	# 新增一个 ns
       ip netns set NAME NETNSID	# 给 ns 设置 id 
       ip [-all] netns delete [NAME]	# 删除一个 ns
       ip netns identify [PID]	# 查看进程所在 ns
       ip netns pids NAME	# 查看 ns 中所有进程
       ip [-all] netns exec [NAME] cmd ...	# 在 ns 中运行命令
       ip netns monitor	# 监控 ns 的创建
       ip netns list-id	# 列出所有 ns 的 id

直连

# 创建
sudo ip netns add host01
sudo ip netns add host02

# 创建一对 veth 设备
sudo ip link add veth1.1 type veth peer name veth1.2

# veth1.1 加入 host01 改名 eth0
sudo ip link set veth1.1 netns host01
sudo ip netns exec host01 ip link set veth1.1 name eth0
sudo ip netns exec host01 ifconfig eth0 10.0.0.1/24 up
sudo ip netns exec host01 ifconfig lo up

# veth1.2 加入 host02 改名 eth0
sudo ip link set veth1.2 netns host02
sudo ip netns exec host02 ip link set veth1.2 name eth0
sudo ip netns exec host02 ifconfig eth0 10.0.0.2/24 up
sudo ip netns exec host02 ifconfig lo up

查看

sudo ip netns exec host01 ip a
sudo ip netns exec host02 ip a
sudo ip netns exec host01 ping 10.0.0.2
sudo ip netns exec host02 ping 10.0.0.1

桥接

sudo ip netns add host01
sudo ip netns add host02
sudo ip netns exec host01 ifconfig lo up
sudo ip netns exec host02 ifconfig lo up

sudo ip link add veth1.1 type veth peer name veth1.2
sudo ip link add veth2.1 type veth peer name veth2.2

sudo brctl addbr br0
sudo ip link set br0 up 
sudo brctl addif br0 veth1.1
sudo brctl addif br0 veth2.1
sudo ip link set veth1.1 up 
sudo ip link set veth2.1 up 

sudo ip link set veth1.2 netns host01
sudo ip netns exec host01 ip link set veth1.2 name eth0
sudo ip netns exec host01 ifconfig eth0 10.1.0.1/24 up

sudo ip link set veth2.2 netns host02
sudo ip netns exec host02 ip link set veth2.2 name eth0
sudo ip netns exec host02 ifconfig eth0 10.1.0.2/24 up

删除

sudo ip link set br0 down
sudo brctl delbr br0
sudo ip netns del host01
sudo ip netns del host02
点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消