2.7 NAT 地址转换

1、NAT概念

随着网络发展,公网IP地址的数量越来越少,为了起到缓解并且保护公司内部服务器,就用到了网络地址转换(NAT)

NAT(网络地址转换)通过将内部网络的私网IP地址转换成全球能公认的IP地址,使得内部网络可以连接到互联网中,比如:家里用的网络就是通过NAT转换上网的

a. NAT的实现方式

静态转换:就是将内部网络的私有IP地址转换为公用合法的IP地址,IP地址的对应关系是一对一的,而且是不变得,某个私有IP地址只转换为某个固定的合法的外部IP地址。例如:有5个私网地址需要上网,公网IP就必须有5个

动态转换:指将内部网络的私有地址转换为公网地址时,IP地址的对应关系是不确定的、随机的,不过动态转换也是一对一的,当私网地址的数量少于公网IP时,才能使用动态转换。

端口地址转换:是改变外出数据包的源IP地址和源端口号,并进行端口转换。内部网络的所有主机均可共享一个合法的公网IP地址来实现互联网的访问,同时也是目前使用最多的联网方式

NAT对于地址转换中的终端设备是透明的,pc只知道自己的IP地址是192.168.1.2,并不知道125.25.65.3,服务器只知道PC的IP地址是125.25.65.3,不知道192.168.1.2。

  • 内部局部地址:在内部网络中分配给主机的私有IP地址
  • 内部全局地址:该地址通常是互联网通用的公网IP地址,由ISP提供
  • 外部全局地址:外部网络上的主机分配的IP地址,该地址通常也是互联网公认的IP
  • 外部局部地址:也是一个私有IP地址,只不过是在另一个局域网中
b. 静态转换和动态转换

  • 内部主机10.1.1.1和外部主机B建立了一条连接,边界路由器从主机10.1.1.1接收到第一个数据包,将检查NAT转换表。
  • 如果已经为该地址配置了静态地址转换,或者该地址的动态地址转换已经建立,那么边界路由器使用所选的内部全局地址(202.168.2.2)来替换内部局部地址(10.1.1.1)并转发该数据包,否则路由器会决定对地址10.1.1.1进行转换。路由器将从动态地址池中集中分配一个合法地址,并建立从内部局部地址到内部全局地址的映射
  • 主机B收到该数据包后,回应给内部全局地址202.168.2.2,然后对内部局部地址10.1.1.1进行应答
  • 当边界路由器接收到目的地址为内部全局地址的数据包时,路由器将用该内部全局地址通过NAT转换表查找出内部局部地址,然后,路由器将数据包中的目的地址转换成10.1.1.1,并将数据包发送给10.1.1.1。

---------------------------------------

例1:配置静态NAT

  • 外部主机: 155.34.2.3
  • 外部路由器:f1/0 155.34.2.2 f0/0 61.159.62.129
  • NAT路由器:f0/0 61.159.62.130 f1/0 192.168.1.1
  • pc1 192.168.1.1
  • pc2 192.168.1.3

公司从运营商处获得的公网IP地址的范围是61.159.62.130---61.159.62.132,NAT路由器在广域网的地址是61.159.62.130,可用于地址转换的地址是61.159.62.131、61.159.62.132。

NAT转换语法如下:

router(config)#ip nat inside source static local-ip global-ip [extendable]
 - local-ip:内部局部地址
 - global-ip:内部全局地址
 - extendable:(可选)表示允许同一个内部局部地址映射到多个内部全局地址。
 - inside:表示从inside口进入的流量对源地址(source)进行静态转换

1) 外部路由器和NAT路由器配置路由表

# 外部路由器:
R2(config)#ip route 192.168.1.0 255.255.255.0 61.159.62.130

# NAT路由器:
R1(config)#ip route 0.0.0.0 0.0.0.0 61.159.62.129

2) 在NAT路由器上配置静态NAT

# 将内部局部地址192.168.1.2 转换为内部全局地址61.159.62.131
R1(config)#ip nat inside source static 192.168.1.2  61.159.62.131

# 将内部局部地址192.168.1.3转换为内部全局地址61.159.62.132
R1(config)#ip nat inside source static 192.168.1.3 61.159.62.132

3) 在NAT路由器的内部和外部端口启用NAT

有NAT功能的路由器需要有一个内部端口(inside)和一个外部端口(outside),内部端口连接的网络用户使用的是内部IP地址,外部端口连接的是外部网络,NAT路由器必须在两个端口上启用NAT

R1(config)#int f1/0
# 内部端口启用NAT
R1(config-if)#ip nat inside   
R1(config)#int f0/0
# 外部端口启用NAT
R1(config-if)#ip nat outside
# 查看地址转换信息
R1#show ip nat translations 

4)pc1 ping 外部主机地址转换情况,内部局部地址转换成内部全局地址

------------------------------------------

例2:动态NAT配置

  • 外部主机: f1/0 61.159.62.1
  • NAT路由器:f0/0 61.159.62.2 、f1/0 192.168.1.1
  • pc1: 192.168.1.2
  • pc2: 192.168.1.3

将内部地址192.168.1.0转换成合法的公网IP地址,地址范围是61.159.62.131-61.159.62.134。配置步骤如下(路由器IP地址省略):

1). 添加合法的IP地址池语法:

router(config)#ip nat pool pool-name start-ip end-ip 
							 {netmask netmask|prefix-length  prefix-length} [type rotary]
        - pool-name 放置转换后地址的地址池名称
				- start-ip/end-ip  地址池内起始和终止IP地址
				- netmask  netmask  子网掩码
  			- prefix-length  prefix-length  子网掩码,以掩码中1的数量表示(如prefix-length 24等同于netmask  255.255.255.0)两种掩码的表示方式等价,任意使用一种即可
				-	type rotary 可选,地址池中的地址为循环使用

# 在NAT路由器添加地址池
router(config)#ip nat pool test0 61.159.62.131  61.159.62.134  netmask  255.255.255.0

2). 在NAT路由器定义内部网络中允许访问的外部网络的ACL,配置的ACL可以是标准也可以是扩展ACL

router(config)#access-list 1 permit 192.168.1.0  0.0.0.255

3). NAT路由器实现网络地址转换,将内部局部地址与指定的内部全局地址池进行地址转换

R1(config)#ip nat  inside source list 1 pool test0
	- 1:表示标准ACL列表号  
 	- pool:后面跟已经定义的地址池

4). 在内部和外部端口启用NAT

R1(config)#int f1/0
R1(config-if)#ip nat inside
R1(config)#int f0/0
R1(config-if)#ip nat outside

pc1访问外部主机,地址转换完成

pc2访问外部主机,地址转换完成

pc3访问外部主机,地址转换完成

2、PAT端口地址转换
a. 使用外部全局地址

将内网192.168.1.0网段转换成NAT路由器对应公网的IP地址 61.159.62.3,路由器配置IP省略

1). NAT路由器定义内部访问的ACL列表

NAT(config)#access-list 1 permit 192.168.1.0 0.0.0.255

2). 定义合法的IP地址池

# 地址池中起始地址和结束地址用的同一个地址
NAT(config)#ip nat pool onlyone 61.159.62.3 61.159.62.3 netmask 255.255.255.0

3). 复用动态IP地址转换

# 以端口复用方式,将ACL1中的局部地址转换为onlyone地址池中的内部全局地址
NAT(config)#ip nat inside source list 1 pool onlyone overload   

4). NAT路由器的内部和外部端口启用NAT

NAT(config)#int f1/0
NAT(config-if)#ip nat outside
NAT(config)#int f0/0
NAT(config-if)#ip nat inside

pc1转换地址

pc2转换地址

b. 复用路由器外部接口IP

有时候,只有一个外部IP,并且这个地址已经被路由器的外部接口使用,在这种情况下,在地址转换过程中,也可以直接使用外部接口的IP地址作为转换后的地址。由于直接使用外部接口地址,所以不在定义地址池了

1). 定义内部访问列表

NAT(config)#access-list 1 permit 192.168.1.0 0.0.0.255

2). 以端口复用的方式,将ACL1中的私有地址转换为路由器外部接口IP地址

NAT(config)#ip nat inside source list 1 interface fastEthernet 1/0 overload

3). 在内部和外部端口启用NAT

NAT(config)#int f1/0
NAT(config-if)#ip nat outside
NAT(config)#int f0/0
NAT(config-if)#ip nat inside

pc1访问外部主机

pc2访问外部主机

默认情况下,如果在一定时间内没有使用动态NAT条目,就会因超时而被取消

有时因为NAT条目过多会导致设备性能下降,可以删除动态条目,静态是删除不了的

NAT#clear ip nat translation * 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值