轻舞飞扬 发表于 2018-12-5 11:18:23

如何知道LWIP中IPV6的IP地址

先感谢各位高V手,请教有关LWIP中IPV6的IP地址问题。
硬件:STM30F407+DP83848
软件:LWIP,IPV4和IPV6双栈

硬件已调通,测试IPV4,没有问题。但是IPV6不能ping通,已开启LWIP的debug输出。

程序上电时,LWIP输出如下内容:

netif: netmask of interface \0\0 set to 255.255.255.0
netif: GW address of interface \0\0 set to 192.168.1.2
netif_set_ipaddr: netif address being changed
netif: IP address of interface \0\0 set to 192.168.1.8
netif: added interface st IP addr 192.168.1.8 netmask 255.255.255.0 gw 192.168.1.2
netif_ip6_addr_set_state: netif address state being changed
netif: IPv6 address 0 of interface st set to FE80::280:E1FF:FE00:0/0x08
netif_ip6_addr_set_state: netif address state being changed
netif: IPv6 address 0 of interface st set to FE80::280:E1FF:FE00:0/0x10
netif: setting default interface st
etharp_request: sending ARP request.

按照LWIP的源码理解,FE80::280:E1FF:FE00:0应为IPV6的地址,但是通过计算机使用网线与开发板直连不能ping通。

每次执行ping操作时,提示以下信息:
pbuf_alloc(length=86) == 20006a08
ethernet_input: dest:33:33:ff:00:00:00, src:5c:f9:dd:3e:16:2e, type:86dd
pbuf_header: old 20006a18 new 20006a26 (-14)
ip6_input: packet not for us.
pbuf_free(20006a08)
pbuf_free: deallocating 20006a08
很明显计算机识别的mac地址不正确,我也不知道33:33:ff:00:00:00到底表示什么意思。

还有不能理解的是IPV6的邻居发现协议,不知道IPV6是如何告知其它主机自身的IP的,还是说必须要有IPV6的路由存在才能调试,而不能直接使用网线直接连接的方式。

小弟,由于项目需要刚接触IPV6,很多地方理解的不正确,望坛里的高手多多指教,不胜感激。



aozima 发表于 2018-12-5 14:15:28

IPV6取消了广播,换成 组播。
很可能你的驱动没有支持组播,可以先设置为全通过看看。

33:33:ff:00:00:00 是组播地址。

STM32F407可以试试 RT-thread的,测试可用,ifconfig就可以查看ipv6地址,也做了组播hash优化。
https://github.com/RT-Thread/rt-thread/pull/1119

dhbighead 发表于 2018-12-5 14:42:51

同意楼上的 改驱动 看看是不是mac芯片过滤了

轻舞飞扬 发表于 2018-12-5 21:25:17

虽然,还没太明白,先感谢一下,今天晚上好好弄一下,希望有好结果。

轻舞飞扬 发表于 2018-12-6 21:29:16

首先,确认应该不是MAC地址过滤问题,我已改成全通,但问题依旧。
使用wireshark进行抓包,可发现,开发板上电时,发了3条数据,这3条数据计算机没有回复。

现在感觉,这3包数据是发给路由的,由于我用的是计算机,所以没有识别这3报数据。
不知道,理解的对不对,高手指点一下,是不是买一个IPV6路由器,就可以解决问题。

LVmcu 发表于 2018-12-10 09:37:17

最近也在看lwip,楼主的问题解决了吗?

aozima 发表于 2018-12-10 11:17:32

要有路由器的,我贴几个包给楼主分析一下。

要买路由的话,推荐这个,支持,IPV6,支持抓包,还支持抓包WIFI的空中包,最关键的是,我买的时候价格才¥128
型号 MikroTik RB941



轻舞飞扬 发表于 2018-12-10 22:31:34

真的,很感谢aozimo的帮助

huangqi412 发表于 2018-12-16 21:27:45

aozima 发表于 2018-12-10 11:17
要有路由器的,我贴几个包给楼主分析一下。

要买路由的话,推荐这个,支持,IPV6,支持抓包,还支持抓包WI ...

是有配套软件抓包么

snowy 发表于 2018-12-16 21:54:20

这种小路由抓包的话,内存有限,只能是少量数据,可以用一旧台电脑,跑OPENWRT,插一USB无线网卡跑成AP模式,内存够大,可以抓大包。

aozima 发表于 2018-12-17 09:18:33

snowy 发表于 2018-12-16 21:54
这种小路由抓包的话,内存有限,只能是少量数据,可以用一旧台电脑,跑OPENWRT,插一USB无线网卡跑成AP模式 ...

这包直接UDP通过TZSP协议吐到电脑上面的,软件就是 Wireshark。

抓包时没人会让带宽跑满哈,
1是不参与抓包的设备不要走这个路由器。
2是路由器上面设一下过滤条件。

不然不说路由器了,电脑本身也抗不住哈。

snowy 发表于 2018-12-17 17:03:37

aozima 发表于 2018-12-17 09:18
这包直接UDP通过TZSP协议吐到电脑上面的,软件就是 Wireshark。

抓包时没人会让带宽跑满哈,


谢谢大师指点,我自以为是全部保存在内存或者FLASH中的。惭愧!

倮倮 发表于 2019-8-20 14:59:54

你好,楼主,最后怎么解决的呀,能不能告知一下,或者在你的帖子下说明下,谢谢了

陈其旦 发表于 2019-8-27 09:57:07

aozima 发表于 2018-12-10 11:17
要有路由器的,我贴几个包给楼主分析一下。

要买路由的话,推荐这个,支持,IPV6,支持抓包,还支持抓包WI ...

大神,您好,我请教下,我也买了这个这个路由器,如何设置才能把这个组播地址给转发呢,例如,我电脑Ping IPV6地址 fe80::e154:0:254:18ad,但是我抓包发现,我实际达到路由器时这个地址会变成ff02::1:ff14:18ad 的一个节点地址,如何让路由器把这个节点地址给解析出来,然后转发到目标地址去呢?还请大神帮忙看下,我现在遇见和楼主一模一样的问题,也不知道楼主什么怎么解决的

陈其旦 发表于 2019-8-27 09:59:49

aozima 发表于 2018-12-10 11:17
要有路由器的,我贴几个包给楼主分析一下。

要买路由的话,推荐这个,支持,IPV6,支持抓包,还支持抓包WI ...

大神,能否加您为好友,早上花钱刚注册的账号,就为能和说上一句哈,回个帖子{:cry:}

aozima 发表于 2019-8-27 10:15:25

有问题回贴就可以了。

你先学会抓下其它的数据包,如v4,把工具摸熟了再研究ipv6.

陈其旦 发表于 2019-8-27 10:59:08

aozima 发表于 2019-8-27 10:15
有问题回贴就可以了。

你先学会抓下其它的数据包,如v4,把工具摸熟了再研究ipv6. ...

这个抓包软件我用起来问题应该不大,实验板和电脑都是插在这个路由器的LAN口下图片是我Ping设备抓的IPV6的包,IPV4肯定是没问题能正常通讯,出现的问题和楼主是一样,然后看见大神你说推荐这个路由器,我也买了一个,就是不知道怎么配置这个路由器。因为是新人要一个小时才能回帖一次,晕倒。也不能私发消息。我不知道楼主当时怎么解决的,也是刚刚接触IPV6的东西,折腾毫无头绪,希望大神帮看下,这个路由器有关IPV6这边的配置,要怎么设置,才可以转发我这个节点地址到我的设备呢。   我的实验板一开机也会像楼主一样发三条FF02::02指令到路由器,然后就没动静了,就等收包。

aozima 发表于 2019-8-27 11:05:58

配置这个路由请用 winbox 这个软件比较方便
你先会抓 v4 的包,那v6的包也就来了,你不设过滤器就行了。

抓包工具在 tools -> packet sniffer

filter里面设置你要抓的硬件端口以及过滤条件。
stream里面设置你电脑的V4IP,他就会把抓到的结果转发到你电脑。

陈其旦 发表于 2019-8-27 11:33:23

aozima 发表于 2019-8-27 11:05
配置这个路由请用 winbox 这个软件比较方便
你先会抓 v4 的包,那v6的包也就来了,你不设过滤器就行了。



我不是想知道这个wireshark 抓包软件怎么用,而是想请教您,我们这个路由器,里面参数怎么配置,不管用winbox还是网页端,我是不清楚该配置哪些内容,才能转发电脑发出去的组播地址到我的设备上去。大神路由器关于IPV6的配置参数,您这边可以讲解下嘛

aozima 发表于 2019-8-27 11:37:41

不清楚该配置哪些内容,才能转发电脑发出去的组播地址到我的设备上去
都在LAN口上,路由器只是充当交换机功能,都会转发组播包到设备上面去。
因此,无需配置。你也可以不用这个路由器,而是随便找个无需配置的交换机来,都可以的。
甚至,你可以把设备和电脑直接连接。

陈其旦 发表于 2019-8-27 12:45:32

aozima 发表于 2019-8-27 11:37
都在LAN口上,路由器只是充当交换机功能,都会转发组播包到设备上面去。
因此,无需配置。你也可以不用 ...

设备的IP地址是fe80::280:e1ff:fe00:0,我电脑在CMD窗口上Ping的也是这个地址,但是实际传到我设备的地址却变成了ff02::1:ff00:0,我设备也接收到ff02::1:ff00:0这个地址,那不是不对了嘛,因为我需要的是fe80::280:e1ff:fe00:0这个设备地址,那是不是我协议栈里面要哪里做修改,把这个地址给解析回来?

陈其旦 发表于 2019-8-27 13:36:19

楼主您这个问题是怎么解决的,如果您看见了,还麻烦请详细说下,万分感谢

陈其旦 发表于 2019-9-6 09:58:16

aozima 发表于 2018-12-10 11:17
要有路由器的,我贴几个包给楼主分析一下。

要买路由的话,推荐这个,支持,IPV6,支持抓包,还支持抓包WI ...

大神,我这边请教下,我通过这个路由器,来Ping我的设备,ipv6的地址是可以Ping通的,他们两者之间是会建立邻居公告连接,但是我电脑就始终与我的设备建立不了邻居连接,就Ping不通我的设备了,这种情况您有遇见嘛

陈其旦 发表于 2019-9-16 10:59:47

aozima 发表于 2019-8-27 11:37
都在LAN口上,路由器只是充当交换机功能,都会转发组播包到设备上面去。
因此,无需配置。你也可以不用 ...

大神您好,我现在情况是,IPV6 可以Ping通,UDP通讯也可以,但是我设备还需使用TCP通讯,原来是IPV4的绑定连接,我是作为客户端的,现在耀用IPV6我不知道TCP连接函数都需要改哪些东西,我这边一直没调试成功,能给点经验嘛, 我用的是NETCONN接口

陈其旦 发表于 2019-9-18 08:23:57

自己回答自己吧,把IPV6地址丢过去的时候,没有弄正确,导致连接不上TCP服务器{:lol:}

xjmlfm1 发表于 2019-9-18 09:07:55

陈其旦 发表于 2019-9-18 08:23
自己回答自己吧,把IPV6地址丢过去的时候,没有弄正确,导致连接不上TCP服务器 ...

请教一下,lwip支持双网卡吗?

陈其旦 发表于 2019-9-19 08:20:16

xjmlfm1 发表于 2019-9-18 09:07
请教一下,lwip支持双网卡吗?

人家是支持的 ,双网卡设计,网上帖子挺多的,只要注意数据需要从哪个网卡发出就可以了
页: [1]
查看完整版本: 如何知道LWIP中IPV6的IP地址