基于HTTP数据包内容的第3层路由

我正在运行HTTP代理服务,并希望根据HTTP数据包的内容 (例如HTTP标头 )将stream量路由各种 第3层 TUN

我正在使用BSDLinux来做这件事,但是在做路由决定时(至less不用编写我自己的内核补丁),看起来它们都不能做第7层的分类。

那么,是否有可能根据LinuxBSD中HTTP数据包的内容做出第3层 路由决策

而且,如果没有,任何基于Unix操作系统发行版都有这个能力吗?

对于BSD,我会研究relayd(8) – 它的原生OpenBSD,但我相信FreeBSD也有一个端口。 这是相当强大的,可以做更多的事情(例如,代理,负载平衡器,应用程序网关),包括你问的东西。

通读手册页,特别是“过滤规则”和“协议”部分:

如果你有问题,肯定会跳到openbsd'misc'邮件列表。 社区很快,作者经常可用。


relaydpf数据包filter紧密连接,这就是它如何能够共同创build第3层和第7层的规则

我在这里看到的问题是,你必须接受TCP连接,才能看到http请求。 因此,即使系统可以使用应用程序级别的数据,它也不会在需要确定连接需要去哪里时获得这些数据。

我不认为有太多的select,只能有一个“反向代理”,它终止来自客户端的TCP连接,然后build立到源服务器的前向TCP连接。