预备知识:
1.traceroute原理,UDP和ICMP
2.cisco防火墙基础NAT相关知识
正文:
防火墙做为一种安全设备,是不希望自己的接口地址被别人探测到的,所以在做traceroute时,不管是从内到外,还是从外到内,pix接口地址都是隐藏的,不在这其中的。
这是这次实验的网络拓扑

1)pix 不做转换
pix config:
no nat-control
access-list in permit ip any any
access-list out permit ip any any
access-group in in interface inside
access-group out in interface outside
winxp trace R2

R5 trace R2

R2 trace winxp

R2 trace R6的172.16.1.1的时候,出现如下情况:

这个时候即使到了172.16.1.1,但是icmp port-unreachable还是出向接口发出的,在这里是10.10.10.2
总结:如果在没有nat转换的时候,只要访问控制列表放行相应的流量,就可以进行正常的traceroute
2) pix static nat
static (in,out) 209.165.200.242 172.16.1.2
winxp trace R2


在返回的time exceeded数据包中,有原有包的ip和icmp头部信息,这里的头部信息显示是的源是172.16.1.2,这个时候在到达209.165.200.241的时候应该是转换后的地址209.165.200.242。所以在经过防火墙的时候被fixup了
在R3的icmp debug
从R2到winxp

R6上面的debug

winxp抓包

可以看出,数据包是正常的到达了目的ip 172.16.1.2的,但是每次在pix转换的时候,都把源地址转换成nat地址209.165.200.242,而且有两次,分别是R6和winxp回的包。
3)nat 0
如果只是普通的nat 0(产生xlate转换项),和静态的方式无异。返回的还是转换过后的地址。
但是如果nat 0 (不产生xlate转换项)的时候,那返回的都是真实的ip地址。
pix config:
nat (inside) 0 access-list nonat
access-list nonat permit ip 172.16.1.0 255.255.255.0 any

4)
关于inspect icmp和inspect icmp-error
如果是inspect icmp那就把icmp流量也看成有状态话的,不需要显式的放行。
inspect icmp-error是返回的icmp-error流量,修改一些参数,使符合转换前的地址和校验值等。如上面的trace的时候,就修改了icmp-error中的地址。