环境:测试一个ac下挂ap,ap下的抓包文件传出时,出现问题:
ac的wan口ip是192.168.186.167/24,gw是192.168.186.1,下挂ap的ip是192.168.202.199/24,ac上开子接口192.168.202.1/24,ac上开nat功能。tftp服务器在pc192.168.186.118/24上,和ac的wan口在同一网段。
开始以为是ap的对应目录和文件没有读写权限,chmod 777进行修改后,问题依旧。
root@IIIoT:/# chmod 777 /tmp
root@IIIoT:/# tftp -p -l /tmp/staonline3.pcap 192.168.186.118
tftp: server error: (768) Access to /tmp/staonline3.pcap denied
root@IIIoT:/# cd /tmp
root@IIIoT:/tmp# ls -l staonline3.pcap
-rw-r--r-- 1 root root 2010 Sep 29 17:16 staonline3.pcap
root@IIIoT:/tmp# chmod 777 staonline3.pcap
root@IIIoT:/tmp# tftp -p -l /tmp/staonline3.pcap 192.168.186.118
tftp: server error: (768) Access to /tmp/staonline3.pcap denied
root@IIIoT:/tmp# tftp -p -l /tmp/staonline3.pcap 192.168.186.118
tftp: server error: (768) Access to /tmp/staonline3.pcap denied
root@IIIoT:/tmp# tftp: server error: (768) Access to /tmp/staonline3.pcap denied
问题还在,决定在tftp服务器pc上和ap上同时抓包,对比查看。tftp的usb网卡接ap同一网段的接口,ap的抓包传到usb网卡的ip上,这样不经过ac的nat功能。
root@IIIoT:~# tcpdump -any -nne -w testtftp.pcap
tcpdump: invalid data link type -nne
root@IIIoT:~# tcpdump -i any -nne -w testtftp.pcap
tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
^C894 packets captured
896 packets received by filter
0 packets dropped by kernel
root@IIIoT:~# ls -l *pcap
-rw-r--r-- 1 root root 85651 Sep 26 18:45 staonline.pcap
-rw-r--r-- 1 root root 111110 Sep 29 20:24 testtftp.pcap
root@IIIoT:~# tftp -pl testtftp.pcap 192.168.202.202 传出ap上抓包文件
ap上抓包文件显示如下:只有客户端发出write请求消息,没有后续消息
tftp服务器上抓包显示如下:
tftp服务器发出ack,收到ac发来的destnation port unreachable的消息。
查看icmp的目标不可达消息
发现源地址ac的wan口地址,而目标地址是tftp服务器的地址,而且ttl是64,表示是ac直接发出,而不是经过转接的icmp消息。
对应ap的抓包,ack并没有收到,而且也没有icmp消息发出,据此判断ac直接回的目标端口不可达。
原因分析,ac没有端口alg功能,对tftp协议,后续消息会改变端口发来,而ac的conntrack记录表的五元组里没有对应的表项,导致ac直接回icmp端口不可达项。
测试一下,关闭ac的nat功能,发现重新测试,文件传送成功。