updateing / minieap

可扩展的 802.1x 客户端,带有锐捷 v3 (v4) 算法插件支持
GNU General Public License v3.0
514 stars 93 forks source link

R6220 (RAMIPS, Linux 4.4.28) 上 sockraw 插件工作不稳定 #3

Closed updateing closed 7 years ago

updateing commented 7 years ago

注:这是一个由同学发现的问题。我没有 RAMIPS 的测试平台,而在 ARMv7 (IPQ8064, Linux 4.4.30) 和 x86 (Linux 4.4.0) 平台下无法重现此问题。

现象:在查找服务器或回应用户名处卡住,重复发送达到预设次数后程序退出。抓包发现程序显示发出了数据包,但实际上并没有发出来。偶尔能发出 Start 包,但 Identity 包就不行了。更换 libpcap作为数据包收发插件后正常。

可能是这个平台上要求开混杂模式,或者 sendto 用法不对……有待继续研究。

updateing commented 7 years ago

更新到 https://github.com/updateing/lede-r6220-spi/commit/a04a342592fdb2ef642dc97916a531f49c10bb8d 以后无法复现。

FanFansfan commented 7 years ago

可能是路由器的交换机过滤包了,ramips,mtk平台的吧

updateing commented 7 years ago

是MTK平台。

请教一下,在什么情况下交换机会过滤掉数据包呢?这边网络环境里不会有带VLAN tag的数据包出现……

FanFansfan commented 7 years ago

我也不清楚,我用sysuh3c,start 包发不出去,填充成64字节(选64字节是因为win客户端发的start包就是64字节)之后才能发出去。

updateing commented 7 years ago

64字节正好是以太网最小帧长,太短的话被丢弃掉可以理解……但是启动锐捷插件的话,Start包会有500字节左右的长度,不应该被丢弃……

FanFansfan commented 7 years ago

我现在在eth0.2上tcpdump能看到18字节的start包,但是wan 连电脑wireshark就抓不到了。 你提到lede更新之后没问题了,lede的更新似乎没有更改什么东西呀。

updateing commented 7 years ago

LEDE的更新某些地方很玄学,以前的bug不知道怎么就好了,新的bug不知道怎么就来了。比如说大概一个半月以前第一次刷8500,发现一接到IPv6 RA就重启,Console就只能看到重启流程而不能看到谁引发了重启。过了几天同步再编译好了。但昨天又同步一次,又出现这个问题……这个掉包问题也实在不知道是怎么出现的……

关于抓包问题,估计是内核已经要求硬件发送了,但硬件把这一帧丢弃了。但这个issue的现象是在eth0.2上都抓不到……