Related Posts Plugin for WordPress, Blogger...

1、前言

Squid Web Proxy Cache 為目前最多人使用的 Proxy Server,本篇實作為利用 Squid 來架設 Web Proxy Server,關於 Web Proxy 如何運作可參考站內文章 WebProxy 伺服器的原理與運作流程



Squid 支援功能如下:
  • Proxying and caching of HTTP, FTP, and other URLs
  • Proxying for SSL
  • Cache hierarchies
  • ICP, HTCP, CARP, Cache Digests
  • Transparent caching
  • WCCP (Squid v2.3 and above)
  • Extensive access controls
  • HTTP server acceleration
  • SNMP 
  • Caching of DNS lookups

文章目錄

1、前言
2、實作環境
3、安裝及設定
          步驟1.安裝及設定 squid 套件
          步驟2.修改 squid 設定檔
          步驟3.修改 NAT 的 RDR 設定
4、參考
5、Me FAQ
          Q1.無法使用 Transparent Proxy 功能?

2、實作環境

  • FreeBSD 6.x-RELEASE
  • Squid-2.x

3、安裝及設定

為何要使用 Transparent Proxy? 當您設定好 Squid 但內部 User 端有一、二百台電腦難道需要一台一台去設定 User 端瀏覽器使用 Web Proxy? 此時,便可透過 Transparent Proxy 機制來達成不須設定 User 端也能讓 User 端使用 Web Proxy。

步驟1.安裝及設定 squid 套件

關於 Squid 安裝及設定部份,請參考本站文章 Squid - Web Proxy Server

步驟2.修改 squid 設定檔

新版本的 Squid (ex. squid-2.6.17) 將 Transparent Proxy 設定簡化了,簡單說就是把一些功能都整合到 http_port 的 option 內了,至於詳細內容您可參考官網 Squid 2.6.STABLE8 release notes
#vi /usr/local/etc/squid/squid.conf  //修改 squid 設定檔
 http_port 3128               //預設值
 http_port 3128 transparent   //修改後,加上 transparent option


舊版本的 Squid (ex. squid-2.5.14_2) 其 Transparent Proxy 設定則為修改 Squid 設定檔並加上如下四行內容
 httpd_accel_host virtual
 httpd_accel_port 80
 httpd_accel_with_proxy on
 httpd_accel_uses_host_header on


步驟3.修改 NAT 的 RDR 設定

再來就是修改 NAT 中 RDR (Redirect) 設定了,簡單說 LAN User 要對外存取 HTTP (80) 時就導 (Redirect) 到 Squid 主機的 Port 3128 出去。以下列出在 FreeBSD 中常用的三種 NAT 其 RDR Rule (請自行依網路環境作調整),而此次實作的網路環境如下:
  • Squid IP Address: 192.168.1.10
  • Squid 網卡代號: em0
  • Lan User 網段: 192.168.1.0/24

IPFIREWALL (IPFW)
 /sbin/ipfw add 50000 fwd 192.168.1.10,3128 tcp from 192.168.1.0/24 to any 80
IPFILTER (IPF)
 rdr em0 0.0.0.0/0 port 80 -> 192.168.1.10/32 port 3128 tcp/udp
Packet Filter (PF)
 int_if="em0"
 internal_net="192.168.1.0/24"
 rdr on $int_if proto tcp from $internal_net to any port 80 -> $int_if port 3128


4、參考


5、Me FAQ

Q1.無法使用 Transparent Proxy 功能?

Error Meaage:
修改好 Squid 設定檔後執行檢查設定檔的指令後顯示說找不到定義的 Transparent Proxy 名稱。
#/usr/local/sbin/squid -k parse
 2007/12/18 14:43:06| parseConfigFile: line 3170 unrecognized: 'httpd_accel_host virtual'
 2007/12/18 14:43:06| parseConfigFile: line 3171 unrecognized: 'httpd_accel_port 80'
 2007/12/18 14:43:06| parseConfigFile: line 3172 unrecognized: 'httpd_accel_with_proxy on'
 2007/12/18 14:43:06| parseConfigFile: line 3173 unrecognized: 'httpd_accel_uses_host_header on  '

Ans:
新版本的 Squid (ex. squid-2.6.17) 將 Transparent Proxy 設定簡化了,簡單說就是把一些功能都整合到 http_port 的 option 內了,至於詳細內容您可參考官網 Squid 2.6.STABLE8 release notes
#vi /usr/local/etc/squid/squid.conf    //修改 squid 設定檔
 http_port 3128               //預設值
 http_port 3128 transparent   //修改後,加上 transparent option
文章標籤: