什么是NAT

NAT(NetWork Address Translation)网络地址转换技术
该技术主要为了结局IPv4地址耗尽以及不够用的问题,通过将私有地址与公有地址进行转换,来解决公网地址不够用,但NAT技术只用于过渡技术,目前全网正在从IPv4过渡到IPv6,NAT在其中起到了很大的作用。

公/私有地址

私有地址
任何组织都可以任意的使用私有地址,但私有地址无法在Internet上路由
如果需要访问私有网络的服务资源,就需要用到NAT设备或技术。

/*私有地址范围*/
10.0.0.0 - 10.255.255.255
172.16.0.0 - 172.31.255.255
192.168.0.0 - 192.168.255.255

NAT组网

模型
这个模型是最简单的一种NAT组网模型,网络被划分为私有网络与公有网络,为了让私有A主机和B主机能过访问外网的Server,通过在网络边界部署一个NAT设备用于地址转换,来实现私网对公网的访问(其实还是公对公)

  • 公网
    Public NetWork,由IANA分配的公有IP地址空间网络,也可以叫外网(External NetWork)、全局网络(Global Address)
  • 私网
    Private Network,使用私有IP地址空间组件的内部网络,也可以叫内网(Internal Network)、本地网络(Local NetWork)
  • NAT设备
    NAT device,介于公网与私网之间的设备,复制对公有地址和私有地址进行转换,通常一台路由器就能完成此任务(包括家里的傻瓜路由器也是,端口映射)
  • 地址池
    Address Pool,这里的地址池和DHCP的地址池类似,只不过这里的地址是用于分配给私网转换过后的公网地址。

基本NAT

基本NAT
Basic NAT,基本NAT,通过建立公有地址池,把地址池中的公有地址动态的映射给私有地址使用,本质上还是一对一的映射,配置流程如下:

/*首先需要创建一个用于匹配需要转换的私有地址的ACL*/
[H3C]acl basic 2000
[H3C-acl-ipv4-basic-2000] rule 1 permit source [address] [wide-mask]
/*再创建一个公网地址池,用于分配给私网地址*/
[H3C] nat address-group [id]
/*
设置地址的范围,如果只有一个公网地址
就将起始地址范围和结束地址范围填写一致即可
*/
[H3C-address-group-1] address [start-address] [end-address]
/*最后将地址转发应用在网络出接口上*/
[H3C-GigabitEthernet0/1] nat outbound [acl-number] address-group [group-number] no-pat
/*
其中no-pat 表示这是一个 Basic NAT 转换
即只做一对一的地址转换
且只转换数据包的地址而不转换端口
*/

配置实例:

基本NAT

NAPT

NAPT
在基本NAT中,它只解决了公网地址和私网地址通信的问题,并没有解决公有地址不足的原因,于是,NAPT出现了
NAPT(NetWork Address Prot Translation)网络地址端口转换,他可以对数据包的IP层和传输层进行转换,有效提升了公网IP地址利用的效率,配置流程:

/*配置流程和基本ACL相似*/
/*首先需要创建一个用于匹配需要转换的私有地址的ACL*/
[H3C]acl basic 2000
[H3C-acl-ipv4-basic-2000] rule 1 permit source [address] [wide-mask]
/*再创建一个公网地址池,用于分配给私网地址*/
[H3C] nat address-group [id]
/*
设置地址的范围,如果只有一个公网地址
就将起始地址范围和结束地址范围填写一致即可
*/
[H3C-address-group-1] address [start-address] [end-address]
/*最后将地址转发应用在网络出接口上*/
[H3C-GigabitEthernet0/1] nat outbound [acl-number] address-group [group-number] 
/*最后不需要加上no-apt即可*/

配置实例:
实例

Easy IP

一种特殊的NAPT,他直接使用出接口的IP地址作为转换后的源地址,不需要先配置地址池,工作的原理和NAPT基本一样,这种常见一般适用于需要动态获取IP地址和拨号接入的场景。
Easy IP 的配置非常简单,无需配置地址池,只需在 NAT 设备通向公网的出接口的接口视图下使用 nat outbound 命令,将 ACL 与接口关联起来即可

配置实例:
实例

NAT Server

NATServer
把公网IP的某个端口固定映射到私网IP的某个端口,让公网上的用户可以主动访问私网中的服务,通过转换目的IP和目的端口,数据回包还原源IP和源端口,来实现对服务的访问,也叫端口映射

[h3c-GigabitEthernet0/0]nat server protocol [tcp/udp/icmp] global [global-address] [global-port] inside [inside-address] [inside-port]
/*几个参数介绍*/
Protocol:指定协议的类型,协议是TCP/UDP时才带端口参数
Global:指定外网地址
inside:指定内部服务器信息

配置实例:
实例

NAT的调试

关于NAT的一些基础调试命令

/*显示地址转换信息*/
<H3C> display nat { address-group group-number | all | outbound
port-block-group | server | statistics | session }
/*调试地址转换过程*/
<H3C> debugging nat { alg | config | event | packet acl number }
/*清除地址转换连接*/
<H3C> reset nat session