NAT网络地址转换
技术背景
- IPv4地址已经耗尽。
- 局域网用户普遍使用私有IPv4地址,如何访问公网?
- 局域网中使用私有IPv4地址的服务器如何对公网提供服务?
- 若需要对外隐藏内网的IP,同时内网的特定服务器又需对外提供服务该如何实现?
公网IP地址及私有IP地址
公网地址:
- 公网地址是指可以在Internet上使用的地址。为保证整个Internet内的IP地址的 唯一性,公网地址由IANA(Internet Assigned Number Authority)这个国际组 织负责分配。一台网络设备如果需要使用公网地址,就必须向ISP(Internet Service Provider)或注册中心申请。
私有地址:
- 为了满足一些实验室、公司或其他组织的独立于Internet之外的私有网络的需求, RFCA(Requests For Comment)1918为私有使用留出了三个IP地址段。私有 地址不能在Internet上被分配,因而可以不必申请就可以自由使用。
NAT概述
NAT(Network Address Translator)的主要原理是通过解析IP报文头部,自动替换报 文头中的源地址或目的地址,实现私网用户通过私网IP访问公网的目的。私网IP转换为 公网IP的过程对用户来说是透明的。
优点 | 缺点 |
---|---|
缓解公网地址紧缺问题 | 存在转发延迟 |
解决IP地址空间冲突或重叠的问题 | 端到端寻址变得困难 |
网络扩展性更高,本地控制也更容易 | 某些应用不支持NAT |
内网结构及相关操作对外变得不可见 | NAT产生的表项需要占用设备的内存空间 |
增加了安全性 | 设备性能问题 |
NAT类型
动态NAT
私网地址与公网地址之间转换不固定,具有动态性。
实现方式有Basic NAT和NAPT(Network Address Port Translation)两种:
Basic NAT
通过Router建立地址池实现一对一地址转换
NAPT
基于Basic NAT这种一对一的方式不能有效解决地址短缺的问题,而NAPT可以做到这一点。NAPT可以实现并发的地址转换,使用 “IP Address + Port” 的形式, 实现多对一地址转换。
Easy IP
Easy IP的实现原理与NAPT相似, 算NAPT的一种特例。
不同的是, Easy IP 是将Router的WAN接口地址作为映射的公网地址。
静态NAT
静态NAT是指在进行NAT地址转换时,内部IP地址与公网IP地址是一对一静态绑定的,且每个公网IP只会分配给固定的内网主机转换使用。这与Basic NAT实现原理基本一样, 不同的是要事先配置静态NAT转换映射表。
静态NAPT是指“内部网络主机的私网IP地址 + 协议号 + Port” 与 “ 公网IP地址 + 协议号 + Port” 是一对一静态绑定的。这与NAPT原理类似, 不同的是要事先配置静态NAPT转换映射表。
NAT Server
NAT Server 用于外网用户需要使用固定公网IP地址访问固定服务器的情形。通过事先配置号的服务器的 “公网IP地址 + Port” 与服务器的 “私网IP地址 + Port” 间接的静态映射关系来实现。
NAT配置
静态NAT
- 假设公司向运营商申请到了一个公网地址200.1.1.100, 实现静态一对一的映射,访问外网。
# global为公网地址, inside为私网地址
[NAT-Device]interface GigabitEthernet 0/0/1
[NAT-Device-GigabitEthernet0/0/1]nat static global 200.1.1.100 inside 192.168.1.1
查看nat转换信息
用pc1 ping Internet
地址被转换成功
动态NAT
- 192.168.1.0/24网段均需访问外网, 通过申请到的200.1.1.100~200.1.1.200地址范围, 实现内网地址转换。
# 定义地址池
[NAT-Device]nat address-group 1 200.1.1.100 200.1.1.200
# 定义ACL2000,用于匹配允许访问外网的地址
[NAT-Device]acl 2000
[NAT-Device-acl-basic-2000]rule 5 permit source 192.168.1.0 0.0.0.255
[NAT-Device-acl-basic-2000]quit
[NAT-Device]interface GigabitEthernet 0/0/1
[NAT-Device-GigabitEthernet0/0/1]nat outbound 2000 address-group 1 no-pat
注:no-pat也可以称为“一对一地址转换”, 配置了该字段, 只会进行IP地址的转换, 不会进行端口上的转换,而且当地址池中某一地址转换后, 该地址就不能被其他内网地址使用,也就是被占用了。
配置了no-pat, 就是Basic NAT; 没有配置就是NAPT.
nat outbound 2000 address-group 1 # Basic nat
nat outbound 2000 address-group 1 no-pat # napt
Easy IP配置
[NAT-Device]interface GigabitEthernet 0/0/1
[NAT-Device-GigabitEthernet0/0/1]nat outbound 2000
NAT Server
- 将私网服务器地址80端口映射到公网地址200.1.1.100的8080端口上
[NAT-Device]interface GigabitEthernet 0/0/1
[NAT-Device-GigabitEthernet0/0/1]nat server protocol tcp global 200.1.1.100 8080
inside 192.168.1.1 www
[NAT-Device-GigabitEthernet0/0/1]quit
用Client访问Web Server