网络地址转换协议NAT

NAT 是什么?

NAT (Network Address Translation, 网络地址转换) 是1994年提出的。
当在专用网内部的一些主机本来已经分配了本地的IP地址 (即仅在本专用网内使用的专用地址),但现在又想和因特网上的主机通讯时,则可以使用NAT方法。

该方法需要专用网连接到因特网的路由器上安装NAT软件。装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。
所有使用本地地址的主机在和外界通讯时,都要在NAT路由器上将本地地址转换成全球IP地址,才能和因特网连接。

NAT 的功能

NAT不仅能解决IP地址不足的问题,还能有效避免来自网络外部的攻击,隐藏并保护网络内部的计算机。把内网的私有地址,转换成外网的共有地址。
使得内部网络上的主机可以访问因特网。

  • 宽带分享: 这是NAT主机的最大功能
  • 安全防护: NAT 之内的PC联机到 Internet 上面时,它所显示的IP是 NAT主机的公共IP,所以Client 端的PC 当然就具有一定程度的安全性,
    外界进行端口扫描侦测不到源客户端的 PC。

NAT 分类

名称 作用 场景
Basic 网络地址转换,只转化IP, 不映射端口
PAT 端口地址转换,转化IP和映射端口,可用于多个内部地址映射到少量 (甚至一个)外部地址
静态 将内部网络中的每个主机永久映射成外网中的 多用于服务端
动态 在外部网络中定义一个或多个合法地址,采用动态分配的方法映射到内部网络

NAT 弊端

在一个具有NAT功能的路由器下的主机并没有建立真正的端对端连接,并不能参与一些因特网协议。一些需要初始化从外部网络建立TCP连接,和使用无状态协议
(比如UDP)的服务将被中断。除非NAT路由器做一些具体的工作,否则送来的数据包不能到达正确的目的地址。(一些协议有时可以在应用层网关的辅助下,在
参与NAT主机之间容纳一个NAT的实例,比如FTP)NAT也会使安全协议变得复杂。

  • NAT违反了IP地址结构模型的设计原则。IP地址结构模型的基础是每个IP地址均标识了一个网络的连接。Internet的软件设计就是建立在这个前提之上,而NAT
    使得有很多主机可以使用相同的地址。
  • NAT使得IP协议从面向无连接变成面向连接。NAT必须维护专用IP地址与公网IP地址以及端口号的映射关系。在TCP/IP协议体系中,如果一个路由器出现故障,
    不会影响到TCP协议的执行,因为会触发超时重传机制。而当存在NAT时,最初设计的TCP/IP协议过程发生改变,Internet变得脆弱。
  • NAT违反了基本的网络分层结构模型的设计原则。在传统的网络分层结构模型中,第N层是不能修改第N+1层的报头内容的。NAT破坏了这种各层独立的原则。
  • 有些应用将IP地址插入到正文的内容中,例如标准的FTP协议IP Phone协议H.323。 如果NAT与这一类协议一起工作,那么NAT协议需要做一定的修正。
    同时网络的传输层也可能使用TCP与UDP协议之外的其他协议,那么NAT协议必须知道并且做出相应的修改。由于NAT的存在,使得P2P应用实现出现困难,
    因为P2P的文件共享与语音共享都是建立在IP协议的基础上的。
  • NAT同时存在对高层协议和安全性的影响问题。RFC对NAT存在的问题进行了讨论。NAT的反对者认为这种临时性的缓解IP地址短缺的方案推迟了IPV6的迁移进程,
    并没有解决深层次的问题,他们认为是不可取的。