NAT的三种形态

2024-05-01 04:58
文章标签 三种 nat 形态

本文主要是介绍NAT的三种形态,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这一篇讲NAT,NAT其实就是IP地址转换,转换是不区分公有IP还是私有IP,他只是有转换IP这个功能,灵活使用就可以了。

看一下分类

1、SAT 静态地址转换

一对一的地址转换。

2、DAT动态地址转换

将一个或者多个地址转换成一组地址中的一个或者多个,动态的决定哪两个IP进行转换。

3、PAT端口地址转换

将一个或者多个地址转换成出接口的IP的不同端口(port)。

1和2可能比较好理解,我来举个例子方便理解一下3。

我内网有192.168.1.0/24网段PC10台,网络采用固定IP网络,即网关出接口的IP是一个公网IP 202.99.99.99,PAT就是将内网的10台PC的IP进行转换,192.168.1.1转换成202.99.99.99 port:42000,192.168.1.2转换成202.99.99.99 port:42001,接口是我举例的不是真的,但是原理就是这样,通过不同的接口,区分不同的ip地址转换,当数据流结束以后,这个绑定会解除。

这里说一下,NAT其实很多地方都会用到,所以在ccna里我觉得他也是重点之一。

------------------------------------------------------------------------------------------------------------

废话不多说,我用一个实验,去说一下三种NAT怎么配置


我模拟了一个没有冗余的基本公司环境

1、AccessSW连接pc,DHCP获取1.1.1.100~150

2、WebSW连接的是一个Web服务器集群

3、AloneServer作为一个独立的发布的Server

4、CoreSW是核心三层交换机,上面会配置PC的DHCP

5、GW作为转发层设备,上面会有默认路由,回程路由

6、ISP作为运营商一端的设备,是无法配置路由等等的,我就给他配上IP,其他什么也不动。

我会把这些配置都配好,然后我们看一下,各个pc和Server能ping到哪里?为什么?

----------------------------------------------------------------------------------------------------------------

配置完成!然后测试,发现最远可以ping通GW的e0/0接口192.168.1.1,这时候你就说了,我不是给GW配了默认路由指向ISP么?对的,但是回程路由呢?ISP收到来自1.1.1.0网段,2.2.2.0网段,3.3.3.0网段,这么多私有地址,全世界会有无数个,他怎么知道谁是谁?(讲道理,GW和ISP之间使用的IP也必须是公有IP,大家自己脑补一下)

还有就是,ISP可是运营商的设备,他不可能让你去配置。那怎么办?内部网络不通,那我再试一下,从GW去pingISP所拥有的所有网段,发现没有问题,这是为什么?因为,GW和ISP是直连路由,ISP当然知道GW的存在,也知道怎么去GW。说道这里,我就简单的解释一下NAT到底做了些什么。

NAT会把一个指定的IP或者网段,转换成一个或者多个与对端设备可以通信的IP地址,也就是同网段,这个网段可以是私有,可以是公有,并且NAT会记录下这些转换,当接收到回程数据包的时候,就会一一的转发。

那么我内部有各种不同的IP环境,需要转换的方式不一样,这就需要NAT的三种模式解决这个问题。

接下来我会完成三种NAT

1、AloneServer做Static NAT(SAT)

2、WebServer集群做Dynamic NAT(DAT)

3、PC做Port NAT(PAT)

-------------------------------------------------------------------------------------------------------------

不管什么NAT都要先确定内部接口和外部接口(NAT是在GW上做的)

GW#conf t
GW(config)#int e0/1
GW(config-if)#ip nat inside                        //确定内部接口
GW(config-if)#int e0/0                           
GW(config-if)#ip nat outside                      //确定外部接口

---------------------------------------------------------------------------------------------------------------

先做SAT

GW(config)#ip nat inside source static 3.3.3.10 192.168.1.10
命令就这一句,我解释一下

ip nat-------创建nat

inside source---------内部源

static---------静态

3.3.3.10---------AloneServer的IP地址(内部本地IP---Inside local IP address)

192.168.1.10-----------------转换之后的IP(内部全局IP---Inside Global IP address)

注意:这里我再强调一下,192.168.1.0这个网段,如果是真实情况,应该是一个公有地址的网段

然后从AloneServer ping 一下 202.96.209.133就通了,我在ISP上起了debug ip icmp看一下收到的ping包是从哪里发来的

*Mar  1 00:45:02.911: ICMP: echo reply sent, src 202.96.209.133, dst 192.168.1.10

可以看到目标地址已经变成了192.168.1.10,转换成功

--------------------------------------------------------------------------------------------------------------------

接下来做DAT

1、做一个访问控制列表,之后会将网段和DAT进行绑定,由于一个路由器上未必只有一个DAT。

GW(config)#access-list 1 permit 2.2.2.0 0.0.0.255      //注意反掩码

2、设置转换之后的地址池(公网的)。

GW(config)#ip nat pool Web 192.168.1.100 192.168.1.200 prefix-length 24

Web是这个地址池的名字可以自定义

prefix-length是子网掩码\也可以用Netmask(可以打问号看一下,效果是一样的)

3、绑定

GW(config)#ip nat inside source list 1 pool Web

list1和Web进行绑定,然后从Web1和Web2 PING 202.96.209.133,就可以通了

检查debug

*Mar  1 01:02:35.783: ICMP: echo reply sent, src 202.96.209.133, dst 192.168.1.101
*Mar  1 01:02:39.847: ICMP: echo reply sent, src 202.96.209.133, dst 192.168.1.100

可以发现,他已经接收到了之前我规定的地址池网段,所发来的ICMP包

----------------------------------------------------------------------------------------------------------------

最后给PC做PAT

1、GW(config)#access-list 2 permit 1.1.1.0 0.0.0.255
1.1.1.0是pc的网段

2、GW(config)#ip nat inside source list 2 interface e0/0 overload

绑定NAT outside接口,并且设置复用(overlord)

PING测试

pc1和pc2都ping一下ISP的202.96.209.133,结果是通然后查看一下ISP的debug信息

*Mar  1 01:16:21.339: ICMP: echo reply sent, src 202.96.209.133, dst 192.168.1.1
*Mar  1 01:16:22.363: ICMP: echo reply sent, src 202.96.209.133, dst 192.168.1.1
发现都是GW的e0/0接口的IP,我在GW上使用查看NAT转换的命令

GW#sh ip nat translations
Pro Inside global      Inside local       Outside local      Outside global
icmp 192.168.1.1:1024  1.1.1.100:22733    202.96.209.133:22733 202.96.209.133:1024
icmp 192.168.1.1:23245 1.1.1.100:23245    202.96.209.133:23245 202.96.209.133:23245
icmp 192.168.1.1:23501 1.1.1.100:23501    202.96.209.133:23501 202.96.209.133:23501
icmp 192.168.1.1:22221 1.1.1.101:22221    202.96.209.133:22221 202.96.209.133:22221
icmp 192.168.1.1:22477 1.1.1.101:22477    202.96.209.133:22477 202.96.209.133:22477
我截取了一下,1.1.1.100是PC1           1.1.1.101是pc2

可以看到他们被转换成了192.168.1.1的不同端口(port),他就是这么工作的。发过去是这个端口,回复也是这个端口,这样NAT就能知道,到底应该转发给谁了。

---------------------------------------------------------------------------------------------------------------




好了NAT就全部完成了,正常的CCNA其实也就到这里。之后我还会有一片HSRP和端口聚合的实验,基本上这个实验我会按照最真实的环境去配置,保证物理上的冗余,和线路上的冗余。

这篇关于NAT的三种形态的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/950766

相关文章

在Spring中配置Quartz的三种方式

《在Spring中配置Quartz的三种方式》SpringQuartz是一个任务调度框架,它允许我们定期执行特定的任务,在Spring中,我们可以通过多种方式来配置Quartz,包括使用​​@Sche... 目录介绍使用 ​​@Scheduled​​ 注解XML 配置Java 配置1. 创建Quartz配置

网络学习-eNSP配置NAT

NAT实现内网和外网互通 #给路由器接口设置IP地址模拟实验环境<Huawei>system-viewEnter system view, return user view with Ctrl+Z.[Huawei]undo info-center enableInfo: Information center is disabled.[Huawei]interface gigabit

综合DHCP、ACL、NAT、Telnet和PPPoE进行网络设计练习

描述:企业内网和运营商网络如上图所示。 公网IP段:12.1.1.0/24。 内网IP段:192.168.1.0/24。 公网口PPPOE 拨号采用CHAP认证,用户名:admin 密码:Admin@123 财务PC 配置静态IP:192.168.1.8 R1使用模拟器中的AR201型号,作为交换路由一体机,下图的WAN口为E0/0/8口,可以在该接口下配置IP地址。 可以通过

结构化开发方法的三种基本控制结构

结构化开发方法概述 什么是结构化开发方法? 结构化开发方法是一种程序设计和系统开发的理念,旨在通过使用清晰、可预测的控制结构来提高程序的可读性、可维护性和可靠性。该方法强调使用标准化的编程结构,以减少程序中的错误并提高代码的逻辑清晰度。 结构化编程的历史背景 结构化编程(Structured Programming)这一概念最早由计算机科学家艾兹赫尔·戴克斯特拉(Edsger W. Dij

经验笔记:NAT穿越技术

NAT穿越技术经验笔记 随着互联网的普及和技术的发展,P2P(Peer to Peer,点对点)通信成为许多应用的核心功能之一。然而,网络地址转换(NAT)设备的存在常常成为实现P2P通信的一个障碍。本文旨在总结NAT穿越技术的基本原理及其配置方法,并探讨如何保障NAT穿越的安全性。 1. NAT穿越技术概述 NAT穿越技术是一种使位于不同NAT网络中的主机能够直接通信的技术。NAT(Net

2015多校联合训练第一场Assignment(hdu5289)三种解法

题目大意:给出一个数列,问其中存在多少连续子序列,子序列的最大值-最小值< k 这题有三种解法: 1:单调队列,时间复杂度O(n) 2:RMQ+二分,时间复杂度O(nlogn) 3:RMQ+贪心,时间复杂度O(nlogn) 一:RMQ+二分 RMQ维护最大值,最小值,枚举左端点i,二分找出最远的符合的右端点j,答案就是ans += j - i+1;(手推一下就知道) 比如1 2 3

selenium的webdriver三种等待方式(显式等待WebDriverWait+implicitly_wait隐式等待+sleep强制等待)

隐式等待是等页面加载,不是等元素!!! 1、显式等待  一个显式等待是你定义的一段代码,用于等待某个条件发生然后再继续执行后续代码。显式等待是等元素加载!!! from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import

c语言(三种语言对比、数据类型及输出、变量存储、内存分配)

数据类型: 变量的输出: c语言不能直接打印数字,字符,只能将他们转化成字符串打印, printf("%d\n", num); %d 是整数占位符,将来由逗号右边的变量的值占据这个位置。(%i和%d是一样的) %f 是浮点数占位符,默认输出小数点后6位,若只想输出小数点后两位:%.2f %c 是字符型数据占位符。

常见的交换变量的三种方法

常见的交换变量的三种方法     在项目中,两个变量之间交换位置在常见不过了,如进行排序。     下面说下常见的三中变量交换模式。 1、定义中间变量 #include <stdio.h>int main(){int a=9, b=3; //方法一://交换两个变量值的常规做法int tmp=a;a=b;b=tmp;printf("a=%d b=%d\n",a,b);

Java获取小程序码示例(三种小程序码)

首先我们可以看到官方文档上是有三种码的 获取小程序码 这里特别要注意的是第一种和第三种是有数量限制的,所以大家生成的时候记得保存,也不要一直瞎生成 还有一点要注意的是第一种和第二种是太阳码 第三种是方形码 好了直接上代码 这里要注意,它请求成功返回的是一个 base64 的图片流,但是失败返回的是JSON字符串,我这里没有处理请求失败的问题 package com.sakur