我正在使用启用了IP转发的Linux(基于Debian)系统(/ proc / sys / net / ipv4 / ip_forward设置为1) . 我可以使用C原始套接字程序读取传入的数据包,但我想在转发之前修改它们的内容(仅使用BSD套接字) . This link提到我可以使用"iptables REDIRECT rule"将传入的数据包发送到我的程序正在侦听的端口,但是我没有找到有关应该如何完成此操作的任何信息 . 主要是,我想知道:

  • 修改后如何转发数据包 . 收到并修改后,我是否必须从程序手动将它们发送到目的地址?

  • 如果程序没有侦听特定端口(例如,只关注数据包IP头的程序),我应该怎么做 .

如果重要的是接收和转发是在同一个无线接口上完成的 . 我必须将数据包转发到同一WLAN上的设备并从其接收数据包 .