首页 » OpenStack系统架构设计实战 » OpenStack系统架构设计实战全文在线阅读

《OpenStack系统架构设计实战》4.1.10 NAT地址转换

关灯直达底部

NAT(Network Address Translation)是指在数据包传递过程中,修改IP报头中的源或者目的IP地址的过程。通常情况下,应用的发送者或者接收者不知道IP包是否被修改。

NAT功能经常通过路由器来实现,因此可以将执行NAT转换的主机看成NAT路由器。但是在OpenStack部署中,典型案例是通过Linux服务器执行NAT功能而不是硬件路由器,该服务器使用iptables软件来实现NAT功能。

在OpenStack环境中,有以下3种类型的NAT转换。

1.SNAT

SNAT即源网络地址转换(Source Network Address Translation),这个NAT路由器修正IP包报头中的源IP地址。SNAT功能通常用于让只具有私有IP地址的主机能够访问外网。比如,多个PC使用路由器共享上网,每个PC都配置了内网IP,PC访问外部网络时,路由器将数据包报头中的源地址替换成路由器的IP,当外部网络的服务器,比如网站Web服务器接到访问请求的时候,它的日志记录下来的是路由器的IP,而不是PC的内网IP,这是因为,这个服务器收到的数据包报头里面的“源地址”已经被替换了。因此叫作SNAT,基于源地址的地址转换。

2.DNAT

DNAT即目的网络地址转换(Destination Network Address Translation),这个NAT路由器修正IP包报头中的目的IP地址。典型的应用是,有个Web服务器放在内网以配置内网IP,前端有个防火墙配置公网IP,互联网上的访问者使用公网IP来访问这个网站,当访问的时候,客户端发出一个数据包,这个数据包的报头里边,目标地址写的是防火墙的公网IP,防火墙会把这个数据包的报头改写一次,用目标地址改写Web服务器的内网IP,然后再把这个数据包发送到内网的Web服务器上。这样,数据包就穿透了防火墙,并从公网IP变成了一个对内网地址的访问了。

3.一对一NAT

在一对一NAT地址转换中,NAT路由器维护私有IP地址和外网IP地址的一对一映射关系。OpenStack使用一对一NAT功能实现浮动IP地址功能。