gpt4 book ai didi

c - 处理 Linux 内核数据包路由的更好方法

转载 作者:行者123 更新时间:2023-11-30 17:33:30 26 4
gpt4 key购买 nike

这是场景 -

  1. 我有两个接口(interface) wlan0 和 test0(逻辑)。
  2. 我无法控制 wlan0 设备驱动程序,但我可以完全控制 test0 设备驱动程序 (xD)。
  3. test0 实际上使用 wlan0(内部)发送一些数据包
  4. wlan0 没有关联的 IP,但 test0 有

现在,当我尝试向连接到 wlan0 的任何设备发送 ping 命令时。数据包到达目标设备,目标设备以 ping 响应进行响应。数据包在 wlan0 处接收并推送到 ip 协议(protocol)。但是 ip 协议(protocol)会丢弃该数据包,因为在尝试在内核内部路由数据包时存在与 wlan0 关联的 ip 协议(protocol)。

因此,我天真地通过添加如下子句来更改 ip 协议(protocol)路由决策(不影响正常决策) -

  1. 如果没有与 cur dev && cur dev != test0 关联的 IP,则转到 3,否则转到 4
  2. 路由数据包并转到 5
  3. 设置 dev = test0;并转到 1
  4. 放下框架
  5. 完成

所以,现在我可以发送和接收数据包,但这个解决方案并不好,因为对于给定场景中我想要支持的每个协议(protocol),我必须添加该子句(例如 ARP)。所以,我的问题是在这种情况下处理数据包路由的更好方法/方法应该是什么。

最佳答案

您可以桥接这两个接口(interface)并为桥接接口(interface)分配一个 IP 地址。因此连接到 wifi 的机器应该可以通过接口(interface) test0 访问。

关于c - 处理 Linux 内核数据包路由的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23740498/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com