OpenStack的网络

wuchangjian2021-11-14 15:39:46编程学习

网络模块Neutron

两种ip,五种拓扑,三种网络

二层交换器的抽象方式:Linux bridge或者Open vSwitch

Linux bridge工作在二层的虚拟网络设备,功能类似物理的交换机(如下图的br0)

Open vSwitch也可以实现对二层网络的抽象,但功能不止这一点

虚拟路由器是对网络设备的一种抽象,实现原理和真实路由器一致,是根据路由表转发数据包,同时还支持NAT地址转换以及浮动ip地址设置

二层网络通过虚拟局域网对租户网络进行隔离

三层网络通过命名空间进行隔离

命名空间 每个命名空间都有自己的独立网络栈,包括路由表、防火墙规则、网络接口等,不同的命名空间的网络地址允许重叠

浮动ip 虚拟路由器会启用SNAT功能,SNAT是共享一个IP接入lnternel

但是启用NAT功能后,只能虚拟机访问外部网络,但阻止了外部网络访问虚拟机,可以通过NAT地址映射通过目标地址转换的方式实现外部网络访问内部虚拟机,配置NAT地址映射需要在虚拟路由器外部接口配置相应的外部网络地址池,这些地址池里的地址就是浮动ip地址,如果虚拟机不需要外部网络访问,可以不绑定浮动ip

Local网络

没有绑定任何物理网卡,同一个local网络的虚拟机连接在相同的虚拟交换机上,实例之间可以通信,不同local的不能进行通信。下图vm1和vm2可以通信,vm3不能与vm1或者vm2通信

Flat网络

每个flat网络独占一个ip地址,所有在这个网络中的虚拟机共享一个私有ip网段

vm1和vm2连接Linux bridge1,两者可以相互通信并通过ens2访问外网

 一个Flat网络

租户的网络被限制在虚拟交换机1、2、3中

 vlan网络

存在4096个虚拟局域网的限制,

vxlan网络

使用的是隧道技术,租户数量从4096到16777216个,租户内部通信可以跨越任意ip网络

 新建网络:在管理员处建立public 在项目里面新建private

 新建路由:将上面两个网络连接起来,新建路由默认开启SNAT功能

新建实例:绑定private,打开实例无法ping通百度

前面创建外部网络时,指定的外部网络网关地址是172.16.1.1,那么需要该网关存在

执行

ifconfig br-ex 172.16.1.1 netmask 255.255.255.0 up

宿主机的br-ex用于连接OpenStack虚拟网络,虚拟网络访问互联网必须经过宿主机的真实网卡,宿主机在br-ex和真实网卡之间转发流量有三种方式

1、将物理网卡加入br-ex网桥,取消物理网卡配置的ip地址,配置br-ex

2、开启宿主机的路由功能,通过路由转发数据,同时配置宿主机的回路路由

3、配置宿主机的NAT功能,通过路由加地址转换转发数据,不需要回包路由,不需要修改现有网段

使用第三种方法,添加一条nat规则,为了避免重启后规则消失,可将其写到iptables配置文件中,注意enp0s3需要使用自己的物理网卡

iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o enp0s3 -m comment --comment "000 nat" -j MASQUERADE

绑定浮动ip地址

默认创建的虚拟路由器连接外部网络后默认启动SNAT功能,如果访问NAT设备背后的网络,需要配置NAT映射或目标地址转换实现,也就是需要配置浮动ip地址

 

 添加安全组规则

一些零散知识:

1、如果不希望网络的虚拟机通过网络访问其他网络,可以勾选禁用网关

2、DNS地址的设置通常是真是的DNS服务器地址

3、路由器连接两个接口后将会在两个接口所在的网络之间进行转发数据

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。