1.先了解一下TFTP客户端向服务器写文件的报文交互原理,相关交互流程与抓包截图如下:
在开始工作时,TFTP的客户端与服务器交换信息,客户端发送一个写请求给服务器。
每个数据分组包含一个块编号字段,它以后要在确认分组中使用。在写请求的情况下,TFTP客户端发送WRQ指明文件名和模式。如果该文件能被该客户端写,TFTP服务器就返回块编号为0的ACK包。该客户端就将文件的头512字节以块编号为1发出。服务器则返回块编号为1的ACK。重复这个过程直到这个文件传送完。除了最后一个数据分组可含有不足512字节的数据,其他每个数据分组均含有512字节的数据。当TFTP服务器收到一个不足512字节的数据分组,就知道它收到最后一个数据分组。这种类型的数据传输称为停止等待协议。
说明:TFTP客户端的IP地址为192.168.56.9,TFTP服务器的IP地址为192.168.56.1。
请注意TFTP协议的控制通道和数据通道共用TFTP客户端的端口号,交互过程的端口号变化情况如上图标红的部分。
2.了解了TFTP客户端向服务器写文件的报文交互原理后,再次在防火墙上通过TFTP协议向服务器传送文件,查看防火墙会话信息如下:
[USG6300-diagnose]display
firewall session table verbose-hide both-direction destination global
x.x.x.33
20:18:35 2016/05/15
Current Total Sessions : 1
stun
VPN:public --> public ID: a58f3fcc92d3074b8b5738d88a
Zone: local-->
untrust TTL: 00:10:00 Left: 00:05:47 Input-interface: InLoopBack0
Output-interface: GigabitEthernet1/0/0 NextHop: x.x.x.33 MAC:
1c-6f-65-ce-8e-62
packets:5 bytes:235
x.x.x.62:49617[x.x.x.62:24206]-->x.x.x.33:69
stun VPN:public --> public
ID: a58f3fcc92d3074b8b5738d88a
Zone: untrust--> local TTL: 00:10:00
Left: 00:05:47
Output-interface: InLoopBack0 NextHop: 0.0.0.0 MAC:
00-00-00-00-00-00
packets:0 bytes:0
x.x.x.33:69-->x.x.x.62:24206[x.x.x.62:49617]
通过上面的会话信息发现,会话的源IP虽然还是外网接口的IP,但是源端口49617被转换为24206,这样会导致TFTP服务器在建立数据通道时,访问防火墙的目的端口是24206,而不是TFTP客户端打开的端口49617,且由于服务器访问时使用的源端口是随机的,不是69端口,所以也不会匹配上防火墙的反向会话,因此防火墙不会将端口24206转换为49617,最终将导致数据通道建立失败。
3.查看防火墙的源NAT策略配置如下:
#
nat-policy
rule name
GuideNat1454490523729
egress-interface
GigabitEthernet1/0/0
action nat
easy-ip
#
通过配置可以看出,源NAT策略没有指定源安全区域,导致local区域到untrust区域的数据访问也做了源NAT转换。