ASA静态PAT的双向访问测试及理解

一.概述:

   静态PAT一般是用在外部访问内部时,将外部IP的某个端口映射到内部主机的服务端口,这样外部主机通过访问外部IP的端口,就能很轻松的访问到内部主机的服务(需要策略放行),但是在看《Cisco ASA 5500 Series Configuration Guide using the CLI, 8.4 and 8.6》文档的时候,说静态PAT与静态NAT一样,也是双向的,感到很困惑,如是打算实际测试验证一下。

ASA静态PAT的双向访问测试及理解

二.基本思路:

A.静态PAT从外网访问内网,是经常用的,主要需要验证从内部访问外部是是否做了地址转换。

B.TCP和UDP访问的源端口都是随机的,大于1023,并且正常情况下不能指定:

---因此需要找到能指定源端口的程序

---在实际工作中正好用到一款公司自主开发的windows的syslog发送工具可以指定源端口和目标端口,于是用它来测试。

C.测试环境为:

---将外部接口的UDP 514端口映射到内部一台主机的UDP514

①.从外部主机发送syslog到外部接口的UDP514,验证目标地址转换。

②.从内部被映射的主机向外部主机发送syslog,发送的时候指定源端口和目标端口都为514,在外部主机抓包,看源地址是否转换。

③.并且顺带的验证一下静态PAT优先级比动态PAT要高。

D.实际静态PAT这种双向访问是没有多大用处的,因为源端口很难手工指定的,像把外部接口的TCP23静态PAT到内部一台主机的TCP23,而正常情况下TCP源端口不可能为23端口的,因为内部出去的时候正常情况下是不会PAT的。

---有一种情况可以用的上,比如syslog发送,因为审计的时候需要审计真实地址,而不是NAT后的地址,可以配置静态PAT来实现源地址不转换(一般的主机syslog源端口是可以指定的,linux默认为UDP514):

object network Inside_Net_syslog
subnet 100.1.1.0 255.255.255.0
object network Inside_net_syslog_nonat
subnet 100.1.1.0 255.255.255.0
object network Inside_net_syslog_nonat
nat (Inside,Outside) static Inside_Net_syslog service udp syslog syslog 

这样当指定Inside区100.1.1.0/24网段主机向Outside区的syslog服务器发送sylog的udp源端口为514时,就可以实现IP地址自己转自己(等于不转)。

三.测试拓扑:

 Inside_PC1(.8)--100.1.1.0/24-----(.1)ASA842(.1)---202.100.1.0/24-----(.8)Outside_PC2

四.基本配置:

A.Inside_PC1

ip:100.1.1.8/24

gw:100.1.1.1

B.ASA842:

①接口配置:

interface GigabitEthernet0
nameif Inside
security-level 100
ip address 100.1.1.1 255.255.255.0 
no shut
interface GigabitEthernet1
nameif Outside
security-level 0
ip address 202.100.1.1 255.255.255.0 
no shut

②静态PAT配置:

object network Inside_PC1
host 100.1.1.8

object network Inside_PC1
nat (Inside,Outside) static interface service udp syslog syslog 

③策略配置:

access-list Outside extended permit icmp any any 
access-list Outside extended permit udp any object Inside_PC1 eq syslog

access-group Outside in interface Outside

C.Outside_PC2:

ip:202.100.1.8/24

gw:202.100.1.1

五.测试:

A.外部主机给内部主机发送syslog:

----未指定源端口

①外部主机抓包截图:

ASA静态PAT的双向访问测试及理解

②内部主机抓包截图:

ASA静态PAT的双向访问测试及理解

---从两个截图很容易看出:源地址为指定时为1023以上的端口;在内部主机看到数据包做了目标地址转换

B.内部主机给外部主机发送sylog:

---手工指定源端口为UDP514,发送完syslog之后,为了对比,进行ping。

①内部主机抓包截图:

ASA静态PAT的双向访问测试及理解

②外部主机抓包截图:

ASA静态PAT的双向访问测试及理解

---从两个截图很容易看出:当内部主机发送syslog的源地址指定为514,出了ASA防火墙,源地址做了转换;PING包没有受静态PAT的影响,源地址没有发生改变。

C.测试静态PAT与动态PAT的优先级:

①修改静态PAT的地址:

object network Inside_PC1
host 100.1.1.8

object network Inside_PC1
nat (Inside,Outside) static 202.100.1.2 service udp syslog syslog

②配置动态PAT:

object network Inside_network
subnet 100.1.1.0 255.255.255.0

object network Inside_network
nat (Inside,Outside) dynamic interface

③内部主机ping外部主机:

---外部主机抓包截图,可以看到ping走的是动态PAT。

ASA静态PAT的双向访问测试及理解

④内部主机指定syslog源端口:

---外部主机抓包截图,可以看到走的是静态PAT,因为源地址为202.100.1.2,而不是防火墙接口地址202.100.1.1。

ASA静态PAT的双向访问测试及理解

⑤内部主机指定sylog源端口不为静态PAT的端口:

---外部主机抓包截图,可以看到走的是动态PAT,因为源地址为防火墙接口地址202.100.1.1。

ASA静态PAT的双向访问测试及理解




本文转自 碧云天 51CTO博客,原文链接:http://blog.51cto.com/333234/1242448,如需转载请自行联系原作者

上一篇:【Groovy】MOP 元对象协议与元编程 ( 方法注入 | 使用 @Category 注解进行方法注入 | 分类注入方法查找优先级 )


下一篇:【Groovy】MOP 元对象协议与元编程 ( 使用 Groovy 元编程进行函数拦截 | 动态拦截函数 | 动态获取 MetaClass 中的方法 | evaluate 方法执行Groovy脚本 )