Linux
通過特定介面路由應用程序流量
這裡的第一個問題,所以請放輕鬆:
我有一個帶有兩個公共介面的 debian linux 5.0 伺服器。我想通過一個介面路由來自應用程序的一個實例的出站流量,並通過第二個介面路由第二個實例。有一些挑戰:
- 應用程序的兩個實例使用相同的協議
- 應用程序的兩個實例都可以訪問整個網際網路(不能基於目標網路進行路由)
- 我無法更改應用程序的程式碼
- 我認為負載平衡所有流量的典型方法不會很好地工作,因為在出站流量中訪問的目標伺服器相對較少,並且所有流量確實需要在這些相對較少的伺服器上相當均勻地分佈。
我可能會在盒子上執行兩個虛擬化伺服器並將它們各自綁定到不同的介面,但我正在尋找一個更簡單的解決方案,也許使用 iproute 或 iptables?
對我有什麼想法嗎?在此先感謝-我很樂意回答任何問題。
您是否查看過
owner
iptables 中的模組,可能與源 NAT 規則結合使用?這使您可以
OUTPUT
根據 UID、GID、PID、SID 和命令名稱設置鏈規則。
linux 支持將應用程序綁定到特定 IP(例如 Apache 使用)。如果您的應用程序不支持這一點,那麼您就不走運了。
我不知道任何 linux 核心模組(因為這是您需要的)將特定應用程序綁定到介面,即使它嘗試綁定到 *. 使用虛擬機是一種可能。
如果沒有應用程序支持,我能想到的最接近您的要求的是乙太網介面綁定(http://www.cyberciti.biz/howto/question/static/linux-ethernet-bonding-driver-howto.php) . 但是,您只會在具有相同 ip 的多個介面上執行應用程序的一個實例。