网站首页 > 精选文章 正文
简介
network namespace 是实现网络虚拟化的重要功能,可以创建多个隔离的网络空间,各自拥有独立的网络栈信息。
network namespace 是 linux 内核提供的功能。
veth pair
顾名思义,veth-pair 就是一对的虚拟设备接口,它都是成对出现的。一端连着协议栈,一端彼此相连,如图所示:

veth pair 示意图
正因为有这个特性,它常常充当着一个桥梁,连接着各种虚拟网络设备,典型的例子像“两个 namespace 之间的连接”,“Bridge、OVS 之间的连接”,“Docker 容器之间的连接” 等等,以此构建出非常复杂的虚拟网络结构,比如 OpenStack Neutron。
创建 network namespace
我们的操作均基于 ip 命令,一般系统会默认安装,如果没有的话,请自行安装。
network namespace 有关的操作都是在子命令 ip nents 下进行的。在操作前,我们需要获取 root 权限,便于创建 network namespace。
sudo -i
默认情况下,使用 ip netns 是没有网络 namespace 的。我们先创建两个 network namespace。
[root@localhost ~]ip netns add net0
[root@localhost ~]ip netns add net1
查看 network namespace 的情况。
[root@localhost ~]ip netns ls
ip netns 命令创建的 network namespace 会出现在 /var/run/netns/ 目录下。
同一子网内的通信
接下来我们需要创建veth pair,veth pair 是成对出现的,删除一个时,另一个也会随之删除。
[root@localhost ~]ip link add eth0 type veth peer name eth1
查看 veth 的情况。
[root@localhost ~]ip link
将 veth 添加到 network namespace 中。
[root@localhost ~]ip link set eth0 netns net0
[root@localhost ~]ip link set eth1 netns net1
设置 IP 地址,这里我们先设为同一子网内的地址。
[root@localhost ~]ip netns exec net0 ip link set eth0 up
[root@localhost ~]ip netns exec net0 ip addr add 10.0.0.1/24 dev eth0
[root@localhost ~]ip netns exec net1 ip link set eth1 up
[root@localhost ~]ip netns exec net2 ip addr add 10.0.0.2/24 dev eth1
用 ping 检查两个 network namespace 是否可以通信。
[root@localhost ~]ip netns exec net0 ping -c 3 10.0.0.2
跨子网间的通信
这里我们将 IP 地址设为不同子网下的。
[root@localhost ~]ip netns exec net0 ip link set eth0 up
[root@localhost ~]ip netns exec net0 ip addr add 10.0.0.1/24 dev eth0
[root@localhost ~]ip netns exec net1 ip link set eth1 up
[root@localhost ~]ip netns exec net2 ip addr add 10.0.1.1/24 dev eth1
需要借助路由去进行跨子网间通信,下一步就是设置路由。
[root@localhost ~]ip netns exec net0 ip route add default via 10.0.0.1
[root@localhost ~]ip netns exec net1 ip route add default via 10.0.1.1
最后用 ping 检查是否可以通信。
[root@localhost ~]ip netns exec net0 ping -c 3 10.0.1.1
[root@localhost ~]ip netns exec net1 ping -c 3 10.0.0.1
- 上一篇: 怎么用ip命令在linux中添加路由表项?
- 下一篇: 如何将linux 做成一台路由器
猜你喜欢
- 2024-12-17 CentOS7 设置静态路由
- 2024-12-17 ecmp等价路由
- 2024-12-17 如何将一台Linux做成一个网关
- 2024-12-17 如何将linux 做成一台路由器
- 2024-12-17 怎么用ip命令在linux中添加路由表项?
- 2024-12-17 route add 在服务器通过静态路由配置双网关案例
- 2024-12-17 Linux route命令用法(重写)
- 2024-12-17 【Linux】你必须掌握的Linux网络配置常用基础命令
- 2024-12-17 给主机的一个网卡设置多个IP的思路
- 2024-12-17 linux的网络地址的配置
- 最近发表
- 标签列表
-
- 向日葵无法连接服务器 (32)
- git.exe (33)
- vscode更新 (34)
- dev c (33)
- git ignore命令 (32)
- gitlab提交代码步骤 (37)
- java update (36)
- vue debug (34)
- vue blur (32)
- vscode导入vue项目 (33)
- vue chart (32)
- vue cms (32)
- 大雅数据库 (34)
- 技术迭代 (37)
- 同一局域网 (33)
- github拒绝连接 (33)
- vscode php插件 (32)
- vue注释快捷键 (32)
- linux ssr (33)
- 微端服务器 (35)
- 导航猫 (32)
- 获取当前时间年月日 (33)
- stp软件 (33)
- http下载文件 (33)
- linux bt下载 (33)