NAT概述
引言
- 私有IP是无法在因特网上使用的,而如今普遍使用的宽带网络(ADSL)最多所能提供给用户的IP为16个,最少则为一个,万一企业内部有50台计算机要同时连接上因特网,该如何解决呢?这个问题的正确解决办法是使用NAT,只要通过NAT的机制,就可以让成千上万台计算机同时通过一个公网IP来连上因特网。本篇属于NAT技术基础知识,包括:介绍、原理、分类以及存在的问题进行总结。
内容
NAT介绍
- NAT网络地址转换(network address translation),是一种将数据包中的IP地址替换为其他IP地址的功能,此功能通常由路由器或防火墙来实现;NAT的通过利用较少的公 有IP地址来表示大量私有IP地址的方式来降低IP地址空间的耗用速度,除了此工作外,NAT在网络迁移和融合、服务器负载共享等方面也非常有用,接下来将针对NAT的实现过程进行简单介绍。
NAT原理
相关术语:
- IL : 内部本地地址即分配给内部设备的地址,此类地址不会宣告到外部网络
- IG: 内部全局地址即内部设备被外部网络所知晓的地址
- OG:外部全局地址即分配给外部设备的地址,这些地址不会被宣告到内部网络
- OL: 外部本地地址即外部设备被内部网络所知晓的地址
实现过程:

说明:
- 当设备A向设备B发送数据包时,由NAT将数据包源地址字段中的A设备的私有IP替换为可以在internet进行路由的公有地址,并转发数据包。当设备B向设备A发送应答数据包时,数据包的目的IP将是 公有IP地址,此时NAT将目的地址替换为设备A的私有IP地址。在此过程中,NAT操作是完全透明的,即:设备A不知道203.10.5.23的存在,设备B认为设备A的地址是203.10.5.23,设备A的私有地址对B来说是不存在的。
- 结合NAT的相关术语可知:192.168.2.23为内部本地地址为;203.10.5.23为内部全局地址;192.31.7.130是外部全局地址,外部本地地址在NAT双向转换源地址和目的地址的时候可以看到,上述过程为NAT将设备A的私有地址替换为公有IP地址的过程,不涉及到外部本地地址。
- 在上述转换过程中,NAT会创建地址转换表,在地址转换表中可以清晰地看到上述4个术语。
NAT分类
静态NAT
- 实现:一对一,将一个唯一的本地地址映射到一个唯一的外部地址,条目一旦创建将会永久生效,可以提供对外服务主机一个更安全的运行环境,用于企业对内部服务器的一个转换,很明显一对一的NAT转换并不能起到节省公网IP的作用。
- 配置:
ip nat inside source static 192.168.2.23 203.10.5.23 (将内部本地地址替换为内部全局地址)同时在入接口和出接口需要配置:ip nat inside及ip nat outside
动态NAT
- 实现:多对多,将大量地址统计复用到一个较小的地址池的应用技术。配合ACL使用。
- 配置:
定义转换池(内部全局地址池):ip nat pool nat-pool 203.10.5.25 203.10.5.30 netmask 255.255.255.0 结合ACL定义哪些内部本地地址需要转换:access-list permit host 192.168.2.23 地址池和规则进行关联:ip nat inside source list pool nat-pool 同时在入接口和出接口需要配置:ip nat inside及ip nat outside
端口NAT
- 实现:一对多:多个地址同时映射到单一地址,PAT会同时转换IP地址和端口号,来自不同地址的数据包可以被转换为同一地址,但相应的端口号不相同,这样就可以共享同一个IP地址。
- 配置:
结合ACL定义哪些内部本地地址需要转换:access-list permit host 192.168.2.23 配置PAT:ip nat inside source list interface fastEthernet / overload 同时在入接口和出接口需要配置:ip nat inside及ip nat outside
NAT存在的问题
- 虽然NAT非常有用,但是NAT并非无所不能,通过上述基础知识的了解,可以看到在NAT的处理过程中,会对IP地址和TCP端口内容进行更改,由于对IP地址和TCP端口更改后,会使得IP包和TCP包中的校验和字段发生变化,因此需要NAT机制可以完成这些校验和的重新计算。
- 同时许多协议和应用程序都是根据数据字段的IP地址来携带IP地址或信息,因而可能会更改被封装数据的含义,从而可能破坏该应用.如:IPSEC的VPN应用,对于IPSEC而言,如果更改了ipsec包中的IP地址,IPSEC的加密机制将会丢弃此报文,从而破坏了VPN应用。从后面的技术可以了解到NAT穿越可以解决此问题。
- NAT并不能阻止拒绝服务或者会话劫持等常见攻击。
推荐书籍
- 《Linux网络安全技术与实现(第2版)》第2章
- 《TCP/IP路由技术第二卷第4章》
NAT概述的更多相关文章
- NAT资料
第1章 NAT 1.1 NAT概述 1990年代中期,NAT是作为一种解决IPv4地址短缺以避免保留IP地址困难的方案而流行起来的.网络地址转换在很多国家都有很广泛的使用.所以NAT就成了家庭和小型办 ...
- Windows Server 2012R2 网络地址转换NAT
一.NAT概述 网络地址转换NAT(Network Address Translation)可以动态改变通过路由器的IP报文的内容(修改报文的源IP地址和/或目的IP地址).离开路由器的报文的源地址或 ...
- NAT网络地址转换技术
NAT网络地址转换技术 目录 一.NAT概述 1.1.概述 1.2.NAT 的应用场景 二.NAT的类型及配置命令 2.1.静态NAT 2.2.动态NAT 2.3.Easy IP 2.4.NATP 2 ...
- Neutron 功能概述 - 每天5分钟玩转 OpenStack(65)
从今天开始,我们将学习 OpenStack 的 Networking Service,Neutron.Neutron 的难度会比前面所有模块都大一些,内容也多一些.为了帮助大家更好的掌握 Neutor ...
- 网络地址转换NAT原理及其作用
1 概述 1.1 简介 NAT英文全称是“Network Address Translation”,中文意思是“网络地址转换”,它是一个IETF(Internet Engineering Task F ...
- [daily][network] NAT原理(转)
写在转发之前: 一直以来,我一直有一个疑惑,SNAT的时候,如果两个内网主机恰巧使用了相同的源端口号该怎么办呢? 我自己猜测的方法是改掉一个端口号,把端口一起映射(当然还有另一个设想,就是把包同时广播 ...
- 【MySQL】MySQL无基础学习和入门之一:数据库基础概述和实验环境搭建
数据库基础概述 大部分互联网公司都选择MySQL作为业务数据存储数据库,除了MySQL目前还有很多公司使用Oracle(甲骨文).SQLserver(微软).MongoDB等. 从使用成本来区分可以 ...
- [转]UDP/TCP穿越NAT的P2P通信方法研究(UDP/TCP打洞 Hole Punching)
[转]UDP/TCP穿越NAT的P2P通信方法研究(UDP/TCP打洞 Hole Punching) http://www.360doc.com/content/12/0428/17/6187784 ...
- 负载均衡、LVS概述
1. 负载均衡概述 负载均衡的基本思路是:在一个服务器集群中尽可能的平衡负载量.通常的做法是在服务器前端设置一个负载均衡器(一般是专门的硬件设备).然后负载均衡器将请求的连接路由到最空闲的可用服务器. ...
随机推荐
- php提供更快的文件下载
在微博上偶然看到一篇介绍php更快下载文件的方法,其实就是利用web服务器的xsendfile特性,鸟哥的博客中只说了apache的实现方式,我找到了介绍nginx实现方式的文章,整理一下! let' ...
- [Unity] Shader(着色器)之固定管线
在Unity中,固定管线Shader的性能是最好的. 什么是固定管线呢? 固定渲染管线 —— 这是标准的几何&光照(T&L)管线,功能是固定的,它控制着世界.视.投影变换及固定光照控制 ...
- xml格式的数据转化成数组
将得到的xml格式的数据转化成数组 <?php //构造xml $url = "http://api.map.baidu.com/telematics/v3/weather?locat ...
- 界面通信之block传值
block传值有两种方式 ⽅式⼀: 使⽤block属性实现回调传值 ⽅式⼆: 在⽅法中定义block实现回调传值 方式一比较便于理解而且常用,下面介绍方式一是如何传值的 使用block属性传值和代理传 ...
- Json字符串和Json对象的简单总结
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.JSON成为理想的数据交换语言. 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率). ...
- 【转】段错误调试神器 - Core Dump详解
from:http://www.embeddedlinux.org.cn/html/jishuzixun/201307/08-2594.html 段错误调试神器 - Core Dump详解 来源:互联 ...
- html 图像映射(一个图像多个连接)
以前就见过那种导航地图,点击地图的不同省份分别跳到不同的连接,现在用html实现一下,简单的. 图像映射是指一个图像可以建立多个连接,就是在图像上面定义多个区域,每个区域连接到不同的地址. 效果如图: ...
- python , angular js 学习记录【2】
1.不同scope之间的通信 (1)无父子关系的scope通信: 在需要操作的scope里面定义一个事件,名称为delete_host,参数为data $rootScope.$on('delete_h ...
- XHPROF相关内容
定义入口文件 define('XHPROF_OPEN', 0); define('XHPROF_ROOT', '/home/www/xhprof/'); // 开启调试模式 建议开发阶段开启 部署阶段 ...
- espcms简约版的表单,提示页,搜索列表页
模板/lib/form.html <script type="text/javascript" src="{%$rootdir%}js/My97DatePicker ...