如何获取内核数据包过滤器排队的数据包?

如何获取内核数据包过滤器排队的数据包?

我制作了简单的 HTTP 代理,它接受来自固定端口上的客户端的连接;代理为每个传入连接进行分叉,分叉的进程处理流向 Internet 和来自 Internet 的数据包流;实现了一个简单的QOS,数据包根据优先级(最小、中、最大)存储在三个不同的队列中,然后按优先级顺序发送。

到目前为止一切顺利,但我的代理并不完全在它应该在的地方:代理在我的笔记本电脑上,而应该连接到代理的客户端只是我的笔记本电脑:所以代理正在工作,但这不是一个真实案例(我不想在本地计算机上使用代理,我希望它在它的“外部”)。

现在测试阶段已经结束,我想将我的代理迁移到外部实体上,(我猜)它应该是:例如,我的 Raspberry Pi 2在告诉我迁移这个问题之前,请先听听我的问题。我阅读了 Raspberry Stack Exchange 中的问题,它们都是关于传感器、如何将 Pi 连接到显示器或有关蓝牙的问题。

我的问题是关于底层操作系统 Raspbian 中的库,Raspbian 是一个经过优化的 Debian 衍生操作系统,所以我认为这个 Stack Exchange 是合适的地方。

我尝试了第一种方法libnetfilter_queue(总是在我的笔记本电脑上使用代理)并使用标志iptables,,NFQUEUE我有我的数据包队列(将它们复制到我的队列中,DROP并在时间到时再次发送它们)原始套接字):但我的 RPi 可能是多接口的(它可能最多插入四个 Wi-Fi 适配器,因为它是一个接入点,加上连接到我的调制解调器的以太网电缆),我的主管说libnetfilter_queue不适合我的目的,因为它不能处理多个接口,并且很难选择使用哪个接口来发送数据包。

总之:我的笔记本电脑上有一个代理,我想将其迁移到我的 RPi 中(因此,除了作为接入点之外,它还应该提供 QOS),但我不知道如何重定向数据包我的代理的一个wlan0接口(或全部四个),旨在侦听传递给程序的端口main

libnetfilter_queue(显然)不是一个选项,那么我可以使用什么库/API?

这是我论文的一部分,所以我更喜欢使用库和/或 API 来与我的代码集成,而不是使用现有的程序。

感谢您的帮助。

相关内容