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

这篇具有很好参考价值的文章主要介绍了【Linux 网络】NAT技术——缓解IPv4地址不足。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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地址的变换过程。

注意: 这里仅考虑的是只有一台客户端给服务器发报文的情况。
【Linux 网络】NAT技术——缓解IPv4地址不足,Linux,网络,linux,智能路由器,IPv4,NAT

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

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

Lan口的IP地址是你本地的(局域网)的IP地址,一般由路由器自动分配
wan口的 IP 地址是你的服务运营商在你联通Internet后,分配给你的IP地址

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

服务器向主机A进行响应的过程也要进行相应的IP地址转换,不过这次转换的是目的IP地址。
【Linux 网络】NAT技术——缓解IPv4地址不足,Linux,网络,linux,智能路由器,IPv4,NAT

  • 首先,数据包当中包含了源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来建立这个关联关系

【Linux 网络】NAT技术——缓解IPv4地址不足,Linux,网络,linux,智能路由器,IPv4,NAT
比如局域网中主机A和主机B都在访问同一个服务器,并且它们访问服务器时采用的端口号都是1025.

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

【Linux 网络】NAT技术——缓解IPv4地址不足,Linux,网络,linux,智能路由器,IPv4,NAT
这张转换表每一个元素从左到右,从右到左的映射关系都是唯一的。

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

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

NAT 技术的缺陷

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

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

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

  • 通信过程中一旦NAT设备异常, 即使存在热备, 所有的TCP连接也都会断开;文章来源地址https://www.toymoban.com/news/detail-685918.html

到了这里,关于【Linux 网络】NAT技术——缓解IPv4地址不足的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机网络实验之IPV4地址 - - 构造超网(无分类编址)

    本实验把通信网络分为四个子网: ​ 第一个子网:主机0、主机1、交换机0、路由器的端口0 ​ 第二个子网:主机2、主机3、交换机1、路由器的端口1 ​ 第三个子网:路由器0的端口2和路由器1的端口0 ​ 第四个子网:路由器的端口1和主机4 让主机0去Ping主机1 ​ 可见,由于他们

    2024年02月11日
    浏览(38)
  • 软考系分之计算机网络IP地址的表示(IPv4及IPv6)

      本篇介绍计算机网络中的IP地址,在网络工程师的考试中,IP地址是必考内容,但是在系统分析师的考察中,IP地址的考查重点,应该就是IPv4和IPv6的相关概念和IPv4中简单的子网划分计算了。 2.1 IPv4分类表示   IP地址中,机器存放IPv4是32位二进制代码,每隔8位插一个空格

    2024年01月18日
    浏览(49)
  • 计网第四章.网络层—网络层概述、IPv4地址及路由器查表转发

    以下来自湖科大 计算机网络 公开课笔记 一、网络层概述 网络层开始,就是讲网络与网络之间的故事了。 如下是路由器将多个网络N1到N7连接在一起,一个路由器有多个网络端口,每个端口的IP地址都不相同,而且同一个子网下并不只是最后一个数不同: 1.1 网络层主要解决的

    2024年02月01日
    浏览(71)
  • 如何在 Linux 中进行网络地址转换 (NAT)?

    网络地址转换(Network Address Translation,简称NAT)是一种在网络中使用的技术,它允许将私有网络中的IP地址映射到公共网络上,从而实现多个设备共享单个公共IP地址。在Linux系统中,我们可以使用一些工具和配置来实现网络地址转换。 本文将详细介绍如何在Linux中进行网络地

    2024年02月06日
    浏览(41)
  • iPXE 学习 部署Linux/Windows系统 支持IPv4/IPv6

    折腾了一周的iPXE,大概弄明白了,ipxe原理 文件的具体作用就不讲了 自己也半懂不懂 不过有一说一 这可能是全网最完全的iPXE环境部署了 记录自己操作的每一个步骤 ┭┮﹏┭┮ 为了支持legacy BIOS 以及 UEFI 还要同时支持IPv4/IPv6 我先说一下  我的机器是多网卡  配置ipxe的端口

    2024年04月14日
    浏览(64)
  • 详解IPv4地址

    一个IPv4地址有32 bit 2进制 4字节(1字节=8bit电流) IPv4地址通常采用“点分十进制”表示  IPv4地址范围:0.0.0.0~255.255.255.255 (约有43亿)          计算机的IP地址由两部分组成,一部分为网络位,一部分为主机位,同一网段内的计算机网络部分相同,主机部分不同同时重复

    2024年02月05日
    浏览(44)
  • Android 12(S) IPV4优先IPV6(优先使用IPv4地址)的实现

    根据RFC 6724中 规定 android 会优先选择IPv6 地址而不是 IPv4 地址,当整个网络中,同时支持IPv4和IPv6 地址时,设备中的应用请求服务器DNS时,会优先返回IPv6地址。 假如IPv6服务器支持内容不够完善,则应用显示内容会与IPv4服务器不一致,甚至有问题。 因此有需求是定制设备平

    2024年02月03日
    浏览(52)
  • 解析 IP(IPv4)地址

    为了保证正常通信,有必要为每个设备配置正确的 IP 地址。在互联网通信中,全世界都必须设定正确的IP地址。否则,根本无法实现正常的通信。而在用 TCP/IP 进行通信时,需要用 IP 地址识别主机和路由器。 IPv4 地址在计算机中是由如下这样构成的 四组二进制数 每组八位二

    2024年04月28日
    浏览(40)
  • 配置linux net.ipv4.ip_forward数据包转发

    出于系统安全考虑,在默认情况下,Linux系统是禁止数据包转发的。数据包转发指的是当主机拥有多个网卡时,通过一个网卡接收到的数据包,根据目的IP地址来转发数据包到其他网卡。这个功能通常用于路由器。 如果在Linux系统中需要开启路由转发功能,必须要配置一个内核

    2024年02月11日
    浏览(47)
  • 验证IP地址IPv4和IPv6

    编写一个函数来验证输入的字符串是否是有效的 IPv4 或 IPv6 地址 IPv4 地址由十进制数和点来表示,每个地址包含4个十进制数,其范围为 0 - 255, 用(\\\".\\\")分割。比如,172.16.254.1; 同时,IPv4 地址内的数不会以 0 开头。比如,地址 172.16.254.01 是不合法的。 IPv6 地址由8组16进制的数

    2024年02月10日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包