2012-02-14 32 views
1

我想知道「現實」是如何考慮爲網頁過濾的目的實現攔截代理(具有緩存支持)。我也想支持IPv6,客戶端認證和緩存。攔截http代理 - 與普通代理相比的缺點

閱讀中的缺點,從魷魚維基http://wiki.squid-cache.org/SquidFaq/InterceptionProxy實現攔截代理列表中,它提到了一些東西使用它(我想澄清)時要考慮的缺點:

  1. 需要使用IPv4和NAT - 代理攔截不支持IPv6,爲什麼?
  2. 它導致path-MTU(PMTUD)可能失敗 - 爲什麼?
  3. 代理身份驗證不起作用 - 客戶端認爲它直接與原始服務器通話,在這種情況下有辦法執行身份驗證嗎?
  4. 攔截緩存僅支持HTTP協議,不支持gopher,SSL或FTP。您無法爲HTTP以外的其他協議的代理服務器設置重定向規則,因爲它不知道如何處理它 - 這看起來很合理,因爲在這種情況下將流量重定向到代理的方式是通過防火牆更改從始發服務器到代理自己的地址(目標NAT)的數據包的目標地址。在這種情況下,如果我想攔截除了http之外的其他協議,將知道連接打算去哪裏,因此我可以將它轉發到該目的地?

回答

1
  1. 可能會以多種方式攔截流量。它不一定需要使用NAT(IPv6不支持)。例如,透明的攔截肯定不會使用NAT(透明的意思是代理不會使用自己的地址生成請求,而是使用客戶端地址欺騙IP地址)。

  2. PMTUD用於檢測客戶端和服務器之間路徑中可用的最大MTU大小,反之亦然,它有助於避免客戶端和服務器之間路徑上的IP分組碎片。當您在中間使用代理服務器時,即使檢測到MTU,也不一定與從客戶端到代理服務器以及從代理服務器到服務器的相同。但是,這並不總是相關的,它取決於服務的流量以及代理的行爲方式。

  3. 如果代理以客戶端名義進行身份驗證,它需要知道身份驗證方法,並且可能需要客戶端中存在一些cookie。可以這麼想......如果代理可以代表您對受限資源的訪問進行身份驗證,則意味着任何人都可以代表您這樣做,而良好的身份驗證旨在保護您免受這種可能性的侵害。

  4. 我想這是來自Squid人的一個非常古老的帖子,但該技術存在重定向任何你想要的特定服務器。一個簡單的方法是將服務器作爲網絡的默認網關,然後所有數據包都會通過它,並且可以將您喜歡的數據包重定向到您的應用程序(或其他服務器)。並且您不僅限於HTTP,但您僅限於應用程序協議的工作方式。

+0

感謝您提示重播EdwardH。關於第4點,爲了將數據包重定向到應用程序以執行Web(或其他協議)過濾,您會建議採用什麼方法?我特別想爲此採用Windows方法。它必須是一般的東西,以便我可以看到所有的應用程序協議流量。 – Ghita 2012-02-14 12:54:26

+1

我有使用Linux套接字進行編程的經驗,您可以將流量重定向到應用程序,即使目標地址不是您的應用程序之一。如果你打算進入Windows操作系統領域,這將是一個我無法建議的挑戰。我可以在這裏添加的唯一一點是有一個協商協議用於支持路由器或智能交換機與普通服務器之間的重定向,它被稱爲WCCP,它可以使用支持它的外部路由器/交換機,在您的服務器中添加支持並使用它。但它有幾個限制。 – EdwardH 2012-02-14 13:13:51

+0

@EdwaardH您使用套接字重定向流量?所以,你把通過FORWARD鏈進入的流量(例如iptables)作爲一個字節流轉發到你的應用程序?基本上你的應用程序在這種情況下是在協議級別運行的 - 它看到的是構成http或ftp協議的字節流然後使用原始套接字?如果你知道任何開源或參考,即使對於Linux請讓我知道。 – Ghita 2012-02-14 13:35:43