NAT基本原理与配置

随着Internet的发展和网络应用的增多,有限的IPv4公有地址已经成为制约网络发展的瓶颈。为解决这个问题,NAT(NetworkAddressTranslation,网络地址转换)技术应需而生。

NAT技术主要用于实现内部网络的主机访问外部网络。一方面NAT缓解了IPv4地址短缺的问题,另一方面NAT技术让外网无法直接与使用私有地址的内网进行通信,提升了内网的安全性

一 NAT概述

1 NAT产生背景

随着互联网用户的增多,IPv4的公有地址资源显得越发短缺。

同时IPv4公有地址资源存在地址分配不均的问题,这导致部分地区的IPv4可用公有地址严重不足。
为解决该问题,使用过渡技术解决IPv4公有地址短缺就显得尤为必要。

2 私网IP地址

公有地址:由专门的机构管理、分配,可以在Internet上直接通信的IP地址

私有地址组织和个人可以任意使用无法在Internet上直接通信,只能在内网使用的IP地址。

A、B、C类地址中各预留了一些地址专门作为私有IP地址:

A类:10.0.0.0 ~ 10.255.255.255

B类:172.16.0.0 ~ 172.31.255.255

C类:192.168.0.0 ~ 192.168.255.255

3 NAT技术原理

NAT:对IP数据报文中的IP地址进行转换,是一种在现网中被广泛部署的技术,一般部署在网络出口设备,例如路由器防火墙上。

NAT的典型应用场景:在私有网络内部(园区、家庭)使用私有地址,出口设备部署NAT,对于“从内到外”的流量,网络设备通过NAT将数据包的源地址进行转换(转换成特定的公有地址),而对于“从外到内的”流量,则对数据包的目的地址进行转换

通过私有地址的使用结合NAT技术,可以有效节约公网IPv4地址。

二 静态NAT

静态NAT:每个私有地址都有一个与之对应并且固定的公有地址,即私有地址和公有地址之间的关系是一对一映射。

支持双向互访:私有地址访问Internet经过出口设备NAT转换时,会被转换成对应的公有地址。同时,外部网络访问内部网络时,其报文中携带的公有地址(目的地址)也会被NAT设备转换成对应的私有地址。

相关命令

在接口视图下配置静态NAT

[Huawei-GigabitEthernet0/0/0] nat static global 公网地址 inside 私网地址

在系统视图下配置静态NAT

[Huawei] nat static global 公网地址 inside 私网地址

在接口下开启静态NAT功能

[Huawei-GigabitEthernet0/0/0] nat static enable

查看静态NAT

display nat static 

实验:配置静态NAT

在路由器AR1上配置

[AR1]nat static global 200.100.1.5 inside 192.168.1.2     \\将内部地址192.168.1.2转换为外部地址200.100.1.5[AR1]nat static global 200.100.1.6 inside 192.168.1.3     \\将内部地址192.168.1.3转换为外部地址200.100.1.6[AR1-GigabitEthernet0/0/1]nat static enable     \\在g0/0/1下开启静态nat

测试连通性

测试成功

三 动态NAT

动态NAT:静态NAT严格地一对一进行地址映射,这就导致即便内网主机长时间离线或者不发送数据时,与之对应的公有地址也处于使用状态。为了避免地址浪费,动态NAT提出了地址池的概念:所有可用的公有地址组成地址池。

当内部主机访问外部网络时临时分配一个地址池中未使用的地址,并将该地址标记为“In Use”。当该主机不再访问外部网络时回收分配的地址,重新标记为“Not Use”。

相关命令

创建地址池

[Huawei] nat address-group 地址池编号 起始地址 结束地址

配置地址转换的ACL规则

[Huawei] acl 规则编号
[Huawei-acl-basic-规则编号 ] rule permit source 源地址 通配符

接口视图下配置带地址池的NAT Outbound

[Huawei-GigabitEthernet0/0/0] nat outbound 规则编号 address-group 地址池编号 [no-pat]

注:no-pat指不进行端口转换

实验:配置动态NAT

在路由器AR1上配置

[AR1]nat address-group 1 200.100.1.5 200.100.1.10     \\创建NAT地址池1,范围从200.100.1.5到200.100.1.10[AR1]acl 2000     \\创建基本ACL 2000
[AR1-acl-basic-2000]rule 5 permit source 192.168.1.0 0.0.0.255   \\添加规则:允许192.168.1.0/24网段通行[AR1-GigabitEthernet0/0/1]nat outbound 2000 address-group 1 no-pat     \\在g0/0/1接口出方向上应用ACL 2000 和NAT地址池1,不进行端口转换

测试连通性

连通性没有问题

再查看抓包

可以看出主机1使用了200.100.1.5-200.100.1.9这5个地址,而主机2使用了200.100.1.5-200.100.1.9这5个地址

测试成功。

四 NAPT

动态NAT选择地址池中的地址进行地址转换时不会转换端口号,即No-PAT(No-PortAddressTranslation,非端口地址转换),公有地址与私有地址还是1:1的映射关系,无法提高公有地址利用率。

NAPTNetwork Address and Port Translation网络地址端口转换):从地址池中选择地址进行地址转换时不仅转换IP地址,同时也会对端口号进行转换,从而实现公有地址与私有地址的1:n映射,可以有效提高公有地址利用率。

相关命令

接口视图下配置带地址池的NAT Outbound

[Huawei-GigabitEthernet0/0/0] nat outbound 规则编号 address-group 地址池编号

实验:配置NAPT

首先在上面的实验基础上进行修改AR1的配置,去掉no-pat

[AR1-GigabitEthernet0/0/1]undo nat outbound 2000 address-group 1 no-pat[AR1-GigabitEthernet0/0/1]nat outbound 2000 address-group 1     \\在g0/0/1接口出方向上应用ACL 2000 和NAT地址池1

再进行测试

观察发现,和动态NAT不同的是,配置NAPT后,ping测试时只会使用一个地址,节省了地址数量。

实验:配置NAPT(二)

在路由器AR1上配置

[AR1-GigabitEthernet0/0/1]undo nat outbound 2000 address-group 1     \\在g0/0/1下禁用原来的NAPT应用[AR1]undo nat address-group 1     \\删除地址池1[AR1]nat address-group 1 200.100.1.5 200.100.1.5     \\配置地址池1,添加200.100.1.5这1个地址[AR1-GigabitEthernet0/0/1]nat outbound 2000 address-group 1     \\在g0/0/1接口下应用NAPT

在路由器AR2上配置

[AR2]user-interface vty 0 4     \\进入用户接口视图[AR2-ui-vty0-4]authentication-mode password     \\验证方式为密码
Please configure the login password (maximum length 16):12345[AR2-ui-vty0-4]protocol inbound telnet     \\启用telnet登录[AR2-ui-vty0-4]user privilege level 15     \\修改权限等级为15

在路由器AR3上配置

[AR3]ip route-static 0.0.0.0 0 192.168.1.1     \\配置一条默认路由

抓取AR1和AR2的g0/0/0口,并且在AR3上 telnet AR2进行测试

 

观察发现,内网地址192.168.1.4转换为了200.100.1.5,然后telnet源端口49918转换为808

测试成功。

五 Easy IP

EasyIP:实现原理和NAPT相同,同时转换IP地址、传输层端口,区别在于EasyIP没有地址池的概念,使用接口地址作为NAT转换的公有地址

EasyIP适用于不具备固定公网IP地址的场景:如通过DHCPPPPoE拨号获取地址的私有网络出口,可以直接使用获取到的动态地址进行转换。

实验:配置Easy IP

在路由器AR1上配置

[AR1]dhcp enable     \\开启DHCP功能[AR1-GigabitEthernet0/0/1]undo ip address     \\删除原有IP地址[AR1-GigabitEthernet0/0/1]ip address dhcp-alloc     \\开启DHCP客户端[AR1-GigabitEthernet0/0/1]undo nat outbound 2000 address-group 1     \\删除原有NAPT配置[AR1-GigabitEthernet0/0/1]nat outbound 2000     \\配置Easy ip

在路由器AR2上配置

[AR2]dhcp enable     \\开启DHCP功能[AR2-GigabitEthernet0/0/0]dhcp select interface     \\在接口g0/0/0上应用DHCP功能

使用PC1进行ping测试

测试可以ping通,再查看抓包

可以看出获取到的地址是200.100.1.254,测试成功

六 NAT Server

NATServer:指定[公有地址:端口]与[私有地址:端口]的一对一映射关系,将内网服务器映射到公网,当私有网络中的服务器需要对公网提供服务时使用。

外网主机主动访问[公有地址:端口]实现对内网服务器的访问。

实验:配置NAT Server

在路由器AR1上配置

//配置telnet服务器
[AR1]user-interface vty 0 4[AR1-ui-vty0-4]authentication-mode password
Please configure the login password (maximum length 16):12345[AR1-ui-vty0-4]protocol inbound telnet[AR1-ui-vty0-4]user privilege level 15//配置Easy IP
[AR1]acl 2000[AR1-acl-basic-2000]rule 5 permit source 192.168.1.0 0.0.0.255[AR1-GigabitEthernet0/0/1]nat outbound 2000//配置端口IP映射-NAT Server,将外部的IP地址和自定义端口8023映射到内部192.168.1.2的telnet服务(23号端口)
[AR1-GigabitEthernet0/0/1]nat server protocol tcp global current-interface 8023 inside 10.1.99.99 telnet 

在路由器AR2上配置

//配置telnet服务器
[AR2]user-interface vty 0 4[AR2-ui-vty0-4]authentication-mode password
Please configure the login password (maximum length 16):12345[AR2-ui-vty0-4]protocol inbound telnet [AR2-ui-vty0-4]user privilege level 15

在路由器AR3上配置

//配置telnet服务器
[AR3]user-interface vty 0 4[AR3-ui-vty0-4]authentication-mode password
Please configure the login password (maximum length 16):12345[AR3-ui-vty0-4]protocol inbound telnet [AR3-ui-vty0-4]user privilege level 15//配置一条默认路由
[AR3]ip route-static 0.0.0.0 0 192.168.1.1

测试

1 AR1 telnet AR2和AR3

 

测试成功

2 AR2 telnet AR1

测试成功

3 AR3 telnet AR1和AR2

测试成功

重点来了,抓包观察AR2和AR3的G0/0/0

4 AR2 telnet AR3 

telnet成功,现在我们观察抓包情况

在AR2的G0/0/0上

目标地址是200.100.1.1,而端口是我们自定义的8023

在AR3的G0/0/0上

映射为,目标地址是192.168.1.2,而端口是telnet的标准端口23。

测试成功。

2022-01-05 网工基础(十九)NAT基本原理与配置相关推荐

  1. 2021-12-15 网工基础(十一) VLAN的基本原理、接口类型、Access、Trunk

    VLAN基础 二 VLAN的基本原理 1 以太网二层接口类型 Access接口 交换机上常用来连接用户PC.服务器等终端设备的接口.Access接口所连接的这些设备的网卡往往只收发无标记帧.Acces ...

  2. Python基础十九:多进程

    Python基础十九:多进程 Python基础系列内容为学习廖雪峰老师Python3教程的记录,廖雪峰老师官网地址:廖雪峰Python3教程 Author:yooongchun Email:yooon ...

  3. 一个网工的十年奋斗史 - 工作篇

    作者:姜汁啤酒 原文:http://gingerbeer.blog.51cto.com/625855/1960918 大家好,我是姜汁啤酒,网络技术沉迷者及从业者. 目前作为Senior Networ ...

  4. Spring Cloud 2.2.2 源码之二十九nacos客户端获取配置原理四

    Spring Cloud 2.2.2 源码之二十九nacos客户端获取配置原理四 MetricsHttpAgent的httpGet ServerHttpAgent的httpGet HttpSimple ...

  5. 2021-12-29 网工基础(十六)动态路由OSPF基础

    一 动态路由概述 动态路由协议能够自动发现和生成路由,并在拓扑变化时及时更新路由,可以有效减少管理人员工作量,更适用于大规模网络. 自动发现.学习路由.感知拓扑变更. 二 动态路由分类 按工作区域分类 ...

  6. 2021-12-23 网工基础(十四) 链路聚合的两种模式、堆叠、集群、IP路由基础

    一 链路聚合的两种模式 1.手工模式(管理员手工指定,无协议报文.没有开销) 2.LACP模式(交换机之间会交互LACP的协议,会有一点儿报文交互)一般正常情况下推荐使用LACP模式. 一般自动协商都 ...

  7. 网工基础测试题(附HCIA题库)

    1. (单选) 管理员在华为AR2220路由器上做了如下配置,下列描述正确的是: <huawei>system-view [huawei]user-interface maximum-vt ...

  8. 一个网工的十年奋斗史 - 移民篇

    我在茶余饭后总能听到:某同事出国以后的生活多好,什么时候买了个别墅大house,什么时候晒了一下蓝天白云没有雾霾,让人羡慕不已. 可是我们也同样忽略了移民背后的努力和艰辛.殊不知对于移民的人来说,需要 ...

  9. 【网工基础】子网掩码及网络划分

    随着互连网应用的不断扩大,原先的 IPv4 的弊端也逐渐暴露出来,即网络号占位太多,而主机号位太少,所以其能提供 的主机地址也越来越稀缺.目前除了使用 NAT 在企业内部利用保留地址自行分配以外,通常 ...

  10. 2021-11-30 网工基础(三)物理层、数据链路层、VRP系统等基础

    一 物理层 1 物理层位于模型的最底层: 1 负责比特流在介质上的传输. 2 规范了线缆.针脚.电压.接口等物理特性规范. 3 常见的传输介质有:双绞线.光纤.电磁波等. 数据到达物理层之后,物理层会 ...

最新文章

  1. 产品经理也能动手实践的AI(一)- FastAI介绍
  2. android 退出多个activity,Android 中 退出多个activity的经典方法
  3. 两个队列实现一个栈思路c语言,两个栈实现队列功能C语言实现能运行!
  4. DNS劫持和HTTP劫持有何区别
  5. @@HOW TO:检查 MDAC 版本
  6. Uboot详细解析1
  7. laravel8+ 微信小程序生成二维码
  8. qt repaint 用法_QT 界面绘制刷新机制
  9. 基于Bilibili热门视频Top100弹幕的数据爬取与分析(报告版)
  10. java与seo_seo和java哪个更好!
  11. 中文主播也能海外带货!同声传译助直播类应用开拓海外市场
  12. laravel实现短信验证码功能
  13. 上传IPA包到App Store
  14. 计算机核心基础、计算机硬件组成原理、计算机硬件组成详解、硬盘接口及操作系统、计算机网络简述、OSI七层协议、子网划分、 VLAN简述
  15. 其他:Pycharm 常用快捷键
  16. Java题-一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?
  17. [译]用R语言做挖掘数据《七》
  18. 北师大c语言2019在线作业,2019最新C语言考试题库及答案
  19. JAVA抽象类接口初始化块实验_抽象类和接口 - 逝水无痕7777的个人空间 - OSCHINA - 中文开源技术交流社区...
  20. qr-code 生成二维码

热门文章

  1. 教你如何养微信小号,什么样的号可以群爆粉?
  2. 神经计算棒是什么_这是太棒了
  3. QT error: undefined reference to `__imp__ZN12QSqlDatabase7driversEv‘报错
  4. 商业化产品经理与用户产品经理区别
  5. 计算机原理--全加器
  6. 一次性搞懂JavaScript正则表达式之方法
  7. python获取图片长宽高,Python获取图片的大小/尺寸
  8. kali linux 2020.4 自带浏览器英文改中文
  9. 18款口碑爆棚手机浏览器,被一网打尽了
  10. 高效工作-使用石墨文档进行信息收集