免费注册 查看新帖 |

Chinaunix

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

[网络子系统] NF_INET_POST_ROUTING处如何获取目的mac [复制链接]

论坛徽章:
1
子鼠
日期:2014-05-05 10:36:02
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-05-13 10:14 |只看该作者 |倒序浏览
本帖最后由 泽畔无材 于 2014-05-13 15:58 编辑

在玩netfilter时遇到的一个问题,我本机是一个网关, 我的hook点在NF_INET_POST_ROUTING,而dnat是在NF_IP_PRE_ROUTING就处理了的。
在我的hook里检查发往内网的包,发现dst ip的确已经被改正了,但是mac仍然是网关的mac,想问下数据包的mac是何时被改正为内网机子的mac呢?在这个hook里能否获取到真正的目标的mac

论坛徽章:
0
2 [报告]
发表于 2014-05-13 13:06 |只看该作者
mac_header = skb->mac_header.........

就会这点..

论坛徽章:
1
子鼠
日期:2014-05-05 10:36:02
3 [报告]
发表于 2014-05-13 13:53 |只看该作者
回复 2# potato916305
直接这么看已经在帖中说过了,看到的是网关的mac,并不是最后真正的目标PC的mac。
在NF_INET_POST_ROUTING处貌似还没有将正确的mac拷到skb里。


   

论坛徽章:
0
4 [报告]
发表于 2014-05-13 15:15 |只看该作者
在网关做路由转发的时候才会由网关加入你要的目的MAC地址吧···

论坛徽章:
1
子鼠
日期:2014-05-05 10:36:02
5 [报告]
发表于 2014-05-13 15:57 |只看该作者
回复 4# szlzzyli
对的,我的机子就是网关,可能帖子里没说清楚。

   

论坛徽章:
1
子鼠
日期:2014-05-05 10:36:02
6 [报告]
发表于 2014-05-20 17:16 |只看该作者
今天抽空查了下,使用neigh_lookup查找arp表就可以获取到ip对应的mac了~

论坛徽章:
0
7 [报告]
发表于 2014-05-20 22:57 |只看该作者
DNAT后,在NF_INET_POST_ROUTING这个hook点上是不能得到内网的MAC地址的。

int ip_output(struct sk_buff *skb)
{
        return NF_HOOK_COND(PF_INET, NF_INET_POST_ROUTING, skb, NULL, dev,
                           ip_finish_output,
                            !(IPCB(skb)->flags & IPSKB_REROUTED));
}

报文目的mac在被换成内网mac是在ip_finish_output函数完成的,该函数是在你hook函数被执行后执行的。

根据路由后得到的下一跳ip地址,从arp表里查到相应的MAC地址,替换skb的目的MAC发送出去。

论坛徽章:
0
8 [报告]
发表于 2014-12-30 20:20 |只看该作者
您好,请问您的问题解决了吗?我与到了一个和您相似的问题,我想获取本机发出去的ARP包的n原MAC地址,可是也不成功,不知道怎么办呢?可以麻烦您帮我看一下吗?谢谢了!我的求助帖地址: http://bbs.chinaunix.net/thread-4165048-1-1.html   谢谢您了

论坛徽章:
1
IT运维版块每日发帖之星
日期:2016-07-14 06:20:00
9 [报告]
发表于 2015-07-03 17:09 |只看该作者
在IP发送流程后会调用hh_output,通过邻居子系统获取

论坛徽章:
0
10 [报告]
发表于 2015-07-05 22:25 |只看该作者
bingo回复 6# 泽畔无材


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP