Linux
基於 HTTP 數據包內容的第 3 層路由
我正在執行一個HTTP代理服務,並希望根據HTTP數據包的****內容(例如HTTP 標頭)將流量路由到各種 第 3 層 TUN 。
我正在使用BSD和Linux來執行此操作,但在做出路由決策時,它們中的任何一個似乎都不能進行第 7 層分類(至少,在沒有編寫我自己的大量核心更新檔的情況下)。
那麼,是否有可能在Linux或BSD中根據****HTTP數據包的內容做出第 3 層 路由決策?
如果沒有,是否有任何基於Unix的作業系統或發行版具有此功能?
對於 BSD,我會研究
relayd(8)
- 它原生於 OpenBSD,但我相信 FreeBSD 也有一個埠。它非常強大,可以做很多事情(例如,代理、負載平衡器、應用程序網關),包括您所要求的。通讀手冊頁,特別是“過濾規則”和“協議”部分:
- http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man8/relayd.8
- http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man5/relayd.conf.5
如果您有問題,請務必加入 openbsd ‘misc’ 郵件列表。社區很快,作者經常可用。
relayd
與數據包過濾器密切相關pf
,這就是它能夠為第 3 層和第 7 層共同創建規則的方式