NAT网络地址转换
Posted ananing
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NAT网络地址转换相关的知识,希望对你有一定的参考价值。
一、NAT基本概念
1)技术背景
- IPv4地址已经耗尽。
- 局域网用户普遍使用私有IPv4地址,如何访问公网。
- 局域网中使用私有IPv4地址的服务器如何对公网提供服务。
- 若需要对外隐藏内网的IP,同时内网的特定服务器又需对外提供服务该如何实现。
2)公网IP地址及私有IP地址
公网地址:
公网地址是指可以在Internet上使用的地址。为保证整个Internet内的IP地址的 唯一性,公网地址由IANA(Internet Assigned Number Authority)这个国际组 织负责分配。一台网络设备如果需要使用公网地址,就必须向ISP(Internet Service Provider)或注册中心申请。
私有地址:
为了满足一些实验室、公司或其他组织的独立于Internet之外的私有网络的需求,RFCA(Requests For Comment)1918为私有使用留出了三个IP地址段。私有地址不能在Internet上被分配,因而可以不必申请就可以自由使用。
私有IPv4地址空间 | ||
---|---|---|
A类 | 10.0.0.0 | 10.255.255.255(10.0.0.0/8) |
B类 | 172.16.0.0 | 172.31.255.255(172.16.0.0/12) |
C类 | 192.168.0.0 | 192.168.255.255(192.168.0.0/16) |
3)什么是NAT
NAT(Network Address Translator)的主要原理是通过解析IP报文头部,自动替换报文头中的源地址或目的地址,实现私网用户通过私网IP访问公网的目的。私网IP转换为公网IP的过程对用户来说是透明的。
4)NAT的优缺点
优点 | 缺点 |
---|---|
缓解公网地址紧缺问题 | 存在转发延迟 |
解决IP地址冲突或重叠的问题 | 端到端寻址变得困难 |
网络扩展性更高,本地控制也更容易 | 某些应用不支持NAT |
内网结构及相关操作对外变得不可见 | NAT产生的表项需占用设备的内存空间 |
增加了安全性 | 设备性能问题 |
5)NAT类型
源IP地址转换(Source IP address-based NAT)
- No-Port 地址转换(No-PAT)
- 网络地址及端口转换(NAPT)
目的IP地址转换(Destination IP address-based NAT): - NAT Server
- 目的NAT
(5.1)NAT类型1:No-PAT
- NAT No-PAT也可以称为“一对一地址转换”,在地址转换过程中,数据包的源IP地址由私网地址转换为公网地址,但端口号不做转换。
- 配置No-pat参数后,设备会将转换前后的地址的所有端口进行一一对应的。这种应用的优点是内网地址的所有端口不做转换,缺点是该公网地址不能被其他内网地址使用。
- 例如,地址池中的公网IP地址只有两个。由于一台私网主机在借用其中的一个公网IP访问公网时,会占用这个IP的所有端口。因此,这种情况只允许最多有两台私网主机同时访问公网,其他的私网主机要等到其中一台主机不再访问公网,它占用的公网IP地址被释放后,才可以再进行NAT访问公网。
(5.2)类型2:NAPT
- NAPT是指在进行NAT转换IP地址的同时,还对端口号进行转换。这种应用可以实现多个内网用户共用一个公网IP。在NAPT方式中,还可以直接借用设备与外网相连的接口的IP地址作为转换后的IP地址,这种借用接口IP做NAT的应用又称为easy-ip。
- NAPT也可以称之为“地址复用”。通过配置NAPT功能,设备将同时对端口号和IP地址进行映射,允许多个私网IP地址同时映射到同一个公网IP地址,相同的公网IP地址通过不同的端口号区分映射不同的私网IP地址,从而实现多对一或多对多的地址转换。
- Easy IP
- EASY IP方式是指直接使用接口的公网IP地址作为转换后的源地址进行地址转换,它可以动态获取出接口地址,从而有效支持出接口通过拨号或DHCP方式获取公网IP地址的应用场景。同时,EASY IP方式也可以利用访问控制列表来控制哪些内部地址可以进行地址转换。
- EASY IP方式特别适合小型局域网访问Internet的情况。这里的小型局域网主要指中小型网吧、小型办公室等环境,一般具有以下特点:内部主机较少、出接口通过拨号方式获得临时公网IP地址以供内部主机访问Internet。对于这种情况,可以使用EASY IP方式使局域网用户都通过这个IP地址接入
Internet。
(5.3)NAT类型3:NAT Server
- NAT Server是最常用的基于目的地址的NAT。当内网部署了一台服务器,其真实IP是私网地址,但是公网用户只能通过一个公网地址来访问该服务器,这时可以配置NAT Server,使设备将公网用户访问该公网地址的报文自动转发给内网服务器。
- NAT Server功能使得内部服务器可以供外部网络访问。外部网络的用户访问内部服务器时,NAT将请求报文的目的地址转换成内部服务器的私有地址。对内部服务器回应报文而言,NAT还会自动将回应报文的源地址(私网地址)转换成公网地址。
二、配置NAT
1)NAT类型1:No-PAT
- 要求Trust区域的192.168.1.0/24网段的用户可以访问Internet,该安全区域其
它网段的用户不能访问。提供的访问Internet的公网IP地址范围为200.1.1.10 – 200.1.1.20。 - 采用No-PAT的方式,也即只做IP地址转换,而端口不转换,一个私有IP独占一个公网IP地址。
- 完成接口IP地址的配置,并将接口添加到相应安全区域。
- 配置去往Internet的默认路由:
[FW] ip route-static 0.0.0.0 0 200.1.1.254
- 配置区域间安全策略,使得192.168.1.0/24用户能够访问Internet:
[FW] policy interzone trust untrust outbound
[FW-policy-interzone-trust-untrust-outbound] policy 10
[FW-policy-interzone-trust-untrust-outbound-10] policy source 192.168.1.0 0.0.0.255
[FW-policy-interzone-trust-untrust-outbound-10] action permit
[FW-policy-interzone-trust-untrust-outbound-10] quit
[FW-policy-interzone-trust-untrust-outbound] quit
- 创建NAT地址池:
[FW] nat address-group 1 200.1.1.10 200.1.1.20
- 配置NAT策略,使得Trust区域内的192.168.1.0/24用户访问Internet时进行源地址换,使用NAT地址池1中的公网地址,采用No-PAT的方式:
[FW] nat-policy interzone trust untrust outbound
[FW-nat-policy-interzone-trust-untrust-outbound] policy 10
[FW-nat-policy-interzone-trust-untrust-outbound-10] policy source 192.168.1.0 0.0.0.255
[FW-nat-policy-interzone-trust-untrust-outbound-10] action source-nat
[FW-nat-policy-interzone-trust-untrust-outbound-10] address-group 1 no-pat
[FW-nat-policy-interzone-trust-untrust-outbound-10] quit
[FW-nat-policy-interzone-trust-untrust-outbound] quit
配置验证
3)NAT类型2:NAPT
- 要求Trust区域的192.168.1.0/24网段的用户可以访问Internet,该安全区域其
它网段的用户不能访问。提供的访问Internet的公网IP地址范围为200.1.1.10 – 200.1.1.20。 - 采用NAPT的方式,使得多个私有IP地址可共用一个公网IP地址。完成接口IP地址的配置,并将接口添加到相应安全区域。
- 配置去往Internet的默认路由:
[FW] ip route-static 0.0.0.0 0 200.1.1.254 - 配置区域间安全策略,使得192.168.1.0/24用户能够访问Internet:
[FW] policy interzone trust untrust outbound
[FW-policy-interzone-trust-untrust-outbound] policy 10
[FW-policy-interzone-trust-untrust-outbound-10] policy source 192.168.1.0 0.0.0.255
[FW-policy-interzone-trust-untrust-outbound-10] action permit
[FW-policy-interzone-trust-untrust-outbound-10] quit
[FW-policy-interzone-trust-untrust-outbound] quit
- 创建NAT地址池:
[FW] nat address-group 1 200.1.1.10 200.1.1.20 - 配置NAT策略,使得Trust区域内的192.168.1.0/24用户访问Internet时进行源地址换,使用NAT地址池1中的公网地址,采用NAPT的方式:
[FW] nat-policy interzone trust untrust outbound
[FW-nat-policy-interzone-trust-untrust-outbound] policy 10
[FW-nat-policy-interzone-trust-untrust-outbound-10] policy source 192.168.1.0 0.0.0.255
[FW-nat-policy-interzone-trust-untrust-outbound-10] action source-nat
[FW-nat-policy-interzone-trust-untrust-outbound-10] address-group 1 注:此处没有使用nopat关键字。
[FW-nat-policy-interzone-trust-untrust-outbound-10] quit
[FW-nat-policy-interzone-trust-untrust-outbound] quit
配置验证
3)NAT类型3:NAT Server
- Internet 用 户能 够 访问 处 于DMZ 区 域中 的 Server ( 真实IP地址为172.16.1.1,真实端口号为80),当Internet用户访问该服务器时,使用目的IP地址200.1.1.222、目的端口号8080。
- 完成接口IP地址的配置,并将接口添加到相应安全区域。
- 配置去往Internet的默认路由:
[FW] ip route-static 0.0.0.0 0 200.1.1.254
- 配置区域间安全策略,使得Internet用户能够访问处于DMZ的服务器172.16.1.1的WEB服务:
[FW] policy interzone dmz untrust inbound
[FW-policy-interzone-dmz-untrust-inbound] policy 10
[FW-policy-interzone-dmz-untrust-inbound-10] policy destination 172.16.1.1 0
[FW-policy-interzone-dmz-untrust-inbound-10] policy service service-set http 注意,在配置区域间全策略时,服务类型指定的端口号为内网服务器的真实端口号,而不是映射出去的公网端口号。
[FW-policy-interzone-dmz-untrust-inbound-10] action permit
[FW-policy-interzone-dmz-untrust-inbound-10] quit
[FW-policy-interzone-dmz-untrust-inbound] quit
- 配置NAT server,将公网地址200.1.1.222的TCP端口号8080映射到私有地址172.16.1.1的TCP端口号80:
[FW] nat server protocol tcp global 200.1.1.222 8080 inside 172.16.1.1 80
如此一来,当Internet用户访问200.1.1.222:8080服务时,报文的目的IP地址会被转换成172.16.1.1,同时目的TCP端口号被转换成80。
配置验证
(3.1)NAT Server场景及配置1
[FW] nat server global 200.1.1.100 inside 172.16.1.1
相当于IP一对一映射,也即当FW收到发往200.1.1.100的报文(任意目的端口号),都会将其目的地址转换成172.16.1.1。
而当防火墙收到Server1(172.16.1.1)主动发出的、访问Client的报文,也会将源地址转换成200.1.1.100。
所以采用这种配置方式,Internet用户能够访问Server,而Server也能够主动访问Internet。
(3.2)NAT Server场景及配置2
[FW] nat server zone untrust global 200.1.1.100 inside 172.16.1.1
增加了zone关键字和参数untrust,则该条nat server只向untrust区域产生作
用,也就是只有在该区域的接口上收到的报文,才会进行目的地址转换。
(3.3)NAT Server场景及配置3
[FW] nat server zone untrust protocol tcp global 200.1.1.200 22323 inside 172.16.1.1 23
增加了protocol关键字及tcp参数,则当FW在其untrust接口收到发往200.1.1.200:22323的TCP流量时,它将报文的目的IP地址转换成172.16.1.1、将目的TCP端口号转换成23。
注:在该场景中,如果22323替换成知名端口(如23),也是可行的。
(3.4)NAT Server场景及配置4
[FW] nat server zone untrust protocol tcp global 200.1.1.200 21111 inside 172.16.1.1 23
[FW] nat server zone untrust protocol tcp global 200.1.1.200 21112 inside 172.16.1.2 23
多个不同内部服务器使用一个公网IP地址对外发布时,可以多次使用natserver命令对其进行配置,但是global-port不能相同。
(3.5)NAT Server场景及配置5
[FW] nat server zone untrust1 protocol tcp global 200.1.1.200 21111 inside 172.16.1.1 23
[FW] nat server zone untrust2 protocol tcp global 200.2.2.200 21111 inside 172.16.1.1 23
对于同一个内部服务器发布多个公网IP供外部网络访问的场景,如果不同公网IP所在的链路规划在不同的安全区域,可以通过配置针对不同的安全区域发布不同的公网IP的NAT Server来实现。
(3.6)NAT Server场景及配置6
[FW] nat server zone untrust protocol tcp global 200.1.1.200 21111 inside 172.16.1.1 23 no-reverse
[FW] nat server zone untrust protocol tcp global 200.2.2.200 21111 inside 172.16.1.1 23 no-reverse
对于同一个内部服务器发布多个公网IP供外部网络访问的场景,如果不同公网IP所在的链路规划在同一个安全区域,可以通过配置指定no-reverse参数的NAT Server来实现。指定no-reverse参数后,可以配置多个global地址和同一个inside地址建立映射关系。
指定no-reverse参数后,内部服务器主动访问外部网络时,设备无法将内部服务器的私网地址转换成公网地址,内部服务器也就无法主动向外发起连接。因此,通过指定no-reverse参数可以禁止内部服务器主动访问外部网络。
由于配置了no-reverse参数,内部服务器将无法主动访问外部网络。此时,如果内部服务器想要访问外部网络,需要在内部服务器所在区域和外部网络所在区域的域间配置源NAT策略,将服务器的私网地址转换为公网地址。源NAT策略中引用的地址池可以是global地址也可以是其他的公网地址。
三、FAQs
1)问题1 无法使用NAT公网IP访问内网服务器
- 解决方法
2)问题2 NAT ALG
- 防火墙配置policy interzone,允许FTP Client访问Server的TCP 21端口
- 防火墙配置NAT Server,将172.16.1.1的TCP 21端口映射到200.1.1.100的TCP 21端口
- Client无法正常访问FTP Servre,为何?
- 解决方法
- 通常NAT只能对IP报文的头部地址和TCP/UDP头部的端口信息进行转换,但是对于一些特殊的协议,比如FTP等协议,则需要由数据连接和控制连接共同完成,而且数据连接的建立要由控制连接载荷字段中的报文信息动态的决定,这就需要能够根据控制连接的载荷字段中的报文解析出数据连接要使用的地址和端口号,也就是说设备必须能够辨识FTP应用载荷字段中包含的端口号和地址信息,才能进行有效的NAT处理,否则可能导致NAT功能失败。
- 为解决这一问题,当NAT功能与FTP、MSN、PPTP、QQ、RTSP、TFTP等协议共同使用时,需要在设备上配置NAT ALG(Application Level Gateway)功能,通过配置NAT ALG功能,设备对数据包进行深度解析,并改变封装在IP报文数据部分中的IP地址和端口号信息,从而实现NAT功能。
3)问题3 防火墙双机热备的组网中NAT问题
- 在双机热备的组网环境下,两台Eudemon的NAT配置是一致的。若NAT地址池中的地址与VRRP组的虚拟IP地址在同一网段,当上下行设备需要请求NAT地址池的ARP时,两台Eudemon都会回应ARP报文,从而造成冲突,影响正常业务的运行。
- 在这种情况下,需要在主用设备上将NAT地址池与连接外网的接口上的VRRP组进行绑定,使业务流量能送到主用设备。因为只有主用设备NAT地址池中的IP地址会应答ARP请求,并且应答报文中携带的MAC地址为VRRP组的虚拟MAC地址。
- 因此配置NAT地址池时要关联VRRP的组ID:nat address-group 1 10.1.1.10 10.1.1.20 vrrp 3
- 由于部署了防火墙双机热备,因此在主设备FW1上所配置的上述策略会同步到备份设备FW2上。
以上是关于NAT网络地址转换的主要内容,如果未能解决你的问题,请参考以下文章