NAT端口映射,实现外网访问内网服务器
目录
- 前言
- 一、搭建网络拓扑
- 1.1 配置server和pc
- 1.1.1 配置server0
- 1.1.2 配置server1
- 1.1.3 配置pc0
- 1.2 配置客户路由器
- 1.2.1 配置路由器IP
- 1.2.2 配置静态路由
- 1.3 配置ISP路由器
- 二、配置端口映射
- 2.1 在客户路由器配置端口映射
- 2.2 测试公网计算机访问私网服务器
- 2.2.1 PC0向server0发送HTTP请求
- 2.2.1 PC0向server1发送HTTP请求
- 总结
前言
本篇文章利用Cisco Packet Tracer网络模拟进行NAT端口映射,实现外网访问内网服务器。
一、搭建网络拓扑

1.1 配置server和pc
| 机器名 | IP地址 | 网关IP | 子网掩码 |
|---|---|---|---|
| Server0 | 192.168.1.2 | 192.168.1.1 | 255.255.255.0 |
| Server1 | 192.168.1.3 | 192.168.1.1 | 255.255.255.0 |
| PC0 | 114.25.63.24 | 114.25.63.1 | 255.255.255.0 |
1.1.1 配置server0

1.1.2 配置server1

1.1.3 配置pc0

1.2 配置客户路由器
1.2.1 配置路由器IP
| 接口名称 | IP地址 | 子网掩码 |
|---|---|---|
| fa0/0 | 192.168.1.1 | 255.255.255.0 |
| fa0/1 | 66.1.1.1 | 255.255.255.0 |
配置信息如下:
1. 配置fa0/0接口
Router>enable
Router#
Router#configure
Router(config)#
Router(config)#interface fa0/0
Router(config-if)#ip address 192.168.1.1 255.255.255.0
Router(config-if)#no shutdown
Router(config-if)#exit
Router(config)#2. 配置fa0/1接口
Router(config)#interface fa0/1
Router(config-if)#ip address 66.1.1.1 255.255.255.0
Router(config-if)#no shutdown
1.2.2 配置静态路由
为客户路由器配置默认路由,让客户路由器可以达到114.25.63.0/24网络。
命令:ip route 目标网段 目标网段掩码 下一跳路由的IP
这里设置默认路由
下一跳路由IP的意思是通过其可以到达目标网段
Router(config)#ip route 0.0.0.0 0.0.0.0 66.1.1.254或者可以设置静态路由
Router(config)#ip route 114.25.63.0 255.255.255.0 66.1.1.254以上两种配置的其中一种,均可以到达114.25.63.0/24网络
1.3 配置ISP路由器
| 接口名称 | IP地址 | 子网掩码 |
|---|---|---|
| fa0/0 | 66.1.1.254 | 255.255.255.0 |
| fa0/1 | 114.25.63.1 | 255.255.255.0 |
配置信息如下:
1. 配置fa0/0接口
Router>enable
Router#
Router#configure
Router(config)#
Router(config)#interface fa0/0
Router(config-if)#ip address 66.1.1.254 255.255.255.0
Router(config-if)#no shutdown
Router(config-if)#exit
Router(config)#2. 配置fa0/1接口
Router(config)#interface fa0/1
Router(config-if)#ip address 114.25.63.1 255.255.255.0
Router(config-if)#no shutdown
以上配置完成后,测试各个主机的连通性,这里不再介绍。
二、配置端口映射
2.1 在客户路由器配置端口映射
由于这里使用HTTP服务,则应该对应两个服务器的80端口进行映射
| 端口映射表 | |||
|---|---|---|---|
| 私网IP | 私网机器端口 | 公网IP | 公网机器端口 |
| 192.168.1.2 | 80 | 66.1.1.2 | 6666 |
| 192.168.1.3 | 80 | 66.1.1.2 | 8888 |
配置信息如下:
Router>enable
Router#
Router#configure
Router(config)#
1. 配置接口fa0/0为内网口
Router(config)#interface fa0/0
Router(config-if)#ip nat inside
Router(config-if)#exit
Router(config)#
2. 配置接口fa0/1为外网口
Router(config)#interface fa0/1
Router(config-if)#ip nat outside
Router(config-if)#exit
Router(config)#3. 私网IP 端口->公网IP 端口
命令:ip nat inside source static 协议(udp或tcp) 私网ip 端口 公网ip 端口
Router(config)#ip nat inside source static tcp 192.168.1.2 80 66.1.1.2 6666
Router(config)#ip nat inside source static tcp 192.168.1.3 80 66.1.1.2 8888
2.2 测试公网计算机访问私网服务器
2.2.1 PC0向server0发送HTTP请求
如果映射成功,则可以通过66.1.1.2:6666访问server0(192.168.1.2)

这里,可以去修改server0的index.html的内容

2.2.1 PC0向server1发送HTTP请求
如果映射成功,则可以通过66.1.1.2:8888访问server1(192.168.1.3)

总结
nat还有一种静态配置,即一个公网IP映射一个私网IP。
nat端口映射可以实现一个公网IP映射多个私网IP,只需要控制端口号的选择。
相关文章:
NAT端口映射,实现外网访问内网服务器
目录 前言一、搭建网络拓扑1.1 配置server和pc1.1.1 配置server01.1.2 配置server11.1.3 配置pc0 1.2 配置客户路由器1.2.1 配置路由器IP1.2.2 配置静态路由 1.3 配置ISP路由器 二、配置端口映射2.1 在客户路由器配置端口映射2.2 测试公网计算机访问私网服务器2.2.1 PC0向serve…...
【面试笔记】嵌入式软件工程师,汽车电子软件相关
文章目录 1. C语言基础1.1 const1.2 static1.3 回调函数的用法1.4 宏定义1.5 编译、链接过程1.6 堆与栈的区别?1.7 简单的字符串算法题,C语言实现1.7.1 给定一个字符串,按顺序筛选出不重复的字符组成字符串,输出该字符串1.7.2 给定…...
uniapp小程序开发 | 从零实现一款影视类app (后台接口实现,go-zero微服务的使用)
uniapp小程序开发实战系列,完整介绍从零实现一款影视类小程序。包含小程序前端和后台接口的全部完整实现。系列连载中,喜欢的可以点击收藏。 该篇着重介绍获取轮播图后台接口和获取正在热映电影的两个后台接口的实现。 后台服务使用golang,…...
【C#】委托
文章目录 委托自定义委托模板方法(工厂模式回调(callback)函数(观察者模式多播(multicast)委托委托的高级使用使用接口 重构 模板方法代码注意参考 委托 委托(delegate)是一种类型,定义了一种方…...
【面试题】创建两个线程交替打印100以内数字(一个打印偶数一个打印奇数)
阅读导航 一、问题概述二、解决思路三、代码实现四、代码优化 一、问题概述 面试官:C多线程了解吗?你给我写一下,起两个线程交替打印0~100的奇偶数。就是有两个线程,一个线程打印奇数另一个打印偶数,它们交替输出&…...
PgMP考试结束后多久出成绩?附成绩查询方法
PgMP考试结束后多久出成绩?这是许多参加PgMP考试的考生都非常关心的问题。今天就给大家讲解一下PgMP考试多久可以知道成绩? 一、PgMP考试成绩查询时间 PgMP考试一般在考试结束后的6-8周左右才会出成绩,届时PMI官方会通过电子邮件的形式提醒…...
springboot项目Redis统计在线用户
springboot项目Redis统计在线用户 我的项目有个显示用户的遗忘曲线,需要统计在线用户以计算他们的曲线 思考了两种方案,但都是用Redis的bitmap数据结构Bitmap是一种特殊类型的数组,其中每个元素只能存储0或1。在Redis中,Bitmap实际…...
GNeRF论文理解
文章目录 主要解决什么问题?结构设计以及为什么有效果?个人想法。 主要解决什么问题? 本文主要想要解决的问题是 如何使用uncalibrated的照片来进行Nerf重建。虽然说现在已经有了一些方式可以对相机位姿进行估计和优化,但是他们限…...
0531作业 链表
结果 整体代码 主要实现 /**实现* */ #include "./linklist.h"linklist* create_linklist(datatype param){linklist* node(linklist*)malloc(sizeof(linklist));if(NULLnode){puts("节点创建失败");}node->paramparam;node->pnextNULL;puts("…...
C++ STL - 容器
C STL(标准模板库)中的容器是一组通用的、可复用的数据结构,用于存储和管理不同类型的数据。 目录 零. 简介: 一 . vector(动态数组) 二. list(双向链表) 三. deque(…...
AI生成沉浸式3D世界(空间照片/视频)
面向Vision Pro等空间计算设备的产品指南 & 技术实现路径 一、通俗理解 ldi3格式概览:这是一种创新的3D内容格式,专为Vision Pro、Quest等VR头戴设备设计,让你能沉浸在一个几可乱真的三维世界,体验仿佛亲临其境的感受。 内容创作:利用开源工具,结合多角度摄像捕捉,…...
【Vue】异步更新 $nextTick
文章目录 一、引出问题二、解决方案三、代码实现 一、引出问题 需求 编辑标题, 编辑框自动聚焦 点击编辑,显示编辑框让编辑框,立刻获取焦点 即下图上面结构隐藏,下面结构显示,并且显示的时候让它自动聚焦。 代码如下 问题 “…...
【uCOS-III-编程指南】
uCOS-III-编程指南 ■ [野火]uCOS-III内核实现与应用开发实战指南■■■■ ■ [野火]uCOS-III内核实现与应用开发实战指南 添加链接描述 ■ ■ ■ ■...
2004NOIP普及组真题 2. 花生采摘
线上OJ: 【04NOIP普及组】花生采摘 核心思想: 1、本题为贪心即可。 2、因为本题严格限制了顺序,所以先把每个节点的花生数量按降序排序。然后逐一判断下一个花生是否需要去采摘即可 3、每一次采摘完,记录耗时 t 以及采集的花…...
SAP-SD-21-定义用于定价补充的定价过程
图9 维护条件类型...
Android AAudio——C API创建AudioTrack(六)
虽然 AAudio 试图提供一种直接的硬件访问途径,但在某些场景下,如处理兼容性问题、使用系统服务(如 AudioFlinger)或者在某些设备上,使用 AudioTrack 可能是最有效或最合适的途径。这并不违背 AAudio 的初衷,因为它的目标是提供高性能的音频处理,而不是避免使用系统服务。…...
实验七、创建小型实验拓扑《计算机网络》
早检到底是谁发明出来的。 一、实验目的 完成本实验后,您将能够: • 设计逻辑网络。 • 配置物理实验拓扑。 • 配置 LAN 逻辑拓扑。 • 验证 LAN 连通性。 二、实验任务 在本实验中,将要求您连接网络设备并配置主机实现基本的网络…...
SqlServer2016企业版安装
前言 好久没有知识的累积,最近工作上遇到新的SqlServer2016安装,记录一下 参考文章 SQL Server 2016软件安装包和安装教程 - 哔哩哔哩 (bilibili.com) 安装包准备 需要提前准备软件安装包如下 cn_sql_server_2016_enterprise_x64_dvd_8699450&…...
HBase数据库面试知识点:第一部分 - 基础概念与特点(持续更新中)
目录 一、HBase基础概念 1. HBase定义 2. 核心组件 3. HBase的特点 二、HBase与传统RDBMS的区别 1. 数据类型 2. 数据操作 3. 存储方式 4. 伸缩性 5. 事务性 三、HBase数据模型 四、HBase的特点 五、HBase与Hadoop生态系统的关系 一、HBase基础概念 1. HBase定义 …...
一个高效的go语言字符串转驼峰命名算法实现函数
在go语言的开发中我们经常需要对各种命名进行规范, 今天给大家介绍的是一个高效的将字符串转 驼峰命名 (即 首字母大写的命名方式)的函数。 // 字符串转驼峰命名 // author tekintian <tekintiangmail.com> func CamelStr(str string) …...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...
React---day11
14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store: 我们在使用异步的时候理应是要使用中间件的,但是configureStore 已经自动集成了 redux-thunk,注意action里面要返回函数 import { configureS…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...
STM32HAL库USART源代码解析及应用
STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...
MySQL:分区的基本使用
目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区(Partitioning)是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分(分区)可以独立存储、管理和优化,…...
实战三:开发网页端界面完成黑白视频转为彩色视频
一、需求描述 设计一个简单的视频上色应用,用户可以通过网页界面上传黑白视频,系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观,不需要了解技术细节。 效果图 二、实现思路 总体思路: 用户通过Gradio界面上…...
