【Linux 网络】NAT技术——缓解IPv4地址不足

NAT技术

  • [NAT 技术背景](#NAT 技术背景)
  • [NAT IP转换过程](#NAT IP转换过程)
  • NAPT
  • [NAT 技术的缺陷](#NAT 技术的缺陷)

NAT(Network Address Translation,网络地址转换)技术,是解决IP地址不足的主要手段,并且能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。

NAT 技术背景

在IPv4协议中,IP地址数量不足是一个大问题,而NAT技术就是当前解决IP地址不够用的主要手段,是路由器的一个重要功能。

  • 在进行对外通信时,NAT能够将私有IP经过一系列替换操作最终转为全局IP,也就是说,NAT是一种将私有IP和全局IP相互转化的技术方法。
  • 装有NAT软件的路由器叫做NAT路由器,所有使用私有IP的主机在和外界通信时,都要在NAT路由器上将其私有IP转换成全局IP。
  • 很多学校、家庭、公司内部每个终端设置的IP都是私有IP,而只在路由器或必要的服务器上设置全局IP。
  • 全局IP要求唯一,但是私有IP不需要,在不同的局域网中出现相同的私有IP是完全不影响的。

NAT IP转换过程

假设某个局域网当中有三个客户端,在公网中有一台服务器,以客户端A访问服务器为例,让我们看一下IP地址的变换过程。

注意: 这里仅考虑的是只有一台客户端给服务器发报文的情况。

数据包从局域网到公网过程

  • 首先 数据包当中的源IP地址就是主机A的IP地址,目标地址为服务器的地址。
  • 然后数据包经过NAT路由器器时,其中的源IP地址会被转换。也就是由LAN口IP地址转换为WAN口IP地址,此时源IP地址和目的IP地址都是公网的IP地址。
  • 最后该数据包可能经过各种路由转发,最终到达服务器主机

Lan口的IP地址是你本地的(局域网)的IP地址,一般由路由器自动分配

wan口的 IP 地址是你的服务运营商在你联通Internet后,分配给你的IP地址
数据包从公网到局域网的过程

服务器向主机A进行响应的过程也要进行相应的IP地址转换,不过这次转换的是目的IP地址。

  • 首先,数据包当中包含了源IP地址和目的IP地址,目的IP地址是WAN口IP地址
  • 然后,可能经过互联网中的各种路由转发,到达主机A所在局域网的NAT路由器时,目的IP地址被转换,由WAN口IP转换成了LAN口IP,也就是主机A的私有IP地址。
  • 最后,路由器就会将该数据包转发给局域网当中的主机A

NAT路由器将源地址从10.0.0.10替换成全局的IP 202.244.174.37;

NAT路由器收到外部的数据时, 又会把目标IP从202.244.174.37替换回10.0.0.10;

在NAT路由器内部, 有一张自动生成的, 用于地址转换的表;

当 10.0.0.10 第一次向 163.221.120.9 发送数据时就会生成表中的映射关系;

NAPT

NAPT(Network Address Port Translation),即网络地址端口转换,可以将多个内部地址映射为一个合法公网地址。

上面的情况都是局域网内只有一台主机访问外网的服务器,如果局域网内, 有多个主机都访问同一个外网服务器, 那么对于服务器返回的数据中, 目的IP都是相同的. 那么NAT路由器如何判定将这个数据包转发给哪个局域网的主机?

这时候NAPT来解决这个问题了. 使用IP+port来建立这个关联关系

比如局域网中主机A和主机B都在访问同一个服务器,并且它们访问服务器时采用的端口号都是1025.

  • 假设主机A发送的数据包先到达路由器,此时路由器将数据包的源IP地址转化成WAN口IP地址,由于端口号1025没有被使用,所以在转换表中,维护了源IP地址和端口号所对应的映射关系。
  • 当主机B发送的数据包也到达路由器后,路由器将数据包的源IP地址转化成WAN口IP地址,由于端口号1025被主机A使用了,所以端口号使用1026,转换表中,维护了源IP地址和端口号所对应的映射关系。

这张转换表每一个元素从左到右,从右到左的映射关系都是唯一的。

  • 当服务器接收到主机A报文和主机B的报文时,虽然源IP地址都是一样的,但是转换表中的映射的端口号不一样,服务器就能区分哪一个报文是主机A发的,哪一个是主机B发的。
  • 当服务器要给客户端进行响应时,虽然再经过路由器转换后,IP地址都是一样的,但是路由器可以端口号的不同,来决定这次响应该转发给谁。

这种关联关系也是由NAT路由器自动维护的. 例如在TCP的情况下, 建立连接时, 就会生成这个表项; 在断开连接后, 就会删除这个表项

NAT 技术的缺陷

由于NAT依赖这个转换表, 所以有诸多限制:

  • 无法从NAT外部向内部服务器建立连接(NAT穿透技术可以做到);

  • 装换表的生成和销毁都需要额外开销;

  • 通信过程中一旦NAT设备异常, 即使存在热备, 所有的TCP连接也都会断开;

相关推荐
ZY小袁2 分钟前
MGRE综合实验
服务器·网络·笔记·网络安全·学习方法·信息与通信·p2p
一位搞嵌入式的 genius5 分钟前
暑期自学嵌入式——Day10(C语言阶段)
linux·笔记·学习·嵌入式c语言
被遗忘的旋律.8 分钟前
Linux驱动开发笔记(五)——设备树(上)
linux·驱动开发·笔记
conkl3 小时前
构建 P2P 网络与分布式下载系统:从底层原理到安装和功能实现
linux·运维·网络·分布式·网络协议·算法·p2p
求知若渴,虚心若愚。4 小时前
Error reading config file (/home/ansible.cfg): ‘ACTION_WARNINGS(default) = True
linux·前端·ansible
笙囧同学5 小时前
基于大数据技术的疾病预警系统:从数据预处理到机器学习的完整实践(后附下载链接)
大数据·网络·机器学习
beyoundout6 小时前
HAproxy
linux·运维·服务器
盖雅工场7 小时前
零工合规挑战:盖雅以智能安全体系重构企业用工风控
网络·安全·重构
厦门辰迈智慧科技有限公司8 小时前
排水管网实时监测筑牢城市安全防线
网络·物联网·安全·自动化·监测
Jie_179 小时前
【linux】高可用集群Keepalived
linux·运维·服务器