stm32mp157挂载NFS目录超时wireShark报文分析

本文使用环境:

内核版本:Linux 5.4.31

硬件平台:armv7 / stm32mp157

编译环境:Ubuntu Linux 18.04.4 LTS / gcc version 8.4.0 (Buildroot 2020.02.3-00002-gee623e2fe0-dirty)

1. 问题现象

在使用百问网的stm32mp157开发板(下文简称目标机)挂载NFS(网络文件系统)时,挂载超时。挂载目录为Ubuntu虚拟机的/home/ryan/nfs_rootfs/目录,该目录在/etc/exports文件中配置。

GIF 9-26-2020 1-27-38 PM

Ubuntu虚拟机使用NAT方式连接以太网,映射端口为20499999

image-20200926133350296

PC机(下文简称宿主机ip地址为192.168.3.2,挂载命令为mount -t nfs -o nolock,vers=3,port=2049,mountport=9999 192.168.3.2:/home/ryan/nfs_rootfs/ /mnt

执行结果:

[root@100ask:~]# mount -t nfs -o nolock,vers=3,port=2049,mountport=9999 192.168.3.2:/home/ryan/nfs_rootfs/ /mnt
    
mount: mounting 192.168.3.2:/home/ryan/nfs_rootfs/ on /mnt failed: Connection timed out

2. 问题分析

目标机上执行ping命令观察是否正常收到宿主机的icmp报文响应

[root@100ask:~]# ping 192.168.3.2
PING 192.168.3.2 (192.168.3.2) 56(84) bytes of data.
64 bytes from 192.168.3.2: icmp_seq=1 ttl=64 time=0.791 ms
64 bytes from 192.168.3.2: icmp_seq=2 ttl=64 time=0.790 ms
64 bytes from 192.168.3.2: icmp_seq=3 ttl=64 time=0.726 ms
64 bytes from 192.168.3.2: icmp_seq=4 ttl=64 time=0.743 ms
64 bytes from 192.168.3.2: icmp_seq=5 ttl=64 time=0.716 ms
64 bytes from 192.168.3.2: icmp_seq=6 ttl=64 time=0.811 ms
64 bytes from 192.168.3.2: icmp_seq=7 ttl=64 time=0.805 ms
^C
--- 192.168.3.2 ping statistics ---
7 packets transmitted, 7 received, 0% packet loss, time 6157ms
rtt min/avg/max/mdev = 0.716/0.768/0.811/0.036 ms

执行ping 192.168.3.2命令结果显示,目标机宿主机正常通信,无丢包现象。

为便于报文分析,使用wireShark工具进行报文捕获,打开wireShark工具,双击选择宿主机通信网卡连接,这里用的是以太网连接

image-20200926135606358

正常打开后即可看到wireShark工具捕获到的各种协议报文数据,这里只关心目标机相关的报文,在过滤器中输入过滤条件ip.addr==192.168.3.28并回车(192.168.3.28为目标机当前的ip地址),此时目标机执行挂载命令mount -t nfs -o nolock,vers=3,port=2049,mountport=9999 192.168.3.2:/home/ryan/nfs_rootfs/ /mnt,可以看到wireShark捕获界面显示如下

image-20200926140532260

编号为42的数据包,为第1次从ip192.168.3.28的机器发送给ip192.168.3.2TCP消息,此后编号为475569112的数据包都是重发的消息包,初步可以断定是宿主机没有应答导致的目标机数据重传,而宿主机没有应答的原因可能是Windows的防火墙阻隔了这条数据报。

3. 解决办法

经过以上分析,将Windows防火墙关闭,再次执行挂载命令mount -t nfs -o nolock,vers=3,port=2049,mountport=9999 192.168.3.2:/home/ryan/nfs_rootfs/ /mnt结果正常挂载NFS。

但将Windows防火墙完全关闭毕竟不是稳妥的做法,另一种选择是给Windows防火墙添加入站规则,满足这条规则时防火墙才放行。打开Windows防火墙,添加入站规则,指定本地端口为20499999

设置方法:

image-20200926142104961

image-20200926142201223

image-20200926142242137

image-20200926142335825

image-20200926142518466

image-20200926185450238

image-20200926185554399

image-20200926185651968

4. 解决情况

按以上方法设置完成后,目标机能够正常挂载NFSwireShark也没有再捕获到重传的数据报

image-20200926185948317

目标机执行ls /mnt命令

[root@100ask:~]# ls /mnt
drv_code  usb

服务器挂载路径下显示:

image-20200926190315775

目标机访问到的目录内容与设置的挂载目录匹配,目标机挂载NFS网络超时的问题得到解决。

5. 总结

计算机相互之间能ping通仅表明icmp协议报文数据能正常通信,并不能表示其他协议的连通性,在遇到执行ping操作正常,而通信异常时,可以将计算机防火墙纳入可能影响的因素。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Wireshark是一款网络协议分析工具,可以捕获并分析网络流量中传输的各种协议数据包。通过Wireshark可以深入了解网络通信中的各种详细信息,包括源地址、目的地址、协议类型、数据内容等等。 在Wireshark中,可以使用过滤器来过滤需要的报文,也可以使用统计功能来对流量进行分析。以下是Wireshark报文分析的一些基本步骤: 1.捕获网络流量:在Wireshark中选择需要进行分析的网络接口,启动捕获功能,即可开始捕获网络流量。 2.选择需要分析报文:在捕获的流量列表中,选择需要进行分析报文,可以根据协议类型、源地址、目的地址等进行筛选。 3.查看报文详细信息:在Wireshark的详细面板中,可以查看报文的各种详细信息,包括协议类型、源地址、目的地址、数据内容等等。 4.分析报文内容:根据需要,可以分析报文中的各个字段,了解其中包含的信息。例如,可以分析HTTP报文中的请求方法、URL、请求头、请求体等内容。 5.使用过滤器进行分析:在Wireshark中可以使用过滤器来对捕获的流量进行筛选和分析。通过过滤器可以实现对特定协议、特定源地址或目的地址的流量进行分析。 6.使用统计功能进行分析Wireshark可以对捕获的流量进行统计分析,例如可以统计流量的数量、协议类型、源地址、目的地址等等。统计结果可以帮助用户更好地了解网络通信的情况。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值