处理linux内核数据包路由的更好方法

时间:2014-05-19 14:34:57

标签: c linux-kernel routing network-protocols packet

以下是情景 -

  1. 我有两个接口wlan0和test0(逻辑)。
  2. 我无法控制wlan0设备驱动程序,我可以完全控制test0设备驱动程序(xD)。
  3. test0实际上使用wlan0(内部)
  4. 发送一些数据包
  5. wlan0没有关联的ip,但test0有
  6. 所以现在我尝试将ping命令发送到连接到wlan0的任何设备。数据包到达目标设备,目标设备响应ping响应。数据包在wlan0接收并推送到ip协议。但是ip协议丢弃了数据包,因为在尝试将数据包路由到内核时,有与wlan0相关联的ip协议。

    所以,我通过添加如下的子句,天真地改变了ip协议路由决策(不影响正常决策) -

    1. 如果没有与cur dev& amp;相关联的ip cur dev!= test0然后转到3其他转到4
    2. 路由数据包并转到5
    3. set dev = test0;并转到1
    4. 放弃框架
    5. 光洁度
    6. 所以,现在我可以发送和接收数据包,但是这个解决方案并不好,因为对于我想在给定场景中支持的每个协议,我必须添加子句(例如,ARP)。 所以,我的问题是在这种情况下应该采用哪种更好的方法/方法来处理数据包路由。

1 个答案:

答案 0 :(得分:0)

您可以桥接这两个界面&为网桥接口分配单个IP地址。所以连接到wifi的机器应该可以通过接口test0访问。