OpenStack网络指南(5)网络地址转换(Network address translation)

来源:互联网 发布:腾讯云域名没有备案 编辑:程序博客网 时间:2024/04/30 22:07

网络地址转换(NAT)是在分组在传输过程中修改IP分组的报头中的源或目的地地址的过程。 一般来说,发送方和接收方应用程序不知道IP分组正在被操纵。
NAT通常由路由器实现,因此我们将引用执行NAT的主机作为NAT路由器。 但是,在OpenStack部署中,它通常是实现NAT功能的Linux服务器,而不是硬件路由器。 这些服务器使用iptables软件包来实现NAT功能。
NAT有多种变体,这里我们介绍OpenStack部署中常见的三种类型。

SNAT

在源网络地址转换(SNAT)中,NAT路由器修改IP分组中发送方的IP地址。 SNAT通常用于使具有专用地址的主机与公共Internet上的服务器通信。RFC 1918保留以下三个子网作为私有地址:10.0.0.0/8172.16.0.0/12192.168.0.0/16这些IP地址不可公开路由,这意味着公共Internet上的主机不能向这些地址中的任何地址发送IP包。私有IP地址在住宅和企业环境中广泛使用。通常,在具有专用IP地址的主机上运行的应用程序将需要连接到公共Internet上的服务器。一个例子是想要访问诸如www.openstack.org的公共网站的用户。如果IP数据包到达以www.openstack.org为网络服务器的私有IP地址作为源,则Web服务器不能将数据包发送回发送者。SNAT通过将源IP地址修改为可在公共Internet上路由的IP地址来解决此问题。 SNAT有不同的变体;在OpenStack部署使用的形式中,发送方和接收方之间的路径上的NAT路由器将使用路由器的公共IP地址替换数据包的源IP地址。路由器还将源TCP或UDP端口修改为另一个值,并且路由器维护发送方的真实IP地址和端口以及修改的IP地址和端口的记录。当路由器收到具有匹配的IP地址和端口的数据包时,它将它们转换回专用IP地址和端口,并且转发数据包。因为NAT路由器修改端口以及IP地址,所以这种形式的SNAT有时被称为端口地址转换(PAT)。它有时也称为NAT过载。OpenStack使用SNAT使实例内运行的应用程序连接到公共Internet。

DNAT

在目的地网络地址转换(DNAT)中,NAT路由器修改IP分组报头中的目的地的IP地址。OpenStack使用DNAT将数据包从实例路由到OpenStack元数据服务。 在实例中运行的应用程序通过向IP地址为169.254.169.254的Web服务器发出HTTP GET请求来访问OpenStack元数据服务。 在OpenStack部署中,没有具有此IP地址的主机。 相反,OpenStack使用DNAT来更改这些数据包的目标IP,以便它们到达元数据服务正在监听的网络接口。

One-to-one NAT

在一对一NAT中,NAT路由器维护私有IP地址和公共IP地址之间的一对一映射。 OpenStack使用一对一NAT来实现浮动IP地址。
0 0
原创粉丝点击