NAT-网络地址转换
NAT
一、概述
NAT(Network Address Translation,网络地址转换)是将IP数据报文头中的IP地址转换为另一个IP地址的过程。在实际应用中,NAT主要用于实现私有网络访问公共网络的功能。这种通过使用少量的公网IP地址代表较多的私网IP地址的方式,将有助于减缓可用IP地址空间的枯竭。
- 私网IP地址是指内部网络或主机的IP地址,公网IP地址是指在因特网上全球唯一的IP地址。
- RFC 1918为私有网络预留出了三个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
(上述三个范围内的地址不会在因特网上被分配,因此可以不必向ISP或注册中心申请而在公司或企业内部自由使用。)
- NAT最初的设计目的是用于实现私有网络访问公共网络的功能,后扩展到实现任意两个网络间进行访问时的地址转换应用,本文中将这两个网络分别称为内部网络(内网)和外部网络(外网),通常私网为内部网络,公网为外部网络。
地址转换的基本过程
1、内网用户主机(192.168.1.3)向外网服务器(1.1.1.2)发送的IP报文通过NAT设备。
- NAT设备查看报头内容,发现该报文是发往外网的,将其源IP地址字段的私网地址92.168.1.3转换成一个可在Internet上选路的公网地址20.1.1.1,并将该报文发送给外网服务器,同时在NAT设备的网络地址转换表中记录这一映射。
2、外网服务器给内网用户发送的应答报文(其初始目的IP地址为20.1.1.1)到达NAT设备后,
NAT设备再次查看报头内容,然后查找当前网络地址转换表的记录,用内网私有地址192.168.1.3替换初始的目的IP地址。
上述的NAT过程对终端(如图中的Host和Server)来说是透明的。对外网服务器而言,它认为内网用户主机的IP地址就是20.1.1.1,并不知道有192.168.1.3这个地址。因此,NAT“隐藏”了企业的私有网络。
地址转换的优点在于,在为内部网络主机提供了“隐私”保护的前提下,实现了内部网络的主机通过该功能访问外部网络的资源。但它也有一些缺点:
- 由于需要对数据报文进行IP地址的转换,涉及IP地址的数据报文的报头不能被加密。在应用协议中,如果报文中有地址或端口需要转换,则报文不能被加密。例如,不能使用加密的FTP连接,否则FTP协议的port命令不能被正确转换。
- 网络调试变得更加困难。比如,某一台内部网络的主机试图攻击其它网络,则很难指出究竟哪一台主机是恶意的,因为主机的IP地址被屏蔽了。
二、地址转换控制
在实际应用中,我们可能希望某些内部网络的主机可以访问外部网络,而某些主机不允许访问,即当NAT设备查看IP数据报文的报头内容时,如果发现源IP地址属于禁止访问外部网络的内部主机,它将不进行地址转换。另外,也希望只有指定的公网地址才可用于地址转换。
设备可以NAT规则的匹配条件和NAT地址池来对地址转换进行控制。
- 匹配条件可以有效地控制地址转换的使用范围,只有满足匹配条件的数据报文才可以进行地址转换。
- 地址池是用于地址转换的一些连续的公网IP地址的集合,它可以有效地控制公网地址的使用。用户可根据自己拥有的合法IP地址数目、内部网络主机数目以及实际应用情况,定义合适的地址池。在地址转换的过程中,NAT设备将会从地址池中挑选一个IP地址作为数据报文转换后的源IP地址。
三、NAT实现
通过创建并执行NAT规则来实现NAT功能。NAT规则有三类,分别为源NAT规则、目的NAT规则和静态NAT规则。源NAT转换源IP地址,从而隐藏内部IP地址或者分享有限的IP地址;目的NAT转换目的IP地址,通常是将受保护的内部服务器的IP地址转换成公网IP地址;静态转换是指将内部网络的私有IP地址转换为公有IP地址,IP地址对是一对一的,是一成不变的,某个私有IP地址只转换为某个公有IP地址。
四、NAT日志简介
NAT日志是NAT设备在进行NAT转换时生成的一种系统信息。该信息包括报文的源IP地址、源端口、目的IP地址、目的端口、转换后的IP地址、转换后端口信息、NAT转换类型等。利用NAT日志功能可以实时跟踪、记录内网、外部用户互访网络的情况,增强网络的安全性。
五、配置源NAT
1、配置准备
- 确定是否直接使用接口的IP地址作为转换后的报文源地址。如果否的话,需要根据实际网络情况,合理规划可用于地址转换的公网IP地址池。
- 根据实际网络情况,配置源NAT转换的规则的匹配条件:源、目的IP地址对象、服务对象(具体配置见对象管理章节)。
2、配置
源地址转换即内网地址向外访问时,发起访问的内网IP地址转换为指定的IP地址(可指定具体的服务以及相应的端口或端口范围),这可以使内网的多部主机可以通过一个或者多个有效的公网IP地址访问外部网络。
操作 | 命令 | 说明 |
进入系统试图 | system-view | 必须 |
配置NAT转换规则 | ip nat source interface-name {source address | any}{destination-address | any} service {pool | interface-name}[log][id] | 必须 |
六、配置目的NAT
1、配置准备
- 确定是否需要做端口映射,如果需要,则参见端口映射的配置。
- 根据实际网络情况,配置目的NAT转换的规则的匹配条件:源、目的IP地址对象、服务对象(具体配置见对象管理章节)。
- 需要根据实际网络情况,配置可用于地址转换的内部服务器IP地址池。
2、配置
目的NAT多用于外部网络到内部服务器的访问,内部服务器可使用保留IP地址。将外部主机访问设定好的全局地址的数据包的目的地址替换成内部主机的地址,也就是常见的虚拟服务器,可对转换业务进行端口映射。这样外部主机可以访问内部的主机,但内部主机无法主动访问外部主机。
(1)基础配置
操作 | 命令 | 说明 |
进入系统试图 | system-view | 必须 |
配置目的NAT转换规则 | ip nat destination interface-name{ip-address | any}{ip-address | any} servicepool[log][id] | 必须 |
(2)端口映射
操作 | 命令 | 说明 |
进入系统视图 | system-view | 必须 |
配置目的NAT端口映射 | ip nat destination interface-name{ip-address | any}{ip-address | any} servicepool server port-num[log][id] | 必须 |
七、配置静态NAT
外部网络和内部网络之间的地址映射关系在配置中确定。适用于内部网络与外部网络之间的少量固定访问需求。支持一对一的转换方式,即实现一个内部私网地址到一个外部公网地址的转换。
操作 | 命令 | 说明 |
进入系统视图 | system-view | - |
配置静态NAT | ip nat static interface-name global-address local-address[id] | 必须 |
八、配置NAT ALG功能
在应用层协议中,有很多协议都包含多通道的信息,比如多媒体协议(H.323、SIP等)、FTP、TFTP等。这种多通道的应用需要首先在控制通道中对后续数据通道的地址和端口进行协商,然后根据协商结果创建多个数据通道连接。在NAT的实际应用过程中,NAT仅对网络层报文的报文头进行IP地址的识别和转换,对于应用层协议协商过程中报文载荷携带的地址信息则无法进行识别和转换,因此在有NAT处理的组网方案中,NAT利用ALG技术可以对多通道协议进行应用层的报文信息的解析和地址转换,保证应用层上通信的正确性。
操作 | 命令 | 说明 |
进入系统视图 | system-view | - |
配置NAT ALG | alg{ftp | h323 | pptp | sip | tftp | 必须 |
九、配置NAT地址池
地址转换的过程中,NAT设备将会从配置的地址池中挑选一个IP地址作为转换后的报文源地址或者目的地址。每个地址池里可以指定多段非连续的IP地址。
操作 | 命令 | 说明 |
进入系统试图 | system-view | - |
创建NAT地址池 | ip nat pool pool-name | 必须 |
地址池中添加地址段 | ip address start-ip-address end-ip-address | 必须 |
十、NAT显示和维护
操作 | 命令 |
NAT配置显示 | display running-config nat |
十一、参考文献
h3c.com/cn 文献下载: NAT配置指导 (372.78 KB)
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现