一、NAT介绍
NAT(网络地址转换)就是替换IP报文头部的地址信息。NAT通常部署在一个组织的网络出口位置,通过将内部网络IP地址替换为出口的IP地址提供公网可达性和上层协议的连接能力。
理解上面这句定义,首先要能明白两个问题:
- 什么是内部网络IP
- 为什么要进行一个IP替换
内部网络IP
理解公有IP和私有IP首先要知道下,IP分类:
IP地址被分为5类:A类、B类、C类、D类、E类。
其中,在在 A、B、C 分类地址,实际上有分公有 IP 地址和私有 IP 地址。
而内部网络IP就是私有IP,网上一搜就有
为什么要进行一个IP替换
- IP数量有限
- 当更换ISP需要重新编址
二、NAT工作原理
RFC1918规定了三个保留地址段落:10.0.0.0-10.255.255.255;172.16.0.0-172.31.255.255;192.168.0.0-192.168.255.255。这三个范围分别处于A,B,C类的地址段,不向特定的用户分配,被IANA作为私有地址保留。这些地址可以在任何组织或企业内部使用,和其他Internet地址的区别就是,仅能在内部使用,不能作为全球路由地址。这就是说,出了组织的管理范围这些地址就不再有意义,无论是作为源地址,还是目的地址。对于一个封闭的组织,如果其网络不连接到Internet,就可以使用这些地址而不用向IANA提出申请,而在内部的路由管理和报文传递方式与其他网络没有差异。
如下图,其中的所以4个接口都具有相同的网络地址10.0.0.0/24,地址空间10.0.0.0/8用于了家庭网络。
如下图,一个用户坐在家庭网络主机10.0.0.1后,请求IP地址为128.119.40.186的某台Web服务器(端口80)上的一Web页面。主机10.0.0.1为其指派了(任意)源端口号3345并将该数据报发送到LAN中。NAT路由器收到该数据报,为该数据报生成一个新的源端口号5001,将源IP替代为其广域网一侧接口的IP地址138.76.29.7,且将源端口3345更换为新端口5001。当生成一个新的源端口号时,NAT路由器可选择任意一个当前未在NAT转换表中的源端口号。路由器中的NAT也在它的NAT转换表中增加一项。Web服务器并不知道刚到达的包含HTTP请求的数据报已被NAT路由器进行了改装,它会发回一个响应报文,其目的地址是NAT路由器的IP地址,其目的端口是5001。当该报文到达NAT路由器时,路由器使用目的IP地址与目的端口号从NAT转换表中检索出家庭网络浏览器使用的适当IP地址(10.0.0.1)和目的端口号(3345)。于是,路由器重写该数据报的目的IP与目的端口号,并向家庭网络转发该数据报
对于有Internet访问需求而内部又使用私有地址的网络,就要在组织的出口位置部署NAT网关,在报文离开私网进入Internet时,将源IP替换为公网地址,通常是出口设备的接口地址。一个对外的访问请求在到达目标以后,表现为由本组织出口设备发起,因此被请求的服务端可将响应由Internet发回出口网关。出口网关再将目的地址替换为私网的源主机地址,发回内部。这样一次由私网主机向公网服务端的请求和响应就在通信两端均无感知的情况下完成了。依据这种模型,数量庞大的内网主机就不再需要公有IP地址了。如上中间的路由器就被部署了NAT网关。
由上可以得出:
- 网络被分为私网和公网两个部分,NAT网关设置在私网到公网的路由出口位置,双向流量必须都要经过NAT网关
- L网络访问只能先由私网侧发起,公网无法主动访问私网主机;
- NAT网关在两个访问方向上完成两次地址的转换或翻译,出方向做源信息替换,入方向做目的信息替换;NAT网关的存在对通信双方是保持透明的;
- NAT网关为了实现双向翻译的功能,需要维护一张关联表(NAT转换表),把会话的信息保存下来。