【发布时间】:2014-07-07 13:49:08
【问题描述】:
这里是场景-
- 我有两个接口 wlan0 和 test0(logical)。
- 我无法控制 wlan0 设备驱动程序,但我可以完全控制 test0 设备驱动程序 (xD)。
- test0 实际上使用 wlan0(内部)发送了一些数据包
- wlan0 没有关联的 ip 但 test0 有
所以现在当我尝试向连接到 wlan0 的任何设备发送 ping 命令时。数据包到达目标设备,目标设备以 ping 响应进行响应。数据包在 wlan0 接收并推送到 ip 协议。但是 ip 协议会丢弃数据包,因为在尝试在内核内部路由数据包时,存在与 wlan0 关联的 ip 协议。
所以,我天真地更改了ip协议路由决策(不影响正常决策),添加如下子句-
- 如果没有与 cur dev && cur dev != test0 关联的 ip,则转到 3 否则转到 4
- 路由数据包并转到 5
- 设置开发=测试0;然后转到 1
- 丢帧
- 完成
所以,现在我可以发送和接收数据包,但是这个解决方案并不好,因为对于我想要在给定场景中支持的每个协议,我都必须添加子句(例如 ARP)。 所以,我的问题是在这种情况下处理数据包路由的更好方式/方法应该是什么。
【问题讨论】:
标签: c linux-kernel routing network-protocols packet