我正在运行一个HTTP代理服务,并希望根据HTTP数据包的内容(例如HTTP头)将流量路由到不同的第3层TUNs。
我正在使用BSD和Linux来完成这一任务,但在做出路由决策时,这两种方法似乎都不能进行第7层的分类(至少,不需要编写我自己的大量内核补丁)。
那么,是否可以根据Linux或BSD中HTTP数据包的内容做出第三层路由决策呢?
如果没有,是否有任何基于Unix的操作系统或发行版具有此功能?
发布于 2015-12-01 12:04:59
对于BSD,我会研究relayd(8)
-它的原生于OpenBSD,但我相信FreeBSD也有一个端口。它非常强大,可以做很多事情(例如,代理、负载均衡器、应用程序网关),包括您所要求的内容。
阅读手册页,特别是“筛选规则”和“协议”部分:
如果你有问题的话,一定要跳上openbsd 'misc‘邮件列表。社区是快速的,作者经常是可用的。
relayd
与pf
数据包过滤器密切相连,这就是它如何能够联合为第3层和第7层创建规则。
发布于 2015-12-01 14:04:04
我在这里看到的问题是,在看到http请求之前,您必须接受TCP连接。因此,即使系统可以使用应用程序级别的数据,它也不会在需要决定连接到哪里的时候拥有这些数据。
我认为没有太多的选择,只有一个“反向代理”来终止来自客户端的TCP连接,然后建立到源服务器的向前TCP连接。
https://serverfault.com/questions/739939
复制相似问题