Skip to content

TProxy ​

TProxy(Transparent Proxy,透明代理)是Linux內核中的一個模組,用於透明地代理TCP和UDP流量。透明代理的主要特點是,客戶端並不知道其流量正在透過代理伺服器,這使得它在某些應用場景中非常有用,如負載均衡、安全監控和網路最佳化。以下是對TProxy的詳細介紹:

TProxy 的特點 ​

  • 透明性:客戶端無需進行任何配置或意識到代理的存在,代理伺服器可以截獲並處理流量。
  • TCP/UDP支援:TProxy同時支援TCP和UDP流量,可以代理各種型別的網路通訊。
  • 靈活性:與iptables結合使用,可以靈活地定義流量重定向和處理規則。
  • 無中斷:由於TProxy在網路層工作,流量的代理過程對客戶端是無縫的,不會中斷通訊。

工作原理 ​

TProxy工作在Linux內核的網路層,透過修改IP包的目的地址,將流量透明地重定向到代理伺服器進行處理。具體步驟如下:

  • 捕獲流量:使用iptables將流量捕獲並重定向到TProxy模組。
  • 代理處理:TProxy接收到重定向的流量,對其進行處理後轉發到目標伺服器。
  • 返回響應:目標伺服器的響應流量透過TProxy返回給客戶端,客戶端認為其直接與目標伺服器通訊。

配置步驟 ​

以下是配置TProxy以透明代理TCP和UDP流量的示例步驟:

前提條件 ​

  • 安裝並配置好Linux作業系統。
  • 確保內核版本支援TProxy(Linux內核2.6.28及以上)。
  • 安裝iptables和iproute2工具。

內核模組載入 ​

bash
modprobe xt_TPROXY
modprobe nf_tproxy_core

配置iptables ​

  • 建立mangle表規則: 捕獲並重定向流量到本地的代理埠。

    bash
    iptables -t mangle -N DIVERT
    iptables -t mangle -A PREROUTING -p tcp -m socket -j DIVERT
    iptables -t mangle -A PREROUTING -p udp -m socket -j DIVERT
    iptables -t mangle -A DIVERT -j MARK --set-mark 1
    iptables -t mangle -A DIVERT -j ACCEPT
  • 新增PREROUTING規則: 將流量重定向到TProxy。

    bash
    iptables -t mangle -A PREROUTING -p tcp -j TPROXY --tproxy-mark 0x1/0x1 --on-port 12345
    iptables -t mangle -A PREROUTING -p udp -j TPROXY --tproxy-mark 0x1/0x1 --on-port 12345

配置ip rule和ip route ​

  • 設定ip rule: 為標記流量設定路由規則。

    bash
    ip rule add fwmark 1 lookup 100
  • 設定路由表: 配置路由表100,將流量重定向到本地。

    bash
    ip route add local 0.0.0.0/0 dev lo table 100

示例:使用TProxy代理HTTP流量 ​

假設你有一個執行在本地12345埠的HTTP代理伺服器,可以使用以下配置來透明代理HTTP流量:

配置iptables ​

bash
iptables -t mangle -A PREROUTING -p tcp --dport 80 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 12345
iptables -t mangle -A PREROUTING -p tcp --dport 443 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 12345

應用場景 ​

  • 負載均衡:TProxy可以將流量透明地分發到多個伺服器,實現負載均衡。
  • 安全監控:透明代理可以監控和過濾網路流量,檢測和阻止惡意行為。
  • 網路最佳化:透過代理伺服器快取和最佳化流量,提升網路效能。
  • 訪問控制:基於流量特徵進行訪問控制和許可權管理。

優缺點 ​

優點:

  • 對客戶端透明,無需修改客戶端配置。
  • 支援TCP和UDP流量,適用範圍廣。
  • 與iptables結合,規則配置靈活。

缺點:

  • 需要較高的網路配置和維護技巧。
  • 增加了代理伺服器的負載,對硬體要求較高。

總結 ​

TProxy是一種強大的透明代理工具,適用於需要透明代理和處理網路流量的各種場景。透過與iptables和iproute2結合使用,TProxy可以靈活地捕獲和重定向TCP和UDP流量,實現負載均衡、安全監控和網路最佳化等功能。儘管配置複雜,但其強大的功能和靈活性使其成為網路管理員和開發者的重要工具。