Linux Network Namespace

Linux Network Namespace 是实现容器化的基础

ip netns 是基于 Linux Network Namespace 的一个实用工具

这里熟悉下 ip netns 的使用,来理解如何 Linux 下的网络虚拟化

创建 1 个虚拟网络

# 创建一个名为 netns1 的 network namespace
sudo ip netns add netns1# 使用 ip netns exec 命令进入 network namespace
sudo ip netns exec netns1 ip link list# 进入 netns1 这个 network namespace ,把设备状态设置成 UP
sudo ip netns exec netns1 ip link set dev lo up# 尝试 ping netns1 这个 network namespace 的 127.0.0.1
sudo ip netns exec netns1 ping 127.0.0.1# 查看系统中有哪些 network namespace
ip netns list# 删除 network namespace
sudo ip netns delete netns1

2 个虚拟网络互通

#!/bin/bash# 创建 network namespace ns0 ns1
sudo ip netns add ns0
sudo ip netns add ns1# 使用 veth pair 创建 2 张虚拟网卡;分别加到 ns0 ns1 wetowrk namespace
sudo ip link add veth0 type veth peer name veth1
sudo ip link set veth0 netns ns0
sudo ip link set veth1 netns ns1# 绑定 ip
sudo ip netns exec ns0 ip link set dev lo up
sudo ip netns exec ns1 ip link set dev lo up
sudo ip netns exec ns0 ifconfig veth0 10.1.1.1/24 up
sudo ip netns exec ns1 ifconfig veth1 10.1.1.2/24 up# 删除 network namespace
sudo ip netns delete ns0
sudo ip netns delete ns1

多个虚拟网络互通

#!/bin/bash### centos
## yum install -y bridge-utils
### ubuntu
## apt-get install -y bridge-utils# 添加网桥 br0
sudo brctl addbr br0# 启动网桥 br0
sudo ip link set br0 up# 创建 network namespace ns0 ns1 ns2
sudo ip netns add ns0
sudo ip netns add ns1
sudo ip netns add ns2# 创建 veth peer
sudo ip link add veth0-ns type veth peer name veth0-br
sudo ip link add veth1-ns type veth peer name veth1-br
sudo ip link add veth2-ns type veth peer name veth2-br# 将 veth 的一端移动到netns中
sudo ip link set veth0-ns netns ns0
sudo ip link set veth1-ns netns ns1
sudo ip link set veth2-ns netns ns2# 绑定 ip
sudo ip netns exec ns0 ip link set dev lo up
sudo ip netns exec ns1 ip link set dev lo up
sudo ip netns exec ns2 ip link set dev lo up
sudo ip netns exec ns0 ifconfig veth0-ns 10.1.1.1/24 up
sudo ip netns exec ns1 ifconfig veth1-ns 10.1.1.2/24 up
sudo ip netns exec ns2 ifconfig veth2-ns 10.1.1.3/24 up# 设置默认路由,可以通宿主机
sudo ip netns exec ns0 route add default gw 10.1.1.254 veth0-ns
sudo ip netns exec ns1 route add default gw 10.1.1.254 veth1-ns
sudo ip netns exec ns2 route add default gw 10.1.1.254 veth2-ns# 将 veth 的另一端启动并挂载到网桥上
sudo ip link set veth0-br up
sudo ip link set veth1-br up
sudo ip link set veth2-br up
sudo brctl addif br0 veth0-br
sudo brctl addif br0 veth1-br
sudo brctl addif br0 veth2-br# 给网桥设置 IP
sudo ip addr add 10.1.1.254/24 dev br0# 删除网桥
sudo ifconfig veth0-br 0
sudo ifconfig veth1-br 0
sudo ifconfig veth2-br 0
sudo brctl delif br0 veth0-br
sudo brctl delif br0 veth1-br
sudo brctl delif br0 veth2-br
sudo ip link set br0 down
sudo brctl delbr br0

其他

  • 暂时没打通虚拟网络如何访问外网
  • 主机重启,以上命令的网络设置会被重置,放心实验

ip netns 命令(备忘)相关推荐

  1. ip netns 命令使用

    ip netns 命令用来管理 network namespace.它可以创建命名的 network namespace,然后通过名字来引用 network namespace,所以使用起来很方便. ...

  2. ip netns命令详解

    原文链接:https://www.cpweb.top/343 一.命令介绍   ip netns 命令是用来管理 网络命名空间 的,网络命名空间可以实现 网络隔离.每个网络命名空间都提供了一个完全独立 ...

  3. KVM 虚拟机 virsh 命令备忘单

    这是一个全面的 virsh 命令备忘单: virsh 是 KVM 虚拟机的命令管理用户界面.virsh 可用于创建.暂停.重新启动和关闭域.此外,virsh 可用于列出您的虚拟化管理程序平台中可用的当 ...

  4. linux unshare 命令,Linux ip netns 命令

    /var/run/netns/ 目录下的一个对象.比如有一个名称为 net1 的 network namespace 对象,则可以由打开 /var/run/netns/net1 对象产生的文件描述符引 ...

  5. freedos 常用命令_庆祝FreeDOS 24周年:有用的命令备忘单

    freedos 常用命令 FreeDOS在6月29日满24岁. FreeDOS是一个完整的,免费的,与DOS兼容的操作系统,您可以使用它来玩经典的DOS游戏 , 运行商务软件或开发嵌入式系统. 在MS ...

  6. RedHat Yum 命令备忘单

    Yum 是Red Hat和基于 Red Hat 的 Linux 发行版中的包管理器,它允许您管理 Red Hat 系统上软件的各个方面. 你不会在这里详细学习 Yum 命令,相反,这个 Yum 备忘单 ...

  7. 一些比较少用但比较有用的linux命令备忘

    网络相关 ssh 反向代理 ssh -fCNR 10000:localhost:22 userB@B.B.B.B B.B.B.B是一个外网机器B的IP ssh -p 10000 userA@local ...

  8. mysql 命令备忘

    一.常用基本命令 1.去重查询 select count(*) from tablename; select count(distinct(pid)) from tablename;  //disti ...

  9. 我的awk常用命令备忘 xargs备忘

    kubectl get deployment -n coding |awk '{print $1}' |xargs kubectl rollout restart deployment -n codi ...

最新文章

  1. ADO winform注册
  2. C# 系统应用之Cookie\Session基础知识及php读取Cookie\Session
  3. MOV及MP4文件格式中几个重要的Table
  4. Module的加载实现
  5. 使用VSTS为ASP.NET Core构建DevOps CI/CD管道
  6. django组件-cookie与session
  7. MyBatis mysql 字符串拼接
  8. 解决macOS Big Sur升级后部分java应用无法打开的问题JavaVM: Failed to load JVM: libserver.dylib
  9. 回归创业本质:生意的本质就是赚钱
  10. Orcad Capture CIS出BOM表
  11. 职场技巧:高效实用的四象限法则
  12. DFS(深度优先搜索)和BFS(广度优先搜索)求迷宫路径问题的总结
  13. php 处理png图片白色背景色改为透明色
  14. V8引擎如何回收内存以及如何优化
  15. 秒杀Excel的动态可视化报表,不用学python,用它仅需10分钟
  16. L1-079 天梯赛的善良 - java
  17. 彻底弄清补码加减法运算,正数、负数位移运算原理
  18. word中目录出现省略号疏密不一致
  19. 对麦克斯韦方程组的理解(非常详细)
  20. Excel中按颜色求和,一键完成。可以按背景色求和也可以按条件格式颜色求和

热门文章

  1. Java JDK1.8 List 去重
  2. CSS--box-shadow
  3. 英灵神殿服务器linux,Valheim英灵神殿linux版本更新教程 服务器内游戏更新方法
  4. 谷歌浏览器使用不了,报错误“ STATUS_INVALID_IMAGE_HASH”
  5. 流畅看1080p、2k、4k视频需要多大带宽?
  6. 2022款惠普战99和联想拯救者R9000K 区别 哪个好详细性能配置对比
  7. 产品经理如何与G端领导沟通
  8. 小组问题解决8D - 为什么需要8D?
  9. python api 文档查看方式
  10. Linux JDK Tomcat 安装配置