免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: meijusan123
打印 上一主题 下一主题

[网络子系统] linux 协议栈 IP头 手动封装 [复制链接]

论坛徽章:
0
71 [报告]
发表于 2009-08-27 11:40 |只看该作者
现在 我修改了dst的ip地址,但是,发出的包的dst的mac地址,始终是原先的mac,为什么不是我修改过ip对应的mac地址能,是不是还是和arp包的问题,他压根就没有解析我新修改过的ip和mac的对应关系??
求助!

论坛徽章:
0
72 [报告]
发表于 2009-08-28 17:22 |只看该作者

回复 #71 meijusan123 的帖子

只要当前skb 的dst mac是缺省网关的MAC就对了,包就应该能转发出去.

论坛徽章:
0
73 [报告]
发表于 2009-08-28 17:24 |只看该作者
可以找同一网段的另外一台linux机器,然后打开tcpdump 看看是不是包错误之类的。

论坛徽章:
0
74 [报告]
发表于 2009-08-29 17:54 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
75 [报告]
发表于 2009-08-29 22:16 |只看该作者

回复 #72 wtll 的帖子

ip_finish_output2()中的struct dst_entry 的hh_data值不存在,这样以来,是路由缓冲中的ip和mac对应表不存在,需要重新neigher来arp包来实现来解析目的ip对应的mac地址,但是,事实他没有重新arp来解析,咋办?

论坛徽章:
0
76 [报告]
发表于 2009-08-30 14:58 |只看该作者

回复 #75 meijusan123 的帖子

自己忘skb里填充
      
struct sk_buff *sb = *skb;   
skb_push(sb, sb->data - sb->mac.raw);
            
       memcpy(sb->mac.ethernet->h_dest,mac_addr_dest,ETH_ALEN);
       memcpy(sb->mac.ethernet->h_source,mac_addr_source,ETH_ALEN);

         dev_queue_xmit(sb);

        return NF_STOLEN;

论坛徽章:
0
77 [报告]
发表于 2009-08-30 15:13 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
78 [报告]
发表于 2009-09-02 22:21 |只看该作者
问题基本可以解决:
在次深深感谢“九贱”大哥的帮助,给了我很多的思路。

修改过的或自己重新封装的ip信息,之后是需要重新路由的,让他之后的neighbour和arp的过程去找到相应的mac信息才行。

论坛徽章:
0
79 [报告]
发表于 2009-12-11 00:08 |只看该作者

回复 #1 meijusan123 的帖子

kgdb 跟踪一下

论坛徽章:
0
80 [报告]
发表于 2012-06-19 16:55 |只看该作者
你好:
   我在看你linux协议栈ip头手动封装的帖子,现在你已经做好了这个内核程序吧?我这几天也在做这方面,很苦恼,能不能把你的程序让看看,发给我,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP