目录

1. 什么是NAT

1.1. NAT定义

1.2. NAT工作机制

1.3. NAT类型

1.3.1. 静态NAT

1.3.2. 动态NAT

1.3.3. 端口复用NAPT

1.4. NAT技术的优缺点

1.4.1. 优点

1.4.2. 缺点


1. 详解什么是NAT

1.1. NAT定义

NAT(Network Address Translator,网络地址转换)是用于在本地网络中使用私有地址,在连接互联网时转而使用全局 IP 地址的技术。NAT实际上是为解决IPv4地址短缺而开发的技术。

1.2. NAT工作机制

如下图所示,以 10.0.0.10 的主机与 163.221.120.9 的主机进行通信为例讲解 NAT 的工作机制。利用 NAT,途中的 NAT 路由器将发送源地址从 10.0.0.10 转换为全局的 IP 地址(202.244.174.37)再发送数据。反之,当响应数据从 163.221.120.9 发送过来时,目标地址(202.244.174.37)先被转换成私有 IP 地址 10.0.0.10 以后再被转发。

在整个流程当中,最关键的有以下几点:

  • 网络被分为私网和公网两个部分,NAT网关设置在私网到公网的路由出口位置,双向流量必须都要经过NAT网关

  • 网络访问只能先由私网侧发起,公网无法主动访问私网主机

  • NAT 路由器在两个访问方向上完成两次地址的转换或翻译,出方向做源信息替换,入方向做目的信息替换;

  • NAT 路由器的存在对通信双方是保持透明的;

  • NAT 路由器为了实现双向翻译的功能,需要维护一张关联表,把会话的信息保存下来。

问题:

当私有网络内的多台机器都要与外部进行通信时,仅仅靠转换 IP 地址的话就受限于是否有足够的全局 IP 地址可供使用。通过端口复用 NAPT 技术可以解决这个问题

1.3. NAT类型

NAT 有 3 中类型:静态NAT,动态NAT,端口复用NAPT

1.3.1. 静态NAT

内部本地地址一对一转换成内部全局地址,相当内部本地的每一台PC都绑定了一个全局地址。一般用于在内网中对外提供服务的服务器

1.3.2. 动态NAT

在内部本地地址转换的时候,在地址池中选择一个空闲的,没有正在被使用的地址,来进行转换,一般选择的是在地址池定义中排在前面的地址,当数据传输或者访问完成时就会放回地址池中,以供内部本地的其他主机使用,但是,如果这个地址正在被使用的时候,是不能被另外的主机拿来进行地址转换的

1.3.3. 端口复用NAPT

面对私网内部数量庞大的主机,如果NAT只进行IP地址的简单替换,就会产生一个问题:当有多个内部主机去访问同一个服务器时,从返回的信息不足以区分响应应该转发到哪个内部主机。此时,需要 NAT 设备根据传输层信息或其他上层协议去区分不同的会话,并且可能要对上层协议的标识进行转换,比如 TCP 或 UDP 端口号。这样 NAT 网关就可以将不同的内部连接访问映射到同一公网IP的不同传输层端口,通过这种方式实现公网IP的复用和解复用。这种方式也被称为端口转换PAT、NAPT或IP伪装,但更多时候直接被称为NAT,因为它是最典型的一种应用模式。

如下图所示,以私网 10.0.0.10 和 10.0.0.11 的主机与外网 163.221.120.9 的主机进行通信为例讲解 NAPT 的工作机制。

主机 163.221.120.9 的端口号是 80,私网中有 2 个客户端 10.0.0.10 和 10.0.0.11 同时进行通信,并且这 2 个客户端的本地端口都是 1025。此时,仅仅转换 IP 地址为全局地址 202.244.174.37 ,会令转换后的数字完全一致。因此,为了区分这 2 个会话,只要将 10.0.0.11 的端口号转换为 1026 就可以解决问题。NAPT 路由器通过生成转换表,就可以正确地转换地址跟端口的组合,使客户端A、B能同时与服务器之间进行通信。

关键点:利用端口号的唯一性实现了公网 IP 到私网 IP 的转换,理论上最多可以让 65535 台主机共用一个公网 IP 地址

1.4. NAT技术的优缺点

1.4.1. 优点

  • 节省合法的公有 IP 地址(最大的优点)

  • 当网络发生变化时,避免重新编址。

  • 对外隐藏内部地址,增加网络安全性

1.4.2. 缺点

  • 无法从 NAT 的外部向内部服务器建立连接(NAT穿越)

  • 转换表的生成和转换操作都会产生一定的开销

  • 通信过程中一旦 NAT 遇到异常需重新启动时,所有的 TCP 连接都将被重置。即使备置两台 NAT 做容灾备份,TCP 连接还是会被断开。

原文链接:https://blog.csdn.net/yingshuanglu2564/article/details/111830114

Linux网络-NAT技术相关推荐

  1. 详解:Linux网络虚拟化技术

    Linux的网络虚拟化是LXC项目中的一个子项目,LXC包括文件系统虚拟化,进程空间虚拟化,用户虚拟化,网络虚拟化,等等,这里使用LXC的网络虚拟化来模拟多个网络环境. 本文从基本的网络设备讲起,到具 ...

  2. Linux网络虚拟化基石 network namespace

    1 网络虚拟化基石 network namespace Linux的namespace的作用就是"隔离内核资源". 在Linux的世界里,文件系统挂载点.主机名.POSIX进程间通 ...

  3. Linux网络新技术基石 |​eBPF and XDP

    hi,大家好,欢迎来到极客重生的世界,今天给大家分享的是Linux 网络新技术,当前正流行网络技是什么?那就是eBPF和XDP技术,Cilium+eBPF超级火热,Google GCP也刚刚全面转过来 ...

  4. Linux网络新技术基石:eBPF and XDP

    hi,大家好,欢迎来到极客重生的世界,今天给大家分享的是Linux 网络新技术,当前正流行网络技是什么?那就是eBPF和XDP技术,Cilium+eBPF超级火热,Google GCP也刚刚全面转过来 ...

  5. Linux网络技术管理及进程管理(week2_day4)--技术流ken...

    Linux网络技术管理及进程管理(week2_day4)--技术流ken OSI七层模型和TCP/IP四层模型 OSI七层模型:OSI(Open System Interconnection)开放系统 ...

  6. Linux·DNS协议、ICMP协议、NAT技术

    目录 DNS协议 DNS背景 ​编辑域名简介 域名解析过程 使用dig工具分析DNS过程 ICMP协议 ICMP功能 ICMP协议格式 ​编辑ping命令 一个值得注意的坑 traceroute命令 ...

  7. 理解 Linux 网络栈(2):非虚拟化Linux 环境中的 Segmentation Offloading 技术

    本系列文章总结 Linux 网络栈,包括: (1)Linux 网络协议栈总结 (2)非虚拟化Linux环境中的网络分段卸载技术 GSO/TSO/UFO/LRO/GRO (3)QEMU/KVM + Vx ...

  8. Linux网络技术管理

    1. OSI七层模型和TCP/IP四层模型 1.1 osi 七层模型 Open System interconnection,开放系统互连参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系 ...

  9. 网络虚拟化技术(一): linux网络虚拟化,网络虚拟化技术(一): Linux网络虚拟化...

    网络虚拟化技术(一): Linux网络虚拟化 2018-12-11 01 March 2013 笔者现在在做云计算的网络设计,涉及到上百台服务器与交换机,在实测前必须进行原型测试,但是我只有一个工作用 ...

最新文章

  1. Android人脸识别App(带web上传注册信息)
  2. mysql怎么加全局锁_MySQL锁机制/管理(并发锁,行锁,表锁,预加锁,全局锁等等)
  3. Ubuntu 16.04 安装 ROS
  4. Spring_HelloWord
  5. hideprocess in bcb
  6. linux shell脚本 删除指定目录下文件夹(可指定文件夹名、时间)
  7. 文件上传存至oracle,fileupload上传文件存储到oracle Blob字段中
  8. 28-hadoop-hbase入门小程序
  9. Redis:分布式锁setnx(只 实现了 互斥性和容错性)
  10. list清空的函数java,6-1 jmu-Java-05集合-List中指定元素的删除 (20分)
  11. 软考路:2021年系统架构设计师之考试
  12. nginx中配置虚拟主机
  13. Qtum DGP 分布自治协议技术详解
  14. 【Spring】SpringAOP切面类
  15. 24V电磁铁电磁特模块电路分析
  16. 资产标签二维码方案设计
  17. pdf批量转换为图片
  18. linux查询文件大小
  19. 音视频入门-02-RGB拼图
  20. 小米 红米版note 4x刷机成功

热门文章

  1. java清空json_java – 从JSONArray中删除JSON对象 – Jettison
  2. 环信即时通讯SDK集成——快速跑通环信IM Android Demo
  3. java 枚举报错 No enum constant XX 处理方法
  4. 模拟电子技术 二极管电路 个人笔记
  5. 九江大桥事故鉴定太神奇了!
  6. i7-12700和i7-12700F有什么区别 i712700和12700f哪个好
  7. c/c++ c语言文件读写
  8. tensorflow分布式框架
  9. 树莓派实现云直播系统
  10. apidoc php,apidoc自动生成接口文档