NAT(Network Address Translation,网络地址转换)是将IP 数据包头中的IP 地址转换为另一个IP 地址的过程。

    (1)NAT简介:

    在实际应用中,NAT 主要用于实现私有网络访问公共网络的功能。这种通过使用少量的公有IP 地址代表较多的私有IP 地址的方式,不仅完美地解决了公网lP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。

在学习配置NAT之前,需要明确两种概念:

  1. 内部本地地址:需要访问Internet网络的内网IP地址(私有IP地址),是计算机在内网中的身份标识。内网地址(池)往往使用ACLAccess List)技术指定。
  2. 内部全局地址NAT转换中对应的公网IP地址,是内网中计算机在Internet环境中的外部身份标识。

由于内网中的计算机IP地址是私有IP地址,不能直接用于Internet,故NAT服务相当于给予内网计算机能用于Internet的公网IP地址身份,实现内网计算机与Internet的通信。

NAT类型:

静态NAT(Static Nat)

内部本地地址和内部全局地址是一对一的关系,公网可通过全局地址直接访问对应的内网主机,这种方式主要用于配置内网服务器。

动态NAT(Dynamic Nat)

内部本地地址池对应一个内部全局地址池,本地地址和全局地址之间是多对多的关系(微观上看是一对一的关系)。由于内网IP和公网IP之间的对应不固定,故外网不能访问内网主机。

端口多路复用(Port address Translation,PAT)

也称为NPAT(Network Port address Translation),所有内部本地地址共享同一个内部全局地址,即本地地址和全局地址之间是多对一的关系,内网主机依靠端口来区分,由于端口是随机的,故外网不能直接访问内网,这对内网起到一定保护作用,但可访问内网中绑定固定端口的某台主机或服务器。

(2)静态NAT的配置:

静态NAT将一个特定的内部本地地址(Inside Local Address)静态地映射到一个内部全局地址(Inside Global Address),这意味着静态NAT中每一个被映射的内部本地地址,一定对应着一个固定而且唯一的内部全局地址。这种方式不但可以让内网设备访问外网,而且还可以让外网直接访问内网设备。

常用的静态NAT配置命令:

示例一:配置静态NAT

步骤一:配置各接口ip地址:

RA:

  1. en
  2. conf t
  3. host RA
  4. int f0/
  5. ip add 192.168.0.254 255.255.255.0
  6. no shut
  7. int s0//
  8. ip add 200.200.10.1 255.255.255.0
  9. no shut
  10. bandwidth
  11. end

RB:

  1. en
  2. conf t
  3. host RB
  4. int s0//
  5. clock rate
  6. bandwidth
  7. ip add 200.200.10.2 255.255.255.0
  8. no shut
  9. int s0//
  10. ip add 200.200.20.2 255.255.255.0
  11. bandwidth
  12. no shut
  13. end

RC:

  1. en
  2. conf t
  3. host RC
  4. int f0/
  5. ip add 100.100.10.254 255.255.255.0
  6. no shut
  7. int s0//
  8. ip add 200.200.20.1 255.255.255.0
  9. clock rate
  10. bandwidth
  11. no shut

步骤二:配置静态路由:

  1. RA:
    ip route 200.200.10.0 255.255.255.0 200.200.20.2
    ip route 100.100.10.0 255.255.255.0 200.200.10.2
    RB:
    ip route 100.100.10.0 255.255.255.0 200.200.20.1
    ip route 192.168.0.0 255.255.255.0 200.200.10.1
  2. RC:
    ip route 200.200.20.0 255.255.255.0 200.200.10.2
    ip route 192.168.0.0 255.255.255.0 200.200.10.2

步骤三:配置NAT:

RA:

  1. en
  2. conf t
  3. ip nat inside source static 192.168.0.1 200.200.10.3
  4. int f0/
  5. ip nat inside
  6. int s0//
  7. ip nat outside
  8. end

RC:

  1. en
  2. conf t
  3. ip nat inside source static 100.100.10.1 200.200.20.3
  4. int f0/
  5. ip nat inside
  6. int s0//
  7. ip nat outside
  8. end

测试:

    (3)动态NAT的配置:

动态NAT又称为动态地址翻译(Dynamic Address Translation),它是将内部本地地址与内部全局地址作一对一的替换。

内部全局地址以地址池的形式供选择,内部本地地址只要符合访问外网的条件,在做地址转换时,就从地址池中动态地选取最小的还没分配的内部全局地址来替换,其转换步骤如下:

  1. ()根据可用的内部全局地址范围,建立地址池。
  2. ()利用ACL,定义允许访问外网的内部地址范围。
  3. ()定义内部地址与地址池之间的转换关系。
  4. ()定义内网端口和外网端口。

常用的动态NAT配置命令:

    示例二:配置动态NAT:

步骤一:配置ip地址和路由:

RA:

  1. en
  2. conf t
  3. host RA
  4. int f0/
  5. ip add 192.168.1.254 255.255.255.0
  6. no shut
  7. int s0//
  8. clock rate
  9. bandwidth
  10. ip add 220.220.10.1 255.255.255.0
  11. no shut
  12. exit
  13. ip route 172.16.1.0 255.255.255.0 220.220.10.11
  14. end

RB:

  1. en
  2. conf t
  3. host RB
  4. int f0/
  5. ip add 172.16.1.254 255.255.255.0
  6. no shut
  7. int s0//
  8. bandwidth
  9. ip add 220.220.10.11 255.255.255.0
  10. no shut
  11. exit
  12. ip route 192.168.1.0 255.255.255.0 220.220.10.11
  13. end

步骤二:配置动态NAT:

RA:

  1. en
  2. conf t
  3. ip nat pool p1 220.220.10.2 220.220.10.10 netmask 225.255.255.0
  4. access-list permit ip 192.168.1.0 0.0.0.255 any
  5. int f0/
  6. ip nat inside
  7. int s0//
  8. ip nat outside
  9. end

RB:

  1. en
  2. conf t
  3. ip nat pool p1 220.220.10.12 220.220.10.20 netmask 225.255.255.0
  4. access-list permit ip 172.16.1.0 0.0.0.255 any
  5. int f0/
  6. ip nat inside
  7. int s0//
  8. ip nat outside
  9. end

  配置结果:

IP地址转换结果:

问题:如果路由器两边同时配置NAT网络地址转换会出现在串行链路一直循环寻路,找不到目标IP地址。

    (4)NPAT的配置:

NPAT可以用于地址伪装(Address Masquerading),它可以让多个内网设备使用一个IP地址同时访问外网。

 NPAT的转换步骤如下:

  1. ()利用ACL,定义允许访问外网的内部IP地址范围。
  2. ()为外网IP地址定义一个地址池名。
  3. ()将地址池赋予在第()步中定义的内部IP地址范围,并标明为overload(超载,即PAT)方式。
  4. ()定义内网端口和外网端口。

常用的NPAT配置命令:

    示例三:配置NPAT超载:

  

步骤一:配置接口ip和路由(省略)

步骤二:配置NPAT

RA:(用地址池)

  1. en
  2. conf t
  3. access-list permit ip 192.168.1.0 0.0.0.255 any
  4. ip nat pool p1 200.200.10.2 200.200.10.2 netmask 255.255.255.0
  5. ip nat inside source list pool p1 overload
  6. int f0/
  7. ip nat inside
  8. int f0/
  9. ip nat outside
  10. end

RA:(用接口)

  1. en
  2. conf t
  3. access-list permit ip 192.168.1.0 0.0.0.255 any
  4. ip nat inside source list interface f0/ overload
  5. int f0/
  6. ip nat inside
  7. int f0/
  8. ip nat outside
  9. end

配置结果:

NAT转换的详细信息:

  (5)验证NAT和NPAT的配置:

配置完NAT和NPAT后,可以使用表 8.4中的命令来测试它是否正常工作:

实验文档下载地址:http://files.cnblogs.com/files/MenAngel/NetBlog10.zip

CCNA网络工程师学习进程(10)NAT的配置的更多相关文章

  1. CCNA网络工程师学习进程(1)网络的基本概述

        在互联网快速发展的今天,了解互联网成为一项必须的技能,因此在学习编程之余学习如何配置网络还是很有必要的. 本系列博客计划分为三个部分,包括思科CCNA.CCNP和华为的网络工程师认证有关的知识 ...

  2. CCNA网络工程师学习进程(6)vlan相关协议的配置与路由器简单配置介绍

        前面已经介绍了大部分与vlan技术相关的交换机的协议的配置,更深层次的还有STP协议和以太网端口聚合技术,接着还会简单介绍一下路由器的基本应用.     (1)STP(Spanning-tre ...

  3. CCNA网络工程师学习进程(3)常规网络设计模型与基本的网络协议

        本节介绍分层的网络设计模型与基本的网络协议,包括ARP协议,ICMP协议和IP协议.     (1)三层网络架构: 一个好的园区网设计应该是一个分层的设计.一般分为接入层.汇聚层(分布层).核 ...

  4. CCNA网络工程师学习进程(5)路由器和交换机的登录安全配置和vlan划分

        本节详细介绍路由器和交换机的登录安全配置以及VLAN划分的原理.     (1)登录安全配置: 路由器登录有两种验证方式:有本地验证方式和远程验证方式.本地登录验证方式可以配置用户名和密码也可 ...

  5. CCNA网络工程师学习进程(7)路由器的路由配置

        前面一节已经介绍了路由器的端口配置,接着我们介绍路由器的路由配置:静态路由.默认路由和浮动路由的配置:动态路由协议的配置,包括RIP.IGRP.EIGRP和OSPF.     (1)路由器的基 ...

  6. CCNA网络工程师学习进程(8)访问控制列表ACL

    前面几节我们介绍了路由器的路由配置,接下来几节我们将介绍路由器的高级配置应用,包括ACL.NAT.DHCP.PPP.VPN和远程连接等的配置.     (1)ACL概述:   ACL(Access C ...

  7. CCNA网络工程师学习进程(9)GNS3的安装与配置

        本节将简单介绍一下网络设备模拟软件GNS3的配置和使用方法.     (1)GNS3概述: GNS3是一款具有图形化界面可以运行在多平台(包括Windows, Linux, and MacOS ...

  8. CCNA网络工程师学习进程(2)基本的网络设备

      在组网技术中用到的设备有中继器(Repeater).集线器(Hub).网桥(Bridge).交换机(Switch).路由器(Router).分别工作在OSI参考模型中的物理层.数据链路层和网络层. ...

  9. CCNA网络工程师学习进程(4)网络设备的基本配置和详细介绍

        网络设备(路由器.交换机和防火墙等)与计算机一样需要操作系统.网络设备采用专用的操作系统,统称为IOS(Internetwork Operating System,网络操作系统).     ( ...

随机推荐

  1. HUST 1584 摆放餐桌

    1584 - 摆放餐桌 时间限制:1秒 内存限制:128兆 609 次提交 114 次通过 题目描述 BG准备在家办一个圣诞晚宴,他用一张大桌子招待来访的客人.这张桌子是一个圆形的,半径为R.BG邀请 ...

  2. C语言 extern3 全局变量的使用

    和函数的全局使用极其类似: 第一种方法,也是最简单的: 在 first.h 中定义, ; 在对应的first.c中使用: #include "first.h" #include & ...

  3. MongoDB学习总结(一) —— Windows平台下安装

    > 基本概念 MongoDB是一个基于分布式文件存储的开源数据库系统,皆在为WEB应用提供可扩展的高性能数据存储解决方案.MongoDB将数据存储为一个文档,数据结构由键值key=>val ...

  4. (4)activiti之uel表达式

    有了前面几章,我们肯定有一定的困惑,activiti如何与实际业务整合,比如一条采购单,如何跟一个流程实例互相关联起来? 这里就需要使用到activiti启动流程实例时设置一个流程实例的busines ...

  5. 如何用js实现自适应,原来只是几行代码的事(╯‵□′)╯︵┻━┻

    在javascript写下如下几行:   (function (doc, win, undefined) {            var docEl = doc.documentElement,   ...

  6. 阿里巴巴Java开发手册评述

    2016年底的时候阿里巴巴公开了其在内部使用的Java编程规范.随后进行了几次版本修订,目前的版本为v1.0.2版.下载地址可以在其官方社区-云栖社区https://yq.aliyun.com/art ...

  7. Javascript学习一

    //学习moocjs1 JavaScript-警告(alert 消息对话框) <script type="text/javascript"> var mynum = 3 ...

  8. 网站Web业务架构从小到大演变

    有一天,我突发奇想创建了一个站点,基于 LNMP 架构,起初只有我自己访问,后来因为我点儿正,访问量越来越大,所以最终导致下面的架构演变. 1.单台机器 单台机器因为只是一个小站,访问量一天也没有多少 ...

  9. ASP.NET MVC 使用Uploadify实现多文件异步无刷新上传

    软件技术开发,合作请联系QQ:858-048-581 这里我通过使用uploadify组件来实现异步无刷新多文件上传功能. 1.首先下载组件包uploadify,我这里使用的版本是3.1 2.下载后解 ...

  10. JS中的类,类的继承方法

    大牛请无视此篇! 首先我们定义一个类,方法很简单,就像我们定义函数一样,只不过我们为了与函数区分,名称首字母要大写,看代码: function Person (){ } 这就是一个很简单的Poson类 ...