NAT技术的出现源于对私有网络安全性的要求以及IPv4地址不够用的现状。Cisco IOS所支持的常用NAT技术有以下几种。今天发现公司同事对Cisco NAT的实现理解的不好,导致配置出问题。这里就简单讲解一下Cisco NAT的实现原理。
1. static NAT,内部ip地址和外部ip地址的一一对应。
2. dynamic NAT,内部ip地址和外部ip地址的一对一关系,和static NAT不同的是,内部ip地址是对应的外部ip地址池,每次转换的时候会使用外部ip 地址池中的未用地址做翻译。
3. overloading NAT,也就是常用的端口地址翻译,PAT。多个内部ip地址可以通过这种技术映射到一个外部ip地址,因为一个连接是由源地址,源端口,目的地址,目的端口和协议这五元组构成的。
当然,还有其他一些NAT的实现技术,不过上面三种是最常用的。这些都是基本的NAT规则,具体大家可以参考下面这篇文档。
http://www.cisco.com/en/US/tech/tk648/tk361/technologies_tech_note09186a0080094831.shtml
这里重点想要讲解的是NAT和路由表,NAT和ACL以及IPSec报文穿越情况下,报文的执行顺序和动作。下面这张表在理解NAT以及配置NAT的时候是要牢记的。
通常情况下,NAT路由器可以对源地址,目的地址,做翻译。上图左侧是ip nat inside,右侧是ip nat outside。当然NAT也可以工作在IP层之上的传输层甚至应用层,这些以后有机会在讲述。
ip nat inside source 和 ip nat outside source 是常用的配置命令,下面就通过一个例子来分析NAT的工作原理。
以下的工作原则也是必须要牢记的。
当流量的方向是从outside到inside的时候,首先会查找并匹配NAT规则并作地址转换,然后再根据目标地址查询路由转发表。当流量方向是从inside到outside的时候,首先会根据目标地址查询路由转发表(如果没有匹配路由,会丢弃),然后再查找并匹配NAT规则并作地址转换。
ip nat outside source static 
•Translates the source of the IP packets that travel outside to inside.
•Translates the destination of the IP packets that travel inside to outside. 
 
ip nat inside source static 
•Translates the source of IP packets that travel inside to outside.
•Translates the destination of the IP packets that travel outside to inside.
例子拓扑:
r1
interface Loopback0
 ip address 172.1.1.1 255.255.255.0
!         
interface Ethernet1/0
 ip address 10.1.1.1 255.255.255.0
 duplex half
!
!
ip classless
ip route 0.0.0.0 0.0.0.0 10.1.1.2
!
r2
interface Ethernet1/0
 ip address 10.1.1.2 255.255.255.0
 ip nat inside
 no ip route-cache cef
 no ip route-cache
 duplex half
!
interface Ethernet1/1
 ip address 10.2.2.2 255.255.255.0
 ip nat outside
 no ip route-cache cef
 no ip route-cache
 duplex half
!
ip nat inside source static 172.1.1.1 100.1.1.1
ip nat outside source static 172.3.3.3 100.3.3.3

ip classless
ip route 100.3.3.3 255.255.255.255 10.2.2.3
ip route 172.1.1.1 255.255.255.255 10.1.1.1
r3
!
interface Loopback0
 ip address 172.3.3.3 255.255.255.0
!
interface Ethernet1/1
 ip address 10.2.2.3 255.255.255.0
 duplex half
!
ip classless
ip route 0.0.0.0 0.0.0.0 10.2.2.2
我们这里重点关注的就是NAT router r2的NAT配置和路由配置,根据以上所写的绿色规则,如果从r1的环回口ping r3的环回口(ping 100.3.3.3 from 172.1.1.1),
1. ping request就是从inside到outside的流量方向,
2. 首先会在r2上查找路由转发表,是否有到目的地100.3.3.3的路由,这也是为什么r2上有一条到100.3.3.3的路由的原因,如果没有这一条路由,路由器会丢弃报文并会destination unreachable差错报文。
3. 当有路由匹配的时候,接着会查询是否有匹配的NAT规则,如果有就做NAT地址转换。这里有两条NAT规则匹配,根据上面的转换原则,源地址会被转换成100.1.1.1,目的地址会被转换成172.3.3.3。
4. 转发报文出e1/1口(ping 172.3.3.3 from 100.1.1.1)
同样的情况,当r3的环回口收到ping request(from 100.1.1.1 to 172.3.3.3)的时候,ping reply(reply from 172.3.3.3 to 100.1.1.1)会发到r2的e1/1口。
1. 根据规则,流量方向是从outside到inside方向,会首先查找匹配NAT规则,并作NAT转换,这里两条NAT规则匹配,转换后的报文是(reply from 100.3.3.3 to 172.1.1.1),
2. 然后,会根据转换后的目的地址查询r2的路由转发表,如果没有到172.1.1.1的路由条目,r2会丢弃报文并回destination unreachable差错报文,所以这里要配一条到172.1.1.1的路由,
3. 转发报文出e1/0口(reply 172.1.1.1 from 100.3.3.3)
 
r2上debug的情况如下,
r2#debug ip pac
r2#debug ip packet 
IP packet debugging is on
r2#
r2#
r2#deb
r2#debug ip na
r2#debug ip nat 
IP NAT debugging is on
r2#
r2#
从inside到outside方向的流量:
*Sep 30 10:24:12.019: IP: tableid=0, s=172.1.1.1 (Ethernet1/0), d=100.3.3.3 (Ethernet1/1), routed via FIB
*Sep 30 10:24:12.019: NAT: s=172.1.1.1->100.1.1.1, d=100.3.3.3 [10]
*Sep 30 10:24:12.019: NAT: s=100.1.1.1, d=100.3.3.3->172.3.3.3 [10]
*Sep 30 10:24:12.019: IP: s=100.1.1.1 (Ethernet1/0), d=172.3.3.3 (Ethernet1/1), g=10.2.2.3, len 100, forward
从outside到inside方向的流量:
*Sep 30 10:24:12.127: NAT*: s=172.3.3.3->100.3.3.3, d=100.1.1.1 [10]
*Sep 30 10:24:12.127: NAT*: s=100.3.3.3, d=100.1.1.1->172.1.1.1 [10]
*Sep 30 10:24:12.127: IP: tableid=0, s=100.3.3.3 (Ethernet1/1), d=172.1.1.1 (Ethernet1/0), routed via FIB
*Sep 30 10:24:12.127: IP: s=100.3.3.3 (Ethernet1/1), d=172.1.1.1 (Ethernet1/0), g=10.1.1.1, len 100, forward

*Sep 30 10:24:12.203: IP: tableid=0, s=172.1.1.1 (Ethernet1/0), d=100.3.3.3 (Ethernet1/1), routed via FIB
*Sep 30 10:24:12.203: NAT: s=172.1.1.1->100.1.1.1, d=100.3.3.3 [11]
*Sep 30 10:24:12.203: NAT: s=100.1.1.1, d=100.3.3.3->172.3.3.3 [11]
*Sep 30 10:24:12.203: IP: s=100.1.1.1 (E
r2#thernet1/0), d=172.3.3.3 (Ethernet1/1), g=10.2.2.3, len 100, forward
*Sep 30 10:24:12.251: NAT*: s=172.3.3.3->100.3.3.3, d=100.1.1.1 [11]
*Sep 30 10:24:12.251: NAT*: s=100.3.3.3, d=100.1.1.1->172.1.1.1 [11]
*Sep 30 10:24:12.251: IP: tableid=0, s=100.3.3.3 (Ethernet1/1), d=172.1.1.1 (Ethernet1/0), routed via FIB
*Sep 30 10:24:12.251: IP: s=100.3.3.3 (Ethernet1/1), d=172.1.1.1 (Ethernet1/0), g=10.1.1.1, len 100, forward
*Sep 30 10:24:12.299: IP: tableid=0, s=172.1.1.1 (Ethernet1/0), d=100.3.3.3 (Ethernet1/1), routed via FIB
*Sep 30 10:24:12.299: NAT: s=172.1.1.1->100.1.1.1, d=100.3.3.3 [12]
*Sep 30 10:24:12.299: NAT: s=100.1.1.1, d=100.3.3.3->172.3.3.3 [12]
*Sep 30 10:24:12.299: IP: s=100.1.1.1 (Ethernet1/0), d=172.3.3.3 (Ethernet1/1), g=10.2.2.3, len 100, forward
*Sep 30 10:24:12.347: NAT*: s=172.3.3.3->100.3.3.3, d=100.1.1.1 [12]
*Sep 30 10:24:12.347: NAT*: s=100.3.3.3, d=100.1.1.1->172.1.1.1 [12]
*Sep 30 10:24:12.347: IP: tableid=0, s=100.3.3.3 (Ethernet1/1), d=172.1.1.1 (
r2#Ethernet1/0), routed via FIB
*Sep 30 10:24:12.347: IP: s=100.3.3.3 (Ethernet1/1), d=172.1.1.1 (Ethernet1/0), g=10.1.1.1, len 100, forward
*Sep 30 10:24:12.407: IP: tableid=0, s=172.1.1.1 (Ethernet1/0), d=100.3.3.3 (Ethernet1/1), routed via FIB
*Sep 30 10:24:12.407: NAT: s=172.1.1.1->100.1.1.1, d=100.3.3.3 [13]
*Sep 30 10:24:12.407: NAT: s=100.1.1.1, d=100.3.3.3->172.3.3.3 [13]
*Sep 30 10:24:12.407: IP: s=100.1.1.1 (Ethernet1/0), d=172.3.3.3 (Ethernet1/1), g=10.2.2.3, len 100, forward
*Sep 30 10:24:12.547: NAT*: s=172.3.3.3->100.3.3.3, d=100.1.1.1 [13]
*Sep 30 10:24:12.547: NAT*: s=100.3.3.3, d=100.1.1.1->172.1.1.1 [13]
*Sep 30 10:24:12.547: IP: tableid=0, s=100.3.3.3 (Ethernet1/1), d=172.1.1.1 (Ethernet1/0), routed via FIB
*Sep 30 10:24:12.547: IP: s=100.3.3.3 (Ethernet1/1), d=172.1.1.1 (Ethernet1/0), g=10.1.1.1, len 100, forward
*Sep 30 10:24:12.595: IP: tableid=0, s=172.1.1.1 (Ethernet1/0), d=100.3.3.3 (Ethernet1/1), routed via FIB
*Sep 30 10:24:12.595: NAT: s=172.1.1.1->
r2#100.1.1.1, d=100.3.3.3 [14]
*Sep 30 10:24:12.595: NAT: s=100.1.1.1, d=100.3.3.3->172.3.3.3 [14]
*Sep 30 10:24:12.595: IP: s=100.1.1.1 (Ethernet1/0), d=172.3.3.3 (Ethernet1/1), g=10.2.2.3, len 100, forward
*Sep 30 10:24:12.611: NAT*: s=172.3.3.3->100.3.3.3, d=100.1.1.1 [14]
*Sep 30 10:24:12.611: NAT*: s=100.3.3.3, d=100.1.1.1->172.1.1.1 [14]
*Sep 30 10:24:12.611: IP: tableid=0, s=100.3.3.3 (Ethernet1/1), d=172.1.1.1 (Ethernet1/0), routed via FIB
*Sep 30 10:24:12.611: IP: s=100.3.3.3 (Ethernet1/1), d=172.1.1.1 (Ethernet1/0), g=10.1.1.1, len 100, forward
 
 
 
 
!所以,再设计NAT的时候,不但要考虑地址转换,还要考虑路由!
 
 
下面,我们再看一种更复杂的情况,就是在有配置访问控制列表,并有IPSec报文穿越NAT的情况下,IPSec报文在ACL/NAT/Routing的处理顺序。
请参考博客 Cisco IOS Unicast NAT 工作原理 [二]
本文转自jasonccier 51CTO博客,原文链接:http://blog.51cto.com/jasonccie/398815,如需转载请自行联系原作者

Cisco IOS Unicast NAT 工作原理 [一]相关推荐

  1. NAT类型及工作原理

    一.概述 在计算机网络中,网络地址转换(Network Address Translation,缩写为NAT),也叫做网络掩蔽或者IP掩蔽(IP masquerading),是一种在IP数据包通过路由 ...

  2. NAPT和NAT的工作原理及其区别

    NAPT 网络地址端口转换NAPT 网络地址端口转换NAPT(Network Address Port Translation)是人们比较熟悉的一种转换方式.NAPT普遍应用于接入设备中,它可以将中小 ...

  3. Cisco设备静态NAT基本配置步骤

    以下内容摘自笔者即将出版上市的<金牌网管师--大中型企业网络组建.配置与管理>一书,或者于明年将出版的<Cisco/H3C路由器配置与管理完全手册>一书. 当你与外部网络进行通 ...

  4. 华为 静态NAT---动态NAT---NAPT---Easy IP---NAT服务器工作原理和示例配置

    目    录 一.NAT简介 二.NAT好处: 三.静态NAT工作原理和示例配置 1. 静态NAT工作原理 2. 静态NAT配置示例 四.动态NAT工作原理和示例配置 1. 动态NAT工作原理 2.动 ...

  5. NAT的原理与类型,静态NAT、动态NAT

    目录 NAT产生背景 NAT概述 NAT工作原理 NAT类型 静态NAT配置 动态NAT 端口NAT(PAT) EasyIP-最简单的PAT NAT Server 外网访问内网WEB服务 外网访问内网 ...

  6. Cisco远程访问(SSL)虚拟专用网的工作原理

    博文目录 一.SSL虚拟专用网的工作原理 1.SSL 虚拟专用网客户端模式 2.SSL 虚拟专用网的验证.加密和内容控制 3.SSL 虚拟专用网适合使用在什么环境呢? 二.SSL虚拟专用网与IPSec ...

  7. 网络流量分析利器-可视化网络-netflow【2】-Cisco NetFlow 工作原理介绍及配置

    拓扑图 NetFlow监控涉及到的设备: 被监控的交换机(也可能是镜像服务器)和收集器(监控软件所在的设备) 工作原理: NetFlow使用流(flow)来完成统计数据.网络监控,甚至网络规划.流有方 ...

  8. Cisco IOS防火墙的安全规则和配置方案

    网络安全是一个系统的概念,有效的安全策略或方案的制定,是网络信息安全的首要目标. 网络安全技术主要有,认证授权.数据加密.访问控制.安全审计等.而提供安全网关服务的类型有:地址转换.包过滤.应用代理. ...

  9. CCNP1交换:三层架构概述、路由器交换机登录密码破解、VLAN、trunk(ISL、dot1Q)、DTP、VTP、交换机工作原理

    文章目录 CCNP1交换:三层架构概述.路由器交换机登录密码破解.VLAN.trunk(ISL.dot1Q).DTP.VTP.交换机工作原理 一.企业网三层架构概述: 1.冗余: 2.三层架构: 二. ...

最新文章

  1. C#中导出Excel报表的方法
  2. JAVA-封装-静态属性
  3. Linux对运行服务操作命令
  4. dotnetcore+vue+elementUI 前后端分离架 二(后端篇)
  5. 爱泼斯坦事件发酵,MIT师生发起抗议逼迫校长Rafael Reif辞职
  6. Http Invoker的Spring Remoting支持
  7. 【渝粤教育】国家开放大学2018年秋季 0008-22T简明现代汉语 参考试题
  8. btree索引和hash索引的区别(待更新)
  9. JavaScript语法(二)
  10. C/C++判断是否为笔记本电脑
  11. SysUtils.CompareStr、SysUtils.CompareText - 字符串比较
  12. 熊猫直播破产背后:王思聪不肯再借钱,谋求卖身腾讯未果
  13. iso硬盘安装 凤凰os_phoenix os安装全教程 凤凰系统进不去安装注意事项
  14. win10如何打来计算机的工具,电脑系统教程:Win10自带解压缩文件工具如何使用
  15. Wox自制主题 - Material
  16. matlab与vb接口dll,[求助]vb和matlab接口有关matlab程序调用vb数组的问题
  17. hadoop yarn web无法访问
  18. DY__ac_signature
  19. 纯web端实现条形码识别
  20. excel在单元格中引用其他单元格里的内容

热门文章

  1. 自适应 响应式展示型企业通用网站源码 织梦dedecms模板
  2. HTML五合一收款码网站源码(带35套模板)
  3. aba问题mysql_面试题总结:可能是全网最好的MySQL重要知识点
  4. mall-applet小程序项目是一套电商系统
  5. 开源前端 可视化大数据交互前端动态模板
  6. WBOLT 搜索推送管理插件(原百度推送管理插件) 3.4.11 Pro
  7. MongoDB 教程二: 添加, 删除,查询 shell命令
  8. 企业利用Pinterest平台推广9条建议
  9. Bootstrap ScrollSpy 用法
  10. Linux: wget 使用技巧