内核能够动态确定ip包的发送接口,通过路由信息确定

lzgogogo
(stranger)
03-11-16 18:45
怎么样在内核中按照自己的需要的向外发送一个数据包?

我在Netfilter框架下面写了一段包处理的函数,现在要实现一个功能,是按照自己的要求产生一个数据包并且发送出去.比如说我现在要发送一个数据包,该数据包从192.168.1.154:80发送到192.168.1.155, Seq为3187958690
ACK为 3187958691,SYN ACK置位等等
我得想法是参照一些驱动程序中产skb结构的方法,即先调用dev_alloc_skb(),然后再将其相应的部分进行填充.最后调用dev_queue_xmit()进行发送.碰到了一些问题:第一是怎么样确定使用那一个网络接口进行发送,我找到了函数dev_get_by_name(),但是这个调用需要指定网络接口名(如eth0,eth1).但是事先并不能确定是那一个网络接口,这样的话是不是只能在插入模块的时候进行指定,有没有什么方法动态的确定那一个网络接口?
第二个问题是skb的有关部分怎么样填充?如dst,csum,sk,stamp等等,还是根本就不必管这些部分.
不知道我的想法是否可行,需要注意那些部分?各位在做类似的功能是是怎么做的?有没有现成的例子参考参考
请指教 ,谢谢

文章选项: 打印   将这篇文章放置于备忘录中,待有空时回覆   好友分享   通知版主

dl_dht
(member)
03-11-17 10:18
Re: 怎么样在内核中按照自己的需要的向外发送一个数据包? 新 [re: lzgogogo]

使用 ip_route_output_key 可以确定使用那一个接口进行发送.

文章选项: 打印   将这篇文章放置于备忘录中,待有空时回覆   好友分享   通知版主

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值