当前位置: 首页 > article >正文

HCIP-6.2NAT协议原理与配置

HCIP-6.2NAT协议原理与配置

  • 1、NAT的工作原理
  • 1.1、静态NAT
  • 1.2、动态NAT
  • 1.3、NAPT(Network Address Port Translation)端口多路复用
  • 1.3.1、NAT与NAPT区别
  • 2、Easy IP
  • 3、NAT服务器

随着Internet的发展和网络应用的增多,IPv4地址枯竭已经成为制约网络发展的瓶颈。尽管IPv6可以从根本上解决IPv4地址空间不足的问题,但目前众多的网络设备和网络应用仍是基于IPv4的,因此在IPv6广泛应用之前,一些过渡技术的使用是解决这个问题的主要技术手段。

网络地址转换技术NAT(Network Address Translation)主要用于实现位于内部网络的主机访问外部网络的功能。当局域网内的主机需要访问外部网络时,通过NAT技术可以将其私网地址转换为公网地址,并且多个私网用户可以共用一个公网地址,这样既可保证网络互通,又节省了公网地址。

1、NAT的工作原理

在这里插入图片描述
NAT应用场景:

  • 企业或家庭所使用的网络为私有网络,使用的是私有地址;运营商维护的网络为公共网络,使用的是公有地址。私有地址不能在公网中路由。
  • NAT一般部署在连接内网和外网的网关设备上。

NAT是将IP数据报报头中的IP地址转换为另一个IP地址的过程,主要用于实现内部网络(私有IP地址)访问外部网络(公有IP地址)的功能。NAT一般部署在连接内网和外网的网关设备上。当收到的报文源地址为私网地址、目的地址为公网地址时,NAT可以将源私网地址转换成一个公网地址。这样公网目的地就能够收到报文,并做出响应。此外,网关上还会创建一个NAT映射表,以便判断从公网收到的报文应该发往的私网目的地址。

1.1、静态NAT

NAT的实现方式有多种,适用于不同的场景。
静态NAT实现了私有地址和公有地址的一对一映射。如果希望一台主机优先使用某个关联地址,或者想要外部网络使用一个指定的公网地址访问内部服务器时,可以使用静态NAT。但是在大型网络中,这种一对一的IP地址映射无法缓解公用地址短缺的问题。

静态NAT

  • 静态NAT实现了私有地址和公有地址的一对一映射。
  • 一个公网IP只会分配给唯一且固定的内网主机。

源地址为192.168.0.2的报文需要发往公网地址200.0.0.1。在网关R1上配置了一个私网地址192.168.0.2到公网地址100.1.1.2的映射。

当网关收到主机A发送的数据包后,会先将报文中的源地址192.168.0.2转换为100.1.1.2,然后转发报文到目的设备。

目的设备回复的报文目的地址是100.1.1.2。当网关收到回复报文后,也会执行静态地址转换,将100.1.1.2转换成192.168.0.2,然后转发报文到主机A。

静态NAT配置
nat static global { global-address} inside {host-address } 命令用于创建静态NAT。

  • global参数用于配置外部公网地址。
  • inside参数用于配置内部私有地址。
    在这里插入图片描述
[R1]interface GigabitEthernet0/0/0
[R1-GigabitEthernet0/0/0]ip address 192.168.0.254 24
[R1-GigabitEthernet0/0/0]interface g/0/1
[R1-GigabitEthernet0/0/1]ip address 100.1.1.2 24
[R1-GigabitEthernet0/0/1]nat static global 100.1.1.2 inside 192.168.0.2
[R1]display nat static
  Static Nat Information:
  Interface  : GigabitEthernet0/0/1
    Global IP/Port     : 100.1.1.2/---- 
    Inside IP/Port     : 192.168.0.2/----

1.2、动态NAT

动态NAT基于地址池来实现私有地址和公有地址的转换。
动态NAT

当内部主机A和主机B需要与公网中的目的主机通信时,网关R1会从配置的公网地址池中选择一个未使用的公网地址与之做映射。每台主机都会分配到地址池中的一个唯一地址。

当不需要此连接时,对应的地址映射将会被删除,公网地址也会被恢复到地址池中待用。当网关收到回复报文后,会根据之前的映射再次进行转换之后转发给对应主机。

动态NAT地址池中的地址用尽以后,只能等待被占用的公用IP被释放后,其他主机才能使用它来访问公网。

NAT技术优缺点:

  • NAT能解决不少令人头疼的问题。它解决问题的办法是:在内部网络中使用内部地址,通过NAT把内部地址翻译成合法的IP地址,在Internet上使用。其具体的做法是把IP包内的地址域用合法的IP地址来替换。
  • NAT功能通常被集成到路由器、防火墙、ISDN路由器或者单独的NAT设备中。NAT设备维护一个状态表,用来把非法的IP地址映射到合法的IP地址上去。每个包在NAT设备中都被翻译成正确的IP地址发往下一级,这意味着给处理器带来了一定的负担。但这对于一般的网络来说是微不足道的,除非是有许多主机的大型网络
  • 需要注意的是,NAT并不是一种有安全保证的方案,它不能提供类似防火墙、包过滤、隧道等技术的安全性,仅仅在包的最外层改变IP地址。这使得黑客可以很容易地窃取网络信息,危及网络安全。

动态NAT配置命令:

[R1]nat address-group 1 100.1.1.1 100.1.1.100   //地址组1的NAT地址池1.1到1.100
[R1]acl 2000
[R1-acl-basic-2000]rule 5 permit source 192.168.0.1 0.0.0.255
[R1-acl-basic-2000]q
[R1]gigabitEthernet0/0/1            //出接口
[R1-GigabitEthernet0/0/1]nat outbound 2000 address-group 1 no-pat    //Nat关联ACL2000使用地址组1。no-pat表示只转换数据报文的地址而不转换端口信息。

1.3、NAPT(Network Address Port Translation)端口多路复用

则是把内部地址映射到外部网络的一个IP地址的不同端口上。实现私网地址和公网地址的一对多转换

网络地址端口转换NAPT(Network Address Port Translation)允许多个内部地址映射到同一个公有地址的不同端口
在这里插入图片描述
R1收到一个私网主机发送的报文,源IP地址是192.168.0.1,源端口号是1025,目的IP地址是200.0.0.1,目的端口是80。

R1会从配置的公网地址池中选择一个空闲的公网IP地址和端口号,并建立相应的NAPT表项。

这些NAPT表项指定了报文的私网IP地址和端口号与公网IP地址和端口号的映射关系。R1将报文的源IP地址和端口号转换成公网地址100.1.1.1和端口号3206,并转发报文到公网。

严格意义上的NAT不会进行端口地址转换,因此并不节省公网IP地址。而通过端口地址转换PAT,能够节省公网IP地址。

1.3.1、NAT与NAPT区别

1、NAT方式的缺点:
在这里插入图片描述
1)、内网中有6位用户,但是只在路由器的地址池只配置了3个公网IP地址,那么只有先访问公网的3位用户能够替换到公网地址。由于没有公网地址替换,剩下的用户无法访问公网。

2)、内网的用户能访问公网,而公网用户不能访问内网的用户。

2、享一个公网IP地址访问外网
这时我们改进为共享一个公网IP地址来6个客户端都能访问外网。这时又会产生问题?
建立TCP连接时,需要源地址及其使用的端口。
在这里插入图片描述红色框内为建立的TCP连接的源地址及其使用的端口,蓝色框为TCP连接的目标地址和端口。
在这里插入图片描述

内网PC2和PC6访问公网网站时,公网地址100.1.1.1替换了内网IP,数据包可以顺利发出去,等到数据包返回时,内网PC2和PC6都使用了666端口,这时路由器就不知道要把返回数据包转发给谁了。

3、端口替换(PAT)
解决该方法:当内网用户访问公网时,不仅要进行地址替换(NAT)也要进行端口替换(PAT)。
在这里插入图片描述PC2和PC6访问公网网站时,无论源地址和端口是什么都统一替换为路由器分配的地址和端口。

PC2使用地址:100.1.1.1,端口:6521;
PC6使用地址:100.1.1.1,端口:6522。

返回的数据包目标端口为6521,对应的转给PC2;
目标端口为6522,对应的转给用户2。

即使PC2和PC6原来使用的端口号一样路由器也知道该把数据包转给谁。

端口地址转换的好处:
能够大量节省公网IP地址。只需要一个公网IP地址就可以供整个内网的用户使用,内网中配置了公网。

配置:

[R1]int g0/0/0
[R1-GigabitEthernet0/0/0]ip add 192.168.0.254 24
[R1-GigabitEthernet0/0/0]int g0/0/1
[R1-GigabitEthernet0/0/1]ip add 100.1.1.254 24
[R1-GigabitEthernet0/0/1]q
[R1]nat address-group 1 100.1.1.0 100.1.1.10     //创建地址池group1 固定IP
[R1]acl 2000                          //创建ACL 2000
[R1-acl-basic-2000]rule permit source 192.168.0.0 0.0.0.255//允许192.168.0.0网段通过
[R1]int g0/0/1
[R1-GigabitEthernet0/0/1]nat outbound 2000 address-group 1 // ip地址转换为固定的公网地址

与NAT的配置区别就在于没有no-pat,no-pat表示只转换数据报文的地址而不转换端口信息。

2、Easy IP

Easy IP 允许将多个内部地址映射到网关出接口地址上的不同端口。

Easy IP 适用于小规模局域网中的主机访问Internet 的场景。小规模局域网通常部署在小型的网吧或者办公室中,这些地方内部主机不多,出接口可以通过拨号方式获取一个临时公网IP 地址。Easy IP 可以实现内部主机使用这个临时公网IP 地址访问Internet。Easy IP 与NAPT 原理基本相同,不过Easy IP 不需要手动创建地址池。
Easy IP
地址是192.168.0.1,源端口号是1025。R1会建立Easy IP表项,这些表项指定了源IP地址和端口号与出接口的公网IP地址和端口号的映射关系。

根据匹配的Easy IP表项,将报文的源IP地址和端口号转换成出接口的IP地址和端口号,并转发报文到公网。报文的源IP地址转换成100.1.1.1/24,相应的端口号是3206。

路由器收到回复报文后,会根据报文的目的IP地址和端口号,查询Easy IP表项。路由器根据匹配的Easy IP表项,将报文的目的IP地址和端口号转换成私网主机的IP地址和端口号,并转发报文到主机。

常用配置命令:

1、配置外部网口和内部网口的IP地址
2、定义合法IP地址池
由于直接使用外网口IP地址所以不用再定义IP地址池

3、定义访问控制列表
[R1]acl 3000            //允许源地址为192.168.0.0/24网段的数据通过
[R1-acl-adv-3000]rule permit ip source 192.168.0.0 0.0.0.255 

4、在外网口.上设置IP地址转换
[R1]int g0/0/1   //外网口

ac13000匹配的源IP数据到达此接口时,转换为该接口的IP地址做为源地址
[R1-GigabitEthernet0/0/1]nat outbound 3000      

[R1]display nat session all      //查看NAT的流表信息    
[RA]display nat outbound

Easy IP的配置与动态NAT的配置类似,需要定义ACL和nat outbound命令,主要区别是Easy IP不需要配置地址池,所以nat outbound命令中不需要配置参数address-group。

3、NAT服务器

通过配置NAT服务器,可以使外网用户访问内网服务器。
NAT服务器

NAT在使内网用户访问公网的同时,也屏蔽了公网用户访问私网主机的需求。当一个私网需要向公网用户提供Web和FTP服务时,私网中的服务器必须随时可供公网用户访问。

NAT服务器可以实现这个需求,但是需要配置服务器私网IP地址和端口号转换为公网IP地址和端口号并发布出去。

路由器在收到一个公网主机的请求报文后,根据报文的目的IP地址和端口号查询地址转换表项。路由器根据匹配的地址转换表项,将报文的目的IP地址和端口号转换成私网IP地址和端口号,并转发报文到私网中的服务器。

外网主机需要访问私网服务器,发送报文的目的IP地址是100.1.1.1,目的端口号是80。R1收到此报文后会查找地址转换表项,并将目的IP地址转换成192.168.0.1,目的端口号保持不变。

服务器收到报文后会进行响应,R1收到私网服务器发来的响应报文后,根据报文的源IP地址192.168.0.1和端口号80查询地址转换表项。然后,路由器根据匹配的地址转换表项,将报文的源IP地址和端口号转换成公网IP地址100.1.1.1和端口号80,并转发报文到目的公网主机。

服务器静态映射配置:

[R1]interface GigabitEthernet0/0/0
[R1-GigabitEthernet0/0/0]ip address 192.168.0.254 24
[R1-GigabitEthernet0/0/1]interface gigabitEthernet0/0/1
[R1-GigabitEthernet0/0/1]ip address 100.1.1.2 24
[R1-GigabitEthernet0/0/1]nat server protocol tcp global 100.1.1.1 www inside 192.168.0.1 8080

nat server [ protocol {protocol-number | icmp | tcp | udp} global { global-address | current-interface global-port} inside {host-address host-port } vpn-instance vpn-instance-name acl acl-number description description ]
命令用来定义一个内部服务器的映射表,外部用户可以通过公网地址和端口来访问内部服务器。
参数protocol指定一个需要地址转换的协议;
参数global-address指定需要转换的公网地址;
参数inside指定内网服务器的地址。

查看详细的NAT服务器配置结果

[RTA]display nat server 
  Nat Server Information:
  Interface  : Serial1/0/0
    Global IP/Port     : 100.1.1.1/80(www) 
    Inside IP/Port     : 192.168.0.1/8080
    Protocol : 6(tcp)   

http://www.kler.cn/a/2920.html

相关文章:

  • Linux之ARM(MX6U)裸机篇----2.汇编LED驱动实验
  • JWT令牌与微服务
  • 全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之分支结构(实战训练三)
  • StarRocks一次复杂查询引起的Planner超时异常
  • 【知识】cuda检测GPU是否支持P2P通信及一些注意事项
  • webrtc获取IceCandidate流程
  • Qt5.12实战之控件设计
  • 并查集、并查集+离线、并查集+倒叙回答
  • JVM知识整理
  • Python实现人脸识别检测, 对美女主播照片进行评分排名
  • 串口通信(STM32演示实现)
  • C++ 八股文(简单面试题)
  • 奇安信_防火墙部署_透明桥模式
  • ​selenium+python做web端自动化测试框架与实例详解教程​
  • 数据结构——二叉树与堆
  • 从 X 入门Pytorch——BN、LN、IN、GN 四种归一化层的代码使用和原理
  • 【docker】docker安装MySQL
  • leetcode每日一题:134. 加油站
  • 银河麒麟v10sp2安装nginx
  • [ 网络 ] 应用层协议 —— HTTP协议
  • Linux防火墙——SNAT、DNAT
  • Redis单线程还是多线程?IO多路复用原理
  • 【C++】科普:C++中的浮点数怎么在计算机中表示?
  • TCP和UDP协议的区别?
  • 【C语言蓝桥杯每日一题】——排序
  • 【Docker】CAdvisor+InfluxDB+Granfana容器监控