免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5412 | 回复: 6
打印 上一主题 下一主题

ipv4 路由,ipv6桥接时arp的问题,求大神指教 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-04-23 19:25 |只看该作者 |倒序浏览
hi,最近做开发遇到 了一个问题,我们在做一款路由器产品,要支持ipv4和ipv6,对于ipv4我们就是用nat和route,而对于ipv6,我们想做成一个桥 ,linux的桥负责转发etherype为ipv6的所有报文 ,不会交到上层的ipv6协议栈当中。
我们有两个网卡,一个是wan口usb0,一个是lan口eth0和wlan0,我们把usb0, eth0和wlan0都放在linux下的一个桥br0下面,然后用ebtable,在ebtables的broute中指定所有非ipv6的报文都必须交给linux协议栈处理,桥 只处理ipv6的报方,规则 是ebtables -t broute -A BROUTING -p ! ipv6 -j DROP ,然后我们发现了一个问题 ,这样做了以后,对于lan侧发住br0的报文由于在桥接的时候就直接 返加到协议栈里了,这样skb->dev还是原始设备(eth0和wlan0),由于 eth0和wlan0本身是没有ip的,这样对于收到的lan侧的arp报文就不会产生回应了(我把eth0上收到的包都dump出来了),于是lan侧就不通了。我把br0的地址干掉,然后给eth0配置上一个192.168.1.1,发现eth0上的报文 就没问题了,但是wlan0上的有问题了。

所以我觉得根本原因是桥接处理时由于对非ipv6的报文就直接丢到上层去了,并没有改变相应的skb->dev导致了不能正确deliver,不知道大家有没有什么好的解决方案?非常感谢大家。
我最初是想直接在__netif_receive_skb当中直接硬编码指定skb->dev,但又觉得风险太大了,大家有没有什么好的建议,非常感谢。。

论坛徽章:
0
2 [报告]
发表于 2014-04-24 09:38 |只看该作者
顶一下吧,求指教

论坛徽章:
0
3 [报告]
发表于 2014-04-24 16:21 |只看该作者
在来顶一下,求帅哥哥,美女们指导一下呀,跪求呀

论坛徽章:
1
技术图书徽章
日期:2014-04-28 13:16:45
4 [报告]
发表于 2014-04-26 11:22 |只看该作者
LZ的问题听下来就是  lan 和 wlan 口放在一个bridge, 对于ipv6 的packet 完全桥接, 对于ipv4 交给协议栈处理, 所以连同ARP packet 也一同交给协议栈了, 协议栈因为这个ARP自己没有兴趣, 即这个ARP和自己无关,所以丢弃掉了, 造成真正感兴趣的destination 无法接收到这个ARP, 是这样吗?

你可以这样做: 对于ARP(ethertype 0x0806)复制两份, 一份交给协议栈,一份和IPv6 一样的处理方式, 即桥接.

论坛徽章:
0
5 [报告]
发表于 2014-04-26 15:49 |只看该作者
楼上的一语惊醒梦中人啊,你说得太对了,让arp报文直接交给桥处理就完了,呵呵,没我想得那么复杂,牛x呀

论坛徽章:
0
6 [报告]
发表于 2014-05-08 14:13 |只看该作者
路过了~~~~~~~··

论坛徽章:
0
7 [报告]
发表于 2014-05-16 13:30 |只看该作者
最后还是摒弃了这种 方案,
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP