笔记:NAT

一、NAT 的基本概念

NAT(Network Address Translation,网络地址转换) 是一种在 IP 网络中重新映射 IP 地址的技术,主要用于解决 IPv4 地址短缺问题,同时提供一定的网络安全防护作用。
功能: 将内部网络(私有网络)的 IP 地址转换为公共网络(如互联网)的 IP 地址,使多个内部设备可以共享一个或少量公共 IP 访问外部网络,反之亦然。

二、NAT的应用场景

单一公网IP

场景: 家庭或者小型企业,只有一个公网IP,多台设备需要上网。

企业网采用私有IP,Internet采用公有IP,私有IP的路由不允许联通到Internet,企业网接入Internet需要向运营商申请公有
IP。
IPv4公有IP比较稀缺,申请也需要较高的费用,普通企业只能申请少量的IPv4公有IP。

需求: 通过 NAT 将内部私有 IP 地址转换为同一公网 IP,实现多设备共享上网。
方式: 在路由器(或防火墙)上启用 NAT 功能,配置公网 IP 接口和内部私有 IP 网段(如192.168.1.0/24)。内部设备发送数据时,路由器将源 IP 替换为公网 IP;外部响应返回时,路由器根据 NAT 映射表将目标 IP 还原为内部设备的私有 IP。
优势:

  1. 节省公网 IP 资源:仅需一个公网 IP 即可支持数十甚至上百台设备联网。
  2. 简化网络配置:内部设备无需直接配置公网 IP,降低管理复杂度。

企业网络隔离与安全防护

场景: 企业内部网络包含多个子网(如办公网、研发网、服务器区),需限制不同子网之间的直接访问,同时允许特定子网访问互联网。
需求: 通过 NAT 实现子网间的 IP 地址隔离,并控制对外访问的流量。
**实现方式:**在边界防火墙或三层交换机上部署 NAT,为不同子网配置独立的私有 IP 网段(如办公网10.0.1.0/24、服务器区172.16.1.0/24)。当办公网设备访问互联网时,防火墙将源 IP 转换为公网 IP;外部设备无法直接访问内部私有 IP,需通过端口映射(Port Address Translation,PAT)开放特定服务(如 Web 服务器的 80/443 端口)。
优势:

  1. 增强网络安全性:隐藏内部真实 IP 地址,降低外部攻击风险。
  2. 精细化访问控制:通过 NAT 规则限制特定子网的上网权限(如禁止研发网直接访问互联网)。

数据中心服务器对外提供服务

场景: 数据中心部署多台服务器(如 Web 服务器、数据库服务器),需对外提供服务,但公网 IP 数量有限。
需求: 通过 NAT 将多台服务器的私有 IP 映射到少数公网 IP 的不同端口,实现 “多对一” 或 “一对一” 的地址转换。
实现方式: 端口映射(PAT):将多台服务器的私有 IP 与公网 IP 的不同端口绑定。

例如:
服务器 A(192.168.1.10:80)→ 公网 IP 203.0.113.1:8080
服务器 B(192.168.1.11:443)→ 公网 IP 203.0.113.1:8443
静态 NAT:为关键服务器分配固定的公网 IP(一对一映射),如数据库服务器需直接被外部系统访问。

优势:

  1. 高效利用公网 IP:通过端口复用,单个公网 IP 可承载多个服务。
  2. 灵活扩展服务:新增服务器时无需申请新公网 IP,只需调整 NAT 规则。

三、NAT的分类

1.NAT(网络地址转换)

一对一转换
定义: 将内部私有 IP 地址与公网 IP 地址进行固定的一对一映射,仅转换 IP 地址,不改变端口号。
特点:
1)每个内部 IP 对应唯一公网 IP,映射关系长期固定(需手动配置)。
2)内外网设备可双向主动通信(外部设备可通过公网 IP 直接访问内部设备)。

典型场景:
企业服务器(如 Web、FTP 服务器)需要对外提供服务,需固定公网 IP。

# 华为设备配置指令
system-view
# 配置静态 NAT 映射
nat static global 203.0.113.50 inside 192.168.1.100(需转换的内网设备IP地址) 
# 指定接口(对内)
interface Ethernet0/0/0  
nat inbound # 启用入站 NAT(允许外部访问内部)
# 指定接口(对外)
interface Ethernet0/0/1
ip address 203.0.113.50 24  #公网IP地址
quit

2.PAT(端口地址转换)

多对一转换
定义: 将多个内部私有 IP 地址映射到同一个公网 IP 的不同端口,通过端口号区分不同设备的连接(即 “IP + 端口” 组合唯一标识一个内部设备)。
**特点:**仅需一个公网 IP即可支持大量内部设备同时联网(端口号范围:0-65535,理论上可支持约 6.5 万个连接)。仅支持内部设备主动发起连接,外部设备无法直接通过公网 IP 访问内部设备(需额外配置端口映射)。

典型场景:
家庭网络:家用路由器通过 PAT 让多台手机、电脑共享一个宽带公网 IP 上网。
企业网络:中小企业通过 PAT 实现数百台设备共用少量公网 IP 访问互联网。
运营商网络:CG-NAT(运营商级 NAT)通过 PAT 为数十万用户分配共享公网 IP。

# # 华为设备配置指令
system-view
# 定义 ACL 匹配内网网段
acl number 2000   #创建ACL
rule 5 permit source 192.168.1.0 0.0.0.255  #规则5,允许192.168.1.0的网段通过
quit
# 配置 PAT(出接口公网 IP + ACL)
interface Ethernet0/0/1 # 外部接口(连接公网)
nat outbound 2000 # 关联 ACL 规则2000 实现 PAT
ip address 203.0.113.50 24 
quit

PAT 默认不支持外部主动连接,如需开放特定服务(如 Web 服务器),需配置静态端口映射:
[Huawei] nat static global 203.0.113.50 port 80 inside 192.168.1.100 port 80 # 将公网80端口映射到内部服务器

3.静态NAT

定义: 将内部私有 IP 地址与公网 IP 地址进行手动配置的固定一对一映射,映射关系长期存在且不会自动变更。
特点
1)手动配置:需管理员手动指定内部 IP 和公网 IP 的对应关系。
2)双向通信:内部设备可主动访问外部网络。外部设备可通过公网 IP 直接访问内部设备(因映射关系固定)。
3)公网 IP 独占:每个内部 IP 占用一个公网 IP,即使设备未联网,公网 IP 也会被保留。
4)安全性:内部 IP 部分暴露(公网 IP 固定),但可通过防火墙进一步限制访问。

4.动态 NAT

定义: 通过公网 IP 地址池动态建立内部 IP 与公网 IP 的一对一映射。当内部设备发起连接时,NAT 设备从地址池中分配一个未被使用的公网 IP,连接结束后释放该 IP 供其他设备使用。
特点:
动态分配与释放: 公网 IP 地址池包含多个公网 IP(如203.0.113.50 ~ 203.0.113.60)。内部设备联网时自动分配地址池中可用 IP,断开后立即释放。
单向通信为主: 通常由内部设备主动发起连接,外部设备无法直接通过公网 IP 访问内部设备(除非配置端口映射)。
公网 IP 复用: 同一公网 IP 可在不同时间分配给不同内部设备,但同一时刻一个公网 IP 仅对应一个内部设备。
自动管理: 无需手动为每个设备配置映射,适合设备数量动态变化的场景。

四、NAT配置案例

在这里插入图片描述

# 进入系统视图
<Huawei> system-view
[Huawei]# 1. 配置接口
[Huawei] interface GigabitEthernet0/0/1  # 内网接口
[Huawei-GigabitEthernet0/0/1] ip address 192.168.1.1 255.255.255.252
[Huawei-GigabitEthernet0/0/1] quit[Huawei] interface GigabitEthernet0/0/2  # 外网接口
[Huawei-GigabitEthernet0/0/2] ip address 202.112.193.2 255.255.255.252
[Huawei-GigabitEthernet0/0/2] quit# 2. 配置内部主机访问公网(PAT)
[Huawei] acl number 2000  # 创建基本 ACL
[Huawei-acl-basic-2000] rule 5 permit source 10.10.10.0 0.0.0.255  # 匹配内网网段
[Huawei-acl-basic-2000] quit[Huawei] interface GigabitEthernet0/0/2  # 外网接口
[Huawei-GigabitEthernet0/0/2] nat outbound 2000  # 启用 PAT(默认通过端口复用实现多对一)
[Huawei-GigabitEthernet0/0/2] quit# 3. 配置内部服务器对外提供 www 服务(静态 NAT)
[Huawei] nat static global 202.112.193.2 inside 172.16.10.100  # 静态 IP 映射
[Huawei] nat static protocol tcp global 202.112.193.2 80 inside 172.16.10.100 80  # 端口映射
[Huawei] quit# 4. 配置默认路由
[Huawei] ip route-static 0.0.0.0 0.0.0.0 202.112.193.1  # 指向公网网关
[Huawei] quit

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/80923.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cursor/vscode启动项目connect ETIMEDOUT 127.0.0.1:xx

现象&#xff1a; 上午正常使用cursor/vscode&#xff0c;因为需要写前端安装了nodejs16.20和vue2&#xff0c;结果下午启动前端服务无法访问&#xff0c;浏览器一直转圈。接着测试运行最简单的flask服务&#xff0c;vscode报错connect ETIMEDOUT 127.0.0.1:xx&#xff0c;要么…

EXO分布式部署deepseek r1

EXO 是一个支持分布式 AI 计算的框架&#xff0c;可以用于在多个设备&#xff08;包括 Mac Studio&#xff09;上运行大语言模型&#xff08;LLM&#xff09;。以下是联调 Mac Studio 512GB 的步骤&#xff1a; 安装 EXO • 从 EXO GitHub 仓库 下载源码或使用 git clone 获取…

python训练营打卡第30天

模块和库的导入 知识点回顾&#xff1a; 导入官方库的三种手段导入自定义库/模块的方式导入库/模块的核心逻辑&#xff1a;找到根目录&#xff08;python解释器的目录和终端的目录不一致&#xff09; 一、导入官方库 1.标准导入&#xff1a;导入整个库 import mathprint(&quo…

Unity 多时间源Timer定时器实战分享:健壮性、高效性、多线程安全与稳定性能全面解析

简介 Timer 是一个 Unity 环境下高效、灵活的定时任务调度系统&#xff0c;支持以下功能&#xff1a; •支持多种时间源&#xff08;游戏时间 / 非缩放时间 / 真实时间&#xff09; •支持一次性延迟执行和重复执行 •提供 ID、回调、目标对象等多种查询和销毁方式 •内建…

深入理解Docker和K8S

深入理解Docker和K8S Docker 是大型架构的必备技能&#xff0c;也是云原生核心。Docker 容器化作为一种轻量级的虚拟化技术&#xff0c;其核心思想&#xff1a;将应用程序及其所有依赖项打包在一起&#xff0c;形成一个可移植的单元。 容器的本质是进程&#xff1a; 容器是在…

docker中使用openresty

1.为什么要使用openresty 我这边是因为要使用1Panel&#xff0c;第一个最大的原因&#xff0c;就是图方便&#xff0c;比较可以一键安装。但以前一直都是直接安装nginx。所以需要一个过度。 2.如何查看openResty使用了nginx哪个版本 /usr/local/openresty/nginx/sbin/nginx …

CSS【详解】弹性布局 flex

适用场景 一维&#xff08;行或列&#xff09;布局 基本概念 包裹所有被布局元素的父元素为容器 所有被布局的元素为项目 项目的排列方向&#xff08;垂直/水平&#xff09;为主轴 与主轴垂直的方向交交叉轴 容器上启用 flex 布局 将容器的 display 样式设置为 flex 或 i…

全能视频处理工具介绍说明

软件介绍 本文介绍的软件是FFmpeg小白助手&#xff0c;它是一款视频处理工具。 使用便捷性 这款FFmpeg小白助手无需安装&#xff0c;解压出来就能够直接投入使用。 主要功能概述 该工具主要具备格式转换、文件裁剪、文件压缩、文件合并这四大功能。 格式转换能力 软件支持…

Linux中的DNS的安装与配置

DNS简介 DNS&#xff08;DomainNameSystem&#xff09;是互联网上的一项服务&#xff0c;它作为将域名和IP地址相互映射的一个分布式数据库&#xff0c;能够使人更方便的访问互联网。 DNS使用的是53端口 通常DNS是以UDP这个较快速的数据传输协议来查询的&#xff0c;但是没有查…

tshark的使用技巧(wireshark的命令行,类似tcpdump):转换格式,设置filter

tshark的使用技巧&#xff08;wireshark的命令行&#xff0c;类似tcpdump&#xff09;&#xff1a;转换格式&#xff0c;设置filter tshark一般在 C:\Program Files\Wireshark 使用管理员权限 打开cmd tshark -D 列出支持抓包的接口&#xff1a; c:\Program Files\Wiresh…

vscode打开的文件被覆盖/只能打开两个文件(Visual Studio Code)

vscode打开的文件被覆盖/只能打开两个文件&#xff08;Visual Studio Code&#xff09; 单击代码文件&#xff1a;是预览模式&#xff0c;只会显示有限的一两个文件&#xff0c;在一个tab里更新显示 双击代码文件&#xff1a;是编辑模式&#xff0c;可以同时显示多个代码文件…

唯创安全优化纸业车间安全环境:门口盲区预警报警器的应用与成效

一、客户现场 客户主要从事于卷烟纸、成型纸、烟草制造业用纸及其他特定用途纸类制品的加工、生产与销售。在其厂区内&#xff0c;叉车频繁作业&#xff0c;车间环境复杂。经实地查看&#xff0c;发现几大安全隐患&#xff1a; 门口拐角隐患&#xff1a;门口拐角处因卷帘门阻…

Debezium快照事件监听器系统设计

Debezium快照事件监听器系统设计 1. 系统概述 1.1 设计目标 为 Debezium 的快照过程提供可扩展的事件监听机制允许外部系统在快照过程中执行自定义逻辑提供线程安全的事件分发机制确保监听器的异常不会影响主快照流程1.2 核心功能 表快照开始事件监听表快照完成事件监听行数据…

Ubuntu 20.04安装及配置docker

在安装docker的过程中主要参考博客&#xff1a;ubuntu20.04 安装docker (详细版) 但是在测试&#xff1a; sudo docker run hello-world 时报错&#xff1a; docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request ca…

第23天-Python Flet 开发指南

环境准备 pip install flet 示例1:基础计数器应用 import flet as ftdef main(page: ft.Page):page.title = "计数器"page.vertical_alignment = ft.MainAxisAlignment.CENTERtxt_number = ft.TextField(value="0", text_align=ft.TextAlign.RIGHT, wid…

牛客网NC21989:牛牛学取余

牛客网NC21989:牛牛学取余 &#x1f4dd; 题目描述 ⏱️ 限制条件 时间限制&#xff1a;C/C/Rust/Pascal 1秒&#xff0c;其他语言2秒空间限制&#xff1a;C/C/Rust/Pascal 32 M&#xff0c;其他语言64 M输入范围&#xff1a;两个整数&#xff0c;在int范围内 &#x1f4e5;…

unity XCharts插件生成曲线图在UICanvas中

【推荐100个unity插件之22】基于UGUI的功能强大的简单易用的Unity数据可视化图表插件——XCharts3.0插件的使用_unity xcharts-CSDN博客

自动驾驶传感器数据处理:Python 如何让无人车更智能?

自动驾驶传感器数据处理:Python 如何让无人车更智能? 1. 引言:为什么自动驾驶离不开数据处理? 自动驾驶一直被誉为人工智能最具挑战性的应用之一,而其背后的核心技术正是 多传感器融合与数据处理。 一辆智能驾驶汽车,通常搭载: 激光雷达(LiDAR) —— 3D 环境感知,…

MCU 上电不启动的常见原因分析与排查思路

在开发过程中&#xff0c;“MCU 上电不运行”是我们经常遇到的问题之一。但客户对此类问题的描述往往较为模糊&#xff0c;仅简单表示“产品不工作”或“怀疑 MCU 没有运行”&#xff0c;这给我们现场排查带来了较大的挑战。即便工程师到达现场&#xff0c;往往也无法迅速定位问…

React中使用 Ant Design Charts 图表

// 引入 Ant Design Charts 的柱状图组件 Column import { Column } from ant-design/charts;// 定义函数组件 App&#xff0c;用于展示柱状图 function App() {// 数据源&#xff1a;每个对象代表一个柱子&#xff0c;包含类型&#xff08;type&#xff09;和销售额&#xff0…