「NAT」- 网络地址转换,Network Address Translation

  CREATED BY JENKINSBOT

问题描述

随着互联网发展和网络应用的增多,IPv4 地址枯竭已经成为制约网络发展的瓶颈。

解决方案

NAT,Network Address Translation,网络地址转换技术,主要用于实现位于 内部网络的主机访问外部网络的功能。当局域网内的主机需要访问外部网络时,通过 NAT 技术能够将其私网地址转换为公网地址,并且多个私网用户能够共用同个公网地址,这样既可保证网络互通,又节省了公网地址。

尽管 IPv6 可以从根本上解决 IPv4 地址空间不足的问题,但目前众多的网络设备和网络应用仍是基于 IPv4 的,迁移将带来大量的工作。因此在 IPv6 广泛应用之前,这种过渡技术的使用是解决地址短缺的主要技术手段。

应用场景

企业或家庭使用私有网络,使用私有地址;运营商使用公共网络,使用公有地址;
NAT 一般部署在连接内网和外网的网关设备上;

原理简述

NAT,网络地址转换,将重写数据包中的 源地址 或 目的地址,用于解决地址短缺的问题。它的主要原理是,在网络中的多台主机,通过共享同个公网地址来访问外网资源。同时,由于 NAT 屏蔽了内网网络,自然也就为局域网中的机器提供了安全隔离。

网络地址转换的分类(根据实现分类)

根据实现方式的不同,网络地址转换能够分为如下类别:

Static NAT,静态地址转换:内网地址 与 公网地址 是一对一的永久映射关系
1)一个公网地址只会分配给唯一且固定的内网主机;

Dynamic NAT,动态地址转换:从公网地址池中,动态选择一个 公网地址 映射到 内网地址
1)Dynamic NAT 基于地址池来实现私有地址和共有地址的转换;
2)但是与 Static NAT 相似,在某个时刻,同个地址只能被某个内网主机使用;

Network Address and Port Translation,NAPT,网络地址及端口转换
1)即把内网地址映射到相同公网地址,但是不同端口上,以使多个内网地址能够共享同个公网地址;
2)该方案也是从地址池中选择公网地址(当然,我们也能够设置地址池仅有 1 个地址);
3)这是最常用的方案;

Easy IP:是 NAPT 的升级版,将多个内部地址映射到网关出接口地址上的不同端口
1)在网络建立连接时(在进行 NAT 转换时),动态获取出取接口的网络地址,而非使用固定的网络地址池;
2)比如在 PPPoE 或 DHCP 中,无法预知网络地址,所以在进行 NAT 转换时,需要读取分配给网关接口的地址;
3)比 NAPT 的应用更加广泛:家用路由器通过 PPPoE 上网时,便是使用 Easy IP 模式;

NAT Server:在公网地址上,映射某个特定端口,允许外部访问
1)使外网用户能够访问内网服务器,但是仅能访问该服务器的特定端口;
2)其对 Static NAT 相比,Static NAT 则是将整个地址分配给特定主机,等同于开放内网主机所有端口;

网络地址转换的分类(根据方式分类)

根据转换方式的不同,网络地址转换能够分为如下类别:

Source NAT,SNAT,源地址转换:目的地址不变,只替换 源地址 或 源端口
1)Static NAT、Dynamic NAT、NAPT、Easy IP 都是对源地址转换,属于 SNAT 类型;

Destination NAT,DNAT,目的地址转换:源地址保持不变,替换 目的地址 或 目的端口
1)NAT Server 属于 DNAT 类型,即修改数据包的目的地址(使其为内网主机地址)

双向地址转换:同时使用 SNAT 和 DNAT 转换规则
1)当接收到网络包时,执行 DNAT,把目的地址转换为内网地址;
2)而在发送网络包时,执行 SNAT,把源地址替换为外部地址

关于 SNAT 缩写:
1)通常,SNAT 是 Source NAT 的缩写;
2)但是 stateful NAT、static NAT、secure NAT 也缩写为 SNAT,而它们是不同的技术,不能混为一谈;

配置使用

通过 iptables 实现 NAT 转换:NAT with iptables

华为路由器,配置 NAT 转换:Huawei VRP (NAT)

参考文献

Network address translation – Wikipedia
41 | 案例篇:如何优化 NAT 性能?(上)