前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何实现一个虚拟路由器

如何实现一个虚拟路由器

作者头像
虚拟化云计算
发布2019-11-18 22:05:06
1.8K0
发布2019-11-18 22:05:06
举报
文章被收录于专栏:虚拟化云计算

本文通过linux网络虚拟化的基础功能NameSpace、veth pair、bridge、tap实现一个路由器的最小模型,从而实现云计算环境下处于不同网段的虚拟机可以跨网段互通。

虚拟网卡Tun/tap驱动是一个开源项目,tap表示虚拟的是以太网设备,在 Linux 中通常使用 tap设备来实现虚拟网卡,使用 Linux Bridge 来实现虚拟交换机。

Network NameSpace 是实现网络虚拟化的重要功能,它能创建多个隔离的网络空间,每个 Network Namespace 有自己独立的网卡、路由表、ARP 表、iptables 等和网络相关的资源。

一个网络设备只能位于一个Network NameSpace中,而位于不同NameSpace中的设备可以通过veth pair进行通讯,veth pair 就是一对的虚拟设备,从一 端进入的数据包都将从另一端出来,通常在两个NameSpace 之间充当桥梁作用。

在实践之前先基于物理网卡创建一个网桥,这里取网桥名为br_mgmt。

创建一个Namespace

# ip netns add ns_router

创建一对veth pair的tap设备,并把一端放入ns_router中,把另一端加入网桥br_mgmt

创建tap0_router和tap0_peer

# ip link add tap0_router type veth peer name tap0_peer

把tap0_router放入ns_router

# ip link set tap0_router netns ns_router

把tap0_peer加入网桥

# brctl addif br_mgmt tap0_peer

创建另一对veth pair的tap设备,并把一端放入ns_router中,把另一端加入网桥br_mgmt

创建tap1_router和tap1_peer

# ip link add tap1_router type veth peer name tap1_peer

把tap1_router放入ns_router

# ip link set tap1_router netns ns_router

把tap1_peer加入网桥

# brctl addif br_mgmt tap1_peer

将四个tap设备UP

# ifconfig tap0_peer up

# ifconfig tap1_peer up

# ip netns exec ns_router ifconfig tap0_router up

# ip netns exec ns_router ifconfig tap1_router up

在ns_router中设置ip作为两个网段的网关

# ip netns exec ns_router ip addr add local 192.168.0.1/24 dev tap0_router

# ip netns exec ns_router ip addr add local 192.168.1.1/24 dev tap1_router

后面虚拟机使用192.168.0.1/24这个网段和192.168.1.1/24这个网段,并把192.168.0.1和192.168.1.1作为各自网段的网关。在网桥br_mgmt上创建虚拟机,在上面192.168.0.1/24和192.168.1.1/24这两个网段内的虚拟机可以跨网段通信。

整个系统的网络拓扑图如下:

这里虚拟机192.168.0.88和虚拟机192.168.1.88之间是可以相互通讯的。

查看ns_router内部的路由表:

# ip netns exec ns_router route -n

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 tap0_router

192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 tap1_router

可以看到NameSpace ns_router充当了两个网段的路由角色。但是这个架构还不能实现VLAN网络隔离和内网路由到外网以及分布式路由的功能。


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 虚拟化云计算 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档