跳轉到內容

LPI Linux 認證/實施代理伺服器

來自華夏公益教科書,為開放世界提供開放書籍

詳細目標 (208.3)

[編輯 | 編輯原始碼]

(LPIC-2 版本 4.5)


權重 2


描述: 候選人應該能夠安裝和配置代理伺服器,包括訪問策略、身份驗證和資源使用。


關鍵知識領域

  • Squid 3.x 配置檔案、術語和實用程式
  • 訪問限制方法
  • 客戶端使用者身份驗證方法
  • Squid 配置檔案中 ACL 的佈局和內容


術語和實用程式

  • squid.conf
  • acl
  • http_access


  • 實施代理伺服器

我們將使用 squid web 代理伺服器版本 2.4 和 Linux 核心版本 2.4。

代理可以透過兩種方式進行:正常代理透明代理

  • 正常代理中,客戶端在他的網頁瀏覽軟體中指定代理的主機名和埠號。然後瀏覽器向代理發出請求,代理將這些請求轉發到原始伺服器。
  • 透明代理中,...

如果使用透明代理:您想強制網路上的客戶端使用代理,無論他們是否願意。您想讓客戶端使用代理,但不想讓他們知道他們正在被代理。您想讓客戶端被代理,但不想費心更新數百或數千個網頁瀏覽器的設定。

有兩種型別的透明代理

  • Squid 在閘道器上
  • Squid 在與閘道器不同的盒子上


閘道器盒上的 Squid

[編輯 | 編輯原始碼]

設定 squid 用於普通代理非常簡單:在安裝 squid 後,編輯預設配置檔案 squid.conf 找到以下指令,取消註釋並將其更改為適當的值

  • httpd_accel_host virtual
  • httpd_accel_port 80
  • httpd_accel_with_proxy on
  • httpd_accel_uses_host_header on

接下來,檢視 cache_effective_user 和 cache_effective_group 指令,並使用專用使用者和組(即 squid/squid)設定它們

最後,檢視 http_access 指令。預設值通常為 ``http_access deny all。這將阻止任何人訪問 squid。目前,您可以將其更改為 ``http_access allow all,但一旦它開始工作,您可能需要閱讀 ACL(訪問控制列表)的說明,並設定快取,以便只有您本地網路上的人員(或任何其他人員)可以訪問快取。


squid 中的 ACL 將使您能夠限制對代理的訪問。
ACL 規則的一般格式為
acl aclname acltype string1 ...
然後可以在 http_access 指令中使用 ACL 規則

ACL 型別為

  • Src:acl aclname src ip-address/netmask
acl aclname src 172.16.1.0/24
  • Dst:acl aclname dst ip-address/netmask
acl aclname dst 172.16.1.0/24
  • Time:acl aclname time [day-abbreviations: M,T,W,H,F,A,S] [h1:m1-h2:m2]
acl ACLTIME time M 9:00-17:00
  • Port:acl aclname port port-no
acl acceleratedport port 80
  • Proto:acl aclname proto protocol
acl aclname proto HTTP FTP
  • Method:acl aclname method method-type
acl aclname method GET POST
  • Maxconn:acl aclname maxconn integer
acl twoconn maxconn 5


接下來,使用 squid -z 初始化快取目錄(如果這不是 squid 的新安裝,則應跳過此步驟)。接下來,透過 /etc/init.d/squid 指令碼啟動 squid,您應該能夠將網頁瀏覽器的代理設定設定為盒子的 IP 和埠 3128(除非您更改了預設埠號),並將 squid 作為普通代理訪問。實施代理伺服器 透明代理可以透過兩種不同的方式設定:在路由器上或在另一個(遠端)主機上 在路由器上進行透明代理將涉及在“正常”情況下設定 squid,並將配置資料包過濾子系統以將客戶端的連線重定向到 squid
所需的核心網路選項為

  • 在“常規設定”下
網路支援
Sysctl 支援
  • 在“網路選項”下
網路資料包過濾
TCP/IP 網路
  • 在“網路選項”->“IP:Netfilter 配置”下
連線跟蹤
IP 表支援
完整 NAT
REDIRECT 目標支援
  • 在“檔案系統”下
/proc 檔案系統支援

您必須在網路選項下對 快速切換 說不!


一旦您啟動了新的核心,請確保您啟用了 IP 轉發。接下來,要配置 iptables 以啟用透明代理,您只需

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 3128

透明代理到遠端盒子

[編輯 | 編輯原始碼]

假設我們有兩個名為 squid-box 和 iptables-box 的盒子,它們都在 local-network 網路上。首先,在 squid 將在其上執行的機器 squid-box 上,您不需要 iptables 或任何特殊的核心選項,只需要 squid。但是,您將需要上述“http_accel”選項。現在,在 iptables 將在其上執行的機器 iptables-box 上,您需要按上述配置核心,但您不需要 REDIRECT 目標支援。您將需要 2 條 iptables 規則
iptables -t nat -A PREROUTING -i eth0 -s ! squid-box -p tcp --dport 80 -j DNAT --to squid-box:3128
iptables -t nat -A POSTROUTING -o eth0 -s local-network -d squid-box -j SNAT --to iptables-box
第一個將資料包從 iptables-box 傳送到 squid-box。第二個確保回覆透過 iptables-box 傳送回客戶端,而不是直接傳送給客戶端。這非常重要,因為否則 squid 永遠不會收到來自目標 Web 伺服器的答案(因此,無法進行快取!)。


關鍵詞、檔案和實用程式

  • squid.conf
  • Acl
  • http_access
  • 練習


華夏公益教科書